Migrate from Tiingo
This guide is for developers who call the Tiingo REST or WebSocket API 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 Tiingo.
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
Tiingo takes the key as Authorization: Token. Massive takes it as Authorization: Bearer. Both treat the start and end dates as inclusive. Tiingo puts the dates in query parameters. Massive puts them in the path.
- Long ranges. Tiingo returns the whole range in one response. Massive returns a next_url when there is more data. The Python client follows it for you.
- Rate limits. Paid Massive plans have no hourly or daily call limit, so you can remove code that counts requests.
The response
Tiingo returns a list, with raw prices plus adj* fields adjusted for splits and dividends:
Massive returns one set of prices, chosen by adjusted:
| Tiingo | Massive | Note |
|---|---|---|
| date | t | Tiingo uses an ISO 8601 string at midnight UTC. Massive uses Unix milliseconds, with daily bars at midnight ET |
| open, adjOpen | o | |
| high, adjHigh | h | |
| low, adjLow | l | |
| close, adjClose | c | |
| volume, adjVolume | v | |
| divCash, splitFactor | None | Use Dividends and Splits |
| None | vw | Volume-weighted average price |
| None | n | Number of trades |
For intraday bars:
- Volume grows. Tiingo's IEX endpoints count IEX trades only. Massive volume counts every US exchange.
- No padded bars. Tiingo's forceFill fills empty intervals. Massive returns no bar for an interval with no trades.
- No default interval. Tiingo IEX prices default to 5-minute bars. Massive asks for the multiplier and timespan in every request.
Symbols
| Tiingo | Massive |
|---|---|
| AAPL | AAPL |
| BRK-A | BRK.A |
| eurusd | C:EURUSD |
| btcusd | X:BTCUSD |
Tiingo has no options. Massive options use the OCC symbol with an O: prefix, such as O:SPY251219C00650000.
Prices
- Set adjusted=false on Massive to match Tiingo's raw open, high, low, close, and volume.
- No Massive setting matches the adj* fields, because they include dividends. Mapping adjClose to Massive c changes every value before the latest ex-dividend date. To rebuild dividend-adjusted prices, use the historical adjustment factor from Dividends.
Sources: Tiingo end-of-day API, IEX API, Tiingo 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.
| Tiingo endpoint | Massive endpoint |
|---|---|
| /tiingo/daily/<ticker>/prices | Custom Bars with timespan=day |
| /tiingo/daily/<ticker>/prices with no dates | Previous Day Bar, or Single Ticker Snapshot for today |
| /tiingo/daily/<ticker> | Ticker Overview |
| /iex/<ticker>/prices | Custom Bars with timespan=minute or hour |
| /iex?tickers=... | Unified Snapshot, or Full Market Snapshot for every ticker |
| /tiingo/crypto/prices | Crypto Custom Bars |
| /tiingo/crypto/top | Crypto Quotes over WebSocket. Massive has no REST crypto quotes |
| /tiingo/fx/<pair>/prices | Forex Custom Bars |
| /tiingo/fx/top | Forex Last Quote |
| /tiingo/news | News |
| /tiingo/corporate-actions/<ticker>/distributions | Dividends |
| /tiingo/corporate-actions/<ticker>/splits | Splits |
| /tiingo/fundamentals/<ticker>/statements | Income Statements, Balance Sheets, Cash Flow Statements |
| /tiingo/fundamentals/<ticker>/daily | Ratios, for the latest trading day only. Compute history from the statements and bars |
| /tiingo/utilities/search | All Tickers with search |
Massive currently doesn't have an equivalent for Tiingo fund fees or overnight BOATS data. New data and features ship often, so check the product roadmap for what's planned. Massive adds options, indices, futures, and trades and quotes from every US exchange.
Streaming
Tiingo streams from wss://api.tiingo.com/iex, /crypto, and /fx. Each message is a positional array, and the subscribe message carries your key. Massive streams named JSON fields, with one connection per asset class:
| Tiingo stream | Massive |
|---|---|
| iex | wss://socket.massive.com/stocks, with trades, quotes, and minute bars |
| crypto | wss://socket.massive.com/crypto, with trades and quotes |
| fx | wss://socket.massive.com/forex, with quotes |
Massive streams carry trades from every US exchange, not only IEX. See the WebSocket quickstart.
Bulk history
Tiingo has no bulk price download. To build a local history across many symbols, use Massive flat files. Each file holds one day of daily bars or minute bars for every US stock.
SDKs
Tiingo has no official client library. Its docs list community packages such as tiingo-python and riingo. Massive has official clients for Python, JavaScript, Go, and Kotlin/JVM.
Sources
Tiingo details were checked against the Tiingo API documentation on October 29, 2026. Tiingo is a trademark of its owner. Massive is not affiliated with Tiingo.