Migrate from EODHD
This guide is for developers who call the EODHD API for US data and want to run the same app on Massive. It maps each common endpoint to the Massive endpoint that replaces it, and lists the differences that change your results. To compare the two products before you switch, see Massive vs EODHD.
Massive covers US stocks, options, indices, and futures, plus global forex and crypto. If you use EODHD for listings on non-US exchanges, keep it for those.
Before you start
- Sign up and copy your API key from the dashboard.
- Pick a plan for each market you use on the pricing page.
- Read the REST quickstart for the response shape that every endpoint shares.
Using AI?
Paste this into Claude Code, Cursor, Codex, or any coding agent that can read files and fetch a URL:
To let the agent check real responses while it works, connect the Massive MCP server. Massive also publishes skills and plugins for coding agents.
The request
EODHD takes the key as an api_token query parameter and returns CSV unless you pass fmt=json. Massive takes the key in an Authorization: Bearer header and always returns JSON. Both treat the start and end dates as inclusive.
On Massive, drop the .US suffix and the fmt parameter:
- Intraday ranges. EODHD takes intraday from and to as Unix seconds, and caps 1-minute bars at 120 days per request. Massive takes dates or Unix milliseconds, and returns a next_url when there is more data. The Python client follows it for you.
- Call weights. EODHD counts intraday and news calls as 5, fundamentals as 10, and bulk as 100. Massive has no per-call cost on paid plans, so you can remove code that counts calls.
The response
EODHD returns a list, with raw prices plus an adjusted_close adjusted for splits and dividends:
Massive returns one set of prices, chosen by adjusted:
| EODHD | Massive | Note |
|---|---|---|
| date | t | Unix milliseconds at the bar start. Daily bars start at midnight ET |
| open | o | |
| high | h | |
| low | l | |
| close, adjusted_close | c | c matches close when you set adjusted=false. For adjusted_close, see Prices below |
| volume | v | EODHD adjusts volume for splits. Massive adjusts volume only when adjusted=true |
| None | vw | Volume-weighted average price |
| None | n | Number of trades |
- Intraday timestamps. EODHD intraday timestamp is Unix seconds. Massive t is Unix milliseconds.
- Fundamentals. EODHD often returns numbers as strings, such as "416161000000.00", and "NA" for missing values. Massive financials are numbers.
Symbols
| EODHD | Massive |
|---|---|
| AAPL.US | AAPL |
| EURUSD.FOREX | C:EURUSD |
| BTC-USD.CC | X:BTCUSD |
| GSPC.INDX | I:SPX |
| A non-US listing, such as BP.LSE | Not covered. Massive stocks are US listings only |
Prices
- EODHD open, high, low, and close are as traded. Massive bars are split adjusted by default. Set adjusted=false to match.
- No Massive setting matches adjusted_close, because it includes dividends. To rebuild it, use the historical adjustment factor from Dividends.
Sources: EODHD end-of-day API, intraday API, EODHD pricing.
Endpoint map
This map covers the most common calls. It is not a full list. To find the Massive endpoint for another call, search these docs.
| EODHD endpoint | Massive endpoint |
|---|---|
| /api/eod/{symbol} | Custom Bars with timespan=day, week, or month |
| /api/intraday/{symbol} | Custom Bars with timespan=minute or hour |
| /api/real-time/{symbol} | Single Ticker Snapshot, or Unified Snapshot for a list |
| /api/eod-bulk-last-day/US | Daily Market Summary |
| /api/div/{symbol} | Dividends |
| /api/splits/{symbol} | Splits |
| /api/ticks | Trades. Massive also has NBBO quotes |
| /api/fundamentals/{symbol} | Ticker Overview, Income Statements, Balance Sheets, Cash Flow Statements, Ratios |
| /api/exchange-symbol-list/US | All Tickers |
| /api/search/{query} | All Tickers with search |
| /api/news | News |
| Insider transactions | Insider Activity, Form 4 |
| Technical indicators | SMA, EMA, RSI, MACD. Compute other indicators from bars |
| US options | Options Custom Bars, All Contracts, Option Chain Snapshot |
| /api/eod/EURUSD.FOREX, BTC-USD.CC, GSPC.INDX | Forex Custom Bars, Crypto Custom Bars, Indices Custom Bars |
| Macro indicators | US only: Treasury Yields, Inflation, Labor Market |
| Earnings and IPO calendars | Benzinga Earnings, a paid add-on, and IPOs |
| Exchange hours and holidays | Market Status, Market Holidays |
Massive currently doesn't have an equivalent for non-US stock listings, mutual funds, or macro data outside the US. New data and features ship often, so check the product roadmap for what's planned.
Streaming
EODHD streams from wss://ws.eodhistoricaldata.com/ws/us, /us-quote, /forex, and /crypto, with up to 50 symbols per key. Its US trades and quotes come from one exchange, Cboe EDGX. Massive streams every US exchange, with one connection per asset class:
| EODHD stream | Massive |
|---|---|
| us | wss://socket.massive.com/stocks, with trades |
| us-quote | wss://socket.massive.com/stocks, with NBBO quotes |
| forex | wss://socket.massive.com/forex, with quotes |
| crypto | wss://socket.massive.com/crypto, with trades and quotes |
Massive authenticates with a message after you connect, not with a URL parameter. See the WebSocket quickstart.
Bulk history
EODHD's bulk endpoint returns one exchange for one day, and costs 100 calls. Massive flat files hold one day per file across every US stock, with full history. Use daily bars, minute bars, trades, or quotes.
SDKs
| Language | EODHD | Massive |
|---|---|---|
| Python | eodhd | client-python |
| JavaScript | Official Node.js and TypeScript SDK | client-js |
| R, C#, MATLAB | Official clients | None. Call the REST API directly |
| Go, Kotlin/JVM | None | client-go, client-jvm |
Sources
EODHD details were checked against the EODHD API documentation on October 29, 2026. EODHD is a trademark of its owner. Massive is not affiliated with EODHD.