Download data from EOD historical data https://eodhistoricaldata.com/ using Python, Requests and Pandas.
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
eod_historical_data First commit Jun 4, 2017
tests First commit Jun 4, 2017
.gitignore First commit Jun 4, 2017
.travis.yml First commit Jun 4, 2017
LICENSE Initial commit Jun 4, 2017
README.md First commit Jun 4, 2017
setup.cfg First commit Jun 4, 2017
setup.py First commit Jun 4, 2017

README.md

Build Status

Python EOD Historical Data

A library to download data from EOD historical data https://eodhistoricaldata.com/ using:

Installation

Install latest development version

$ pip install git+https://github.com/femtotrader/python-eodhistoricaldata.git

or

$ git clone https://github.com/femtotrader/python-eodhistoricaldata.git
$ python setup.py install

Usage

Environment variable EOD_HISTORICAL_API_KEY should be defined using:

export EOD_HISTORICAL_API_KEY="YOUR_API"

You can download data simply using

In [1]: import pandas as pd
In [2]: pd.set_option("max_rows", 10)
In [3]: from eod_historical_data import get_eod_data
In [4]: df = get_eod_data("AAPL", "US")
In [5]: df
Out[1]:
                Open      High       Low     Close  Adjusted_close  \
Date
2000-01-03    3.7455    4.0179    3.6317    3.9978          3.9978
2000-01-04    3.8661    3.9509    3.6138    3.6607          3.6607
2000-01-05    3.7054    3.9487    3.6786    3.7143          3.7143
2000-01-06    3.7902    3.8214    3.3929    3.3929          3.3929
2000-01-07    3.4464    3.6071    3.4107    3.5536          3.5536
...              ...       ...       ...       ...             ...
2017-05-26  154.0000  154.2400  153.3100  153.6100        153.6100
2017-05-30  153.4200  154.4300  153.3300  153.6700        153.6700
2017-05-31  153.9700  154.1700  152.3800  152.7600        152.7600
2017-06-01  153.1700  153.3300  152.2200  153.1800        153.1800
2017-06-02  153.6000  155.4500  152.8900  155.4500        155.4500

                 Volume
Date
2000-01-03  133949200.0
2000-01-04  128094400.0
2000-01-05  194580400.0
2000-01-06  191993200.0
2000-01-07  115183600.0
...                 ...
2017-05-26   21927600.0
2017-05-30   20126900.0
2017-05-31   24451200.0
2017-06-01   16274200.0
2017-06-02   25163841.0

[4382 rows x 6 columns]

but if you want to avoid too much data consumption, you can use a cache mechanism.

In [1]: import datetime        
In [2]: import requests_cache
In [3]: expire_after = datetime.timedelta(days=1)
In [4]: session = requests_cache.CachedSession(cache_name='cache', backend='sqlite', expire_after=expire_after)
In [5]: df = get_eod_data("AAPL", "US", session=session)

See tests directory for example of other API endpoints.

Credits