Market data · active

EODHD

A broad financial-data API covering end-of-day prices, fundamentals, corporate actions, intraday data, news, and more.

What it covers

EODHD exposes a family of market-data endpoints rather than one narrow feed. The EOD endpoint returns daily, weekly, or monthly OHLCV history; the wider catalog adds fundamentals, dividends, splits, intraday prices, calendars, exchange metadata, news, and selected real-time feeds.

Request shape

curl "https://eodhd.com/api/eod/AAPL.US?api_token=<redacted>

The EOD endpoint defaults to CSV. Set fmt=json when a JSON response is easier to consume. Keep the token server-side even though query-string authentication is supported.

Python example: dividend history with defensive parsing

import httpx
from decimal import Decimal

BASE = "https://eodhd.com/api"
TOKEN = "your_api_token"  # keep server-side

def get_dividends(ticker: str, exchange: str = "US") -> list[dict]:
    """Fetch dividend history, skipping rows with missing critical fields."""
    url = f"{BASE}/div/{ticker}.{exchange}"
    resp = httpx.get(url, params={"api_token": TOKEN, "fmt": "json"}, timeout=30)
    resp.raise_for_status()
    rows = []
    for row in resp.json():
        # paymentDate is frequently null in practice — don't assume it exists
        amount = row.get("value")
        if amount is None:
            continue
        rows.append({
            "ex_date": row.get("date"),
            "payment_date": row.get("paymentDate"),  # may be None
            "amount": Decimal(str(amount)),
            "currency": row.get("currencyCode", "USD"),
        })
    return rows

# Example: SCHD.US dividends
for div in get_dividends("SCHD")[:3]:
    print(div["ex_date"], div["amount"], div["currency"])

Key endpoints

Endpoint Description
GET /api/eod/{symbol} End-of-day OHLCV
GET /api/real-time/{symbol} Real-time quote
GET /api/div/{symbol} Dividend history
GET /api/splits/{symbol} Stock splits
GET /api/fundamentals/{symbol} Fundamentals data
GET /api/news Financial news
GET /api/eod-bulk-last-day/{exchange} Bulk EOD for exchange
GET /api/screener Stock screener

Decision notes

EODHD is a practical fit when a product wants broad market coverage from one integration. Before production use, match every required dataset to the actual plan and license; a personal subscription does not automatically grant redistribution rights.

Field-level spot checks are worth the effort: dividend date fields and close-price session definitions have shown gaps in practice, so validate the exact fields a product depends on against a second source before treating them as authoritative.

Real-world data quality notes (observed September–October 2026):

  • Bulk dividend queries returned paymentDate: null for thousands of rows (Korean listings most affected)
  • Some rows have payment dates earlier than ex-dates — validate chronology
  • isPrimary flag meaning for a given listing is ambiguous — confirm methodology before comparing closes

Integration surface

Versioning
Endpoint-family paths; many core REST endpoints do not use a global version prefix.
Resource groups
End-of-day history, Fundamentals, Splits and dividends, Intraday and live, News and calendars
Pagination
Endpoint-specific; time series use date ranges while list resources document their own paging fields.
Errors
HTTP status codes are used; the EOD documentation identifies 401 for an invalid API token.
Webhooks
No general webhook product was confirmed in the reviewed official documentation.
Official SDKs
Python, R, Node.js, PHP, Java

Practical integration cases

한국어 연동 사례