An EODHD (EOD Historical Data) provider extension for the
OpenBB Platform. Adds provider="eodhd"
for historical equity/ETF pricing.
All API calls go through the official
EODHD Python library
(eodhd.APIClient), pinned to a GitHub commit — the PyPI release (1.0.32)
predates the SDK's typed errors, request timeouts, and the fundamentals
filter parameter.
| OpenBB command | EODHD endpoint | Notes |
|---|---|---|
obb.equity.price.historical(..., provider="eodhd") |
/api/eod, /api/intraday |
intervals 1d, 1W, 1M, 1m, 5m, 1h |
obb.etf.price.historical(..., provider="eodhd") |
same | same |
obb.crypto.price.historical(..., provider="eodhd") |
same (.CC symbols) |
e.g. BTC-USD, ETH-USD |
obb.currency.price.historical(..., provider="eodhd") |
same (.FOREX symbols) |
e.g. EURUSD, EUR/USD |
obb.equity.fundamental.income(..., provider="eodhd") |
/api/fundamentals → Financials::Income_Statement |
period="annual" or "quarter", limit=N |
obb.equity.fundamental.balance(..., provider="eodhd") |
Financials::Balance_Sheet |
same |
obb.equity.fundamental.cash(..., provider="eodhd") |
Financials::Cash_Flow |
same |
obb.equity.fundamental.dividends(..., provider="eodhd") |
/api/div |
ex-date, amount, declaration/record/payment dates |
obb.equity.fundamental.historical_splits(..., provider="eodhd") |
/api/splits |
numerator/denominator + "n:1" ratio |
- Intervals
1d/1W/1Mhit the end-of-day endpoint and carry an extraadjusted_closefield (split/dividend adjusted). - Intervals
1m/5m/1hhit the intraday endpoint; bars are UTC and tz-aware. EODHD limits intraday history per request (roughly 120 days for1m, longer for5m/1h) — narrow the date window for fine intervals. - Crypto uses EODHD's
BASE-QUOTE.CCsymbols (bareBTCUSD/BTC/USDare normalized toBTC-USD.CC); forex usesEURUSD.FOREX(EUR/USDnormalized).
- Three statements: income, balance sheet, cash flow.
periodselects EODHD'syearlyvsquarterly;limitcaps the number of most-recent periods. - Well-known line items map to OpenBB's conventional field names (
revenue,net_income,total_assets,free_cash_flow, …); every other EODHD field is passed through snake_cased, so nothing is dropped. - Fundamentals require a paid EODHD plan for most tickers (the
demotoken coversAAPL.US).
EODHD symbols are SYMBOL.EXCHANGE (e.g. AAPL.US, VOD.LSE). Pass a bare
symbol and it is qualified with the exchange parameter (default US), or pass
a fully-qualified symbol to override:
obb.equity.price.historical("AAPL", provider="eodhd") # -> AAPL.US
obb.equity.price.historical("VOD", provider="eodhd", exchange="LSE") # -> VOD.LSE
obb.equity.price.historical("AAPL.US,MSFT.US", provider="eodhd") # multi-symbolOne API key, read from the bare uppercase env var (no OPENBB_ prefix):
EODHD_API_KEY=<your eodhd api token>
Get a token at https://eodhd.com. The public demo token works for a few
symbols (AAPL.US, MCD.US, TSLA.US, VTI.US) and is handy for testing.
pip install openbb-eodhd # or: pip install /path/to/openbb-eodhd
python -c "import openbb; openbb.build()" # regenerate the static packageAGPL-3.0-only.