EODHD (EOD Historical Data)
EODHD (EOD Historical Data)
REST API for end-of-day and intraday prices, fundamentals, news, and macro data across global markets.
Coverage
60+ exchanges and 150,000+ tickers worldwide (stocks, ETFs, funds, indices, forex, crypto, bonds); 30+ years of end-of-day history, fundamentals from 1985 for major US companies (2000 for non-US), US 1-minute intraday from 2004, macro data from 1960. Free plan: 1 year of end-of-day history, 20 calls/day.
Verdict
Light EOD experiments only (20 calls/day, 1 year history); no free fundamentals or intraday.
Get the free weekly email
Free weekly email of newly verified free data. Unsubscribe by emailing us.
By entering your email and clicking Subscribe, you agree to receive the Signal Lab weekly email from Quantum Data Technologies Ltd., 3200-650 West Georgia Street, Vancouver, BC V6B 4P7, Canada (signal-lab@qdt.ai). You can unsubscribe at any time: reply "unsubscribe" to any email or write to signal-lab@qdt.ai. See our Privacy Policy.
Use in your agent
Load EODHD daily prices into pandas and Parquet for private analysis. Checked against the provider's documentation on Oct 29, 2026.
Access
- A free personal API token is required. Put it in EODHD_API_KEY.
- Free personal data is limited to private, non-commercial use.
Request
curl 'https://eodhd.com/api/eod/AAPL.US?from=2025-10-29&fmt=json&api_token='$EODHD_API_KEYFormat
JSON array with date, open, high, low, close, adjusted_close and volume.
Load into pandas and Parquet
Needs Python 3 with requests, pandas and pyarrow.
"""EODHD daily AAPL prices -> pandas -> Parquet. Private, non-commercial use."""
import os
import requests
import pandas as pd
params = {"from": "2025-10-29", "fmt": "json", "api_token": os.environ["EODHD_API_KEY"]}
r = requests.get("https://eodhd.com/api/eod/AAPL.US", params=params, timeout=30)
r.raise_for_status()
df = pd.DataFrame(r.json())
df["date"] = pd.to_datetime(df["date"])
df.to_parquet("eodhd_aapl_daily.parquet", index=False)
print(len(df), "rows", df["date"].min().date(), "to", df["date"].max().date())Needs a personal API key; not run.
Limits
- Free: 20 API calls per day and one year of end-of-day history.
- Published per-minute figures conflict across EODHD pages, so no numeric per-minute limit is stated here.
Quirks
- Use the exchange-qualified symbol, such as AAPL.US.
- The free plan does not include fundamentals or intraday data.
- The API can also return CSV when fmt=csv.
Terms and attribution
- Non-professional users may store, manipulate and analyze data only for private, non-commercial purposes.
- Selling, retransmitting, redistributing or displaying data is prohibited on the personal license.
Sources
- https://eodhd.com/financial-apis/terms-conditions: “permitted to store, manipulate, and analyze the data for private, non-commercial purposes”
- https://eodhd.com/financial-apis/terms-conditions: “Selling, reselling, retransmitting, redistributing, displaying, or granting access to the Information or Services”
- https://eodhd.com/pricing: “Once you register you get 20 free API calls per day.”
Information and education only. Not financial, investment, legal or tax advice. Listings can be inaccurate, incomplete or out of date and are provided "as is". Free tiers, limits and licenses belong to each provider and can change, so check the provider's own terms before you rely on them. Terms & Disclaimer