
Tiingo API Free Plan: Full Guide to Real-Time Financial Market Data
Learn how to use Tiingo's free API plan to access real-time stocks, ETFs, crypto, forex, and WebSocket data — with practical code examples and a full breakdown of every endpoint.

Learn how to use Tiingo's free API plan to access real-time stocks, ETFs, crypto, forex, and WebSocket data — with practical code examples and a full breakdown of every endpoint.
Note: For all endpoints, you must supply
token=<your_token>as a query parameter.Example:
curl "https://api.tiingo.com/tiingo/daily/<ticker>?token=<token>"
| Endpoint | Description |
|---|---|
https://api.tiingo.com/tiingo/daily/<ticker> | Meta Data |
https://api.tiingo.com/tiingo/daily/<ticker>/prices | Latest Price |
https://api.tiingo.com/tiingo/daily/<ticker>/prices?startDate=2012-1-1&endDate=2016-1-1 | Historical Prices |
To request price data for a stock, use the following REST endpoints.
https://api.tiingo.com/tiingo/daily/<ticker>/prices
https://api.tiingo.com/tiingo/daily/<ticker>/prices?startDate=2012-1-1&endDate=2016-1-1&format=csv&resampleFreq=monthly
Our meta information comes from a variety of sources, but is used to help communicate details about an asset in our database to our users.
For a daily list of all tickers accessible via Tiingo, please see the following file which is updated daily: supported_tickers.zip
Otherwise, to request meta data for a stock, use the following REST endpoint.
https://api.tiingo.com/tiingo/daily/<ticker>
| Endpoint | Description |
|---|---|
https://api.tiingo.com/tiingo/crypto/top?tickers=btcusd,fldcbtc | Top-of-Book Data for specific tickers |
https://api.tiingo.com/tiingo/crypto/prices?tickers=btcusd,fldcbtc | Real-time (Latest) Data for specific tickers |
https://api.tiingo.com/tiingo/crypto/prices?tickers=btcusd,fldcbtc&startDate=2019-01-02&resampleFreq=5min | Historical Prices |
Tiingo connects to a variety of cryptocurrency exchanges to create a consolidated top-of-book feed.
You can find out about the full product offering on the Product - Crypto page.
To download real-time and historical prices, use the following REST endpoints.
https://api.tiingo.com/tiingo/crypto/prices
https://api.tiingo.com/tiingo/crypto/prices?tickers=<ticker>&startDate=2019-01-02&resampleFreq=5min
To request meta data for a cryptocurrency, use the following REST endpoints.
https://api.tiingo.com/tiingo/crypto
https://api.tiingo.com/tiingo/crypto?tickers=<ticker>
To request top-of-book data, use the following REST endpoints.
https://api.tiingo.com/tiingo/crypto/top?tickers=<ticker>
Note: The Forex API Endpoints are currently in beta.
| Endpoint | Description |
|---|---|
https://api.tiingo.com/tiingo/fx/<ticker>/top | Top-of-Book/Last for specific base and quote pairs |
https://api.tiingo.com/tiingo/fx/<ticker>/prices?startDate=2019-06-30&resampleFreq=5min | Historical Intraday Prices |
Just remember, you will need your token in order to connect. Keep it safe.
Tiingo connects directly to tier-1 banks and FX dark pools to provide institutional-grade quality Forex quotes.
For more details please visit the Forex API product page.
To request top-of-book and last price data for a forex pair, use the following REST endpoints.
https://api.tiingo.com/tiingo/fx/top?tickers=<ticker>,<ticker>,...<ticker>
https://api.tiingo.com/tiingo/fx/<ticker>/top
To request historical intraday prices for a forex pair, use the following REST endpoint.
https://api.tiingo.com/tiingo/fx/<ticker>/prices?resampleFreq=1day
https://api.tiingo.com/tiingo/fx/<ticker>/prices?startDate=2019-06-30&resampleFreq=5min
| Endpoint | Description |
|---|---|
https://api.tiingo.com/iex | Top-of-Book/Last for all tickers |
https://api.tiingo.com/iex/<ticker> | Top-of-Book/Last for specific tickers |
https://api.tiingo.com/iex/<ticker>/prices?startDate=2019-01-02&resampleFreq=5min | Historical Intraday Prices |
To request top-of-book and last price data for a stock, use the following REST endpoints.
https://api.tiingo.com/iex
https://api.tiingo.com/iex/<ticker>
To request historical intraday prices for a stock, use the following REST endpoint.
https://api.tiingo.com/iex/<ticker>/prices?startDate=2019-01-02&resampleFreq=5min
| Endpoint | Description |
|---|---|
https://api.tiingo.com/tiingo/fundamentals/definitions | Available fundamental metrics |
https://api.tiingo.com/tiingo/fundamentals/<ticker>/statements | Historical statement data (active symbols) |
https://api.tiingo.com/tiingo/fundamentals/<permaTicker>/statements | Historical statement data (delisted/recycled symbols) |
https://api.tiingo.com/tiingo/fundamentals/<ticker>/daily | Historical daily fundamental data (active symbols) |
https://api.tiingo.com/tiingo/fundamentals/<permaTicker>/daily | Historical daily fundamental data (delisted/recycled symbols) |
https://api.tiingo.com/tiingo/fundamentals/meta | Fundamental meta data |
Tiingo offers a fundamental data API via a third-party provider. Data goes back over 20 years and covers US Equities and ADRs. We have used this provider extensively over the years and found them to be reputable, reliable, and accurate.
This endpoint can be used to check which the various fields available in the fundamentals endpoint. As we add more indicators, the output of this endpoint will change to reflect the addition of indicators.
https://api.tiingo.com/tiingo/fundamentals/definitions
This endpoint returns data that is extracted from quarterly and annual statements.
For Tiingo statement data, use the endpoints below. Provide either a ticker (active symbols) or a Tiingo permaTicker (stable identifier for delisted/recycled symbols).
Note: With this endpoint, the JSON (default) and CSV formats do share some differences in data structure. The JSON data is nested, whereas the CSV format, by necessity, is a 2-D, flat structure. The data is the same, so choose a format that is simplest for you to digest.
Additionally, please ensure your code can handle new indicators as we will be continually updating these endpoints as we obtain new information and add new metrics.
https://api.tiingo.com/tiingo/fundamentals/<ticker>/statements
https://api.tiingo.com/tiingo/fundamentals/<permaTicker>/statements
https://api.tiingo.com/tiingo/fundamentals/<ticker>/statements?startDate=2019-06-30
While statement data covers quarterly and annual reporting, some metrics that rely on price update daily, for example Market Capitalization, P/E Ratios, P/B Ratios, etc. This endpoint covers daily metrics.
For Tiingo daily fundamentals, use the endpoints below. Provide either a ticker (active symbols) or a Tiingo permaTicker (stable identifier for delisted/recycled symbols).
Note: This endpoint is different than others in that the different daily metrics are "columns". Please note that we will continue to add new daily metrics, so the fields will change throughout time. We recommend you do not make parsing code that requires columns or fields to be in a particular order. If you do require this, please use the
columnsrequest parameter to ensure constant output, even if we add columns.For example,
columns=marketCap,peRatiowill always ensure only those two fields are returned in that exact order.
https://api.tiingo.com/tiingo/fundamentals/<ticker>/daily
https://api.tiingo.com/tiingo/fundamentals/<permaTicker>/daily
This endpoint can be used to check which tickers have been updated with new fundamental data.
Like the endpoints above, as we add new meta data about companies and their fundamentals, this endpoint will change output. Please do not code with the assumption that column orders will always be maintained. If you must, please pass the
columnsparameter to ensure the output maintains its column order. For example,columns=ticker,namewill always ensure those columns are returned in that exact order.
https://api.tiingo.com/tiingo/fundamentals/meta
| Service | URL |
|---|---|
| Crypto | wss://api.tiingo.com/crypto |
| Forex | wss://api.tiingo.com/fx |
| IEX | wss://api.tiingo.com/iex |
thresholdLevel: 2 — Top-of-Book AND Last Trade:
{
"eventName": "subscribe",
"authorization": "YOUR_TOKEN_HERE",
"eventData": {
"tickers": ["btcusd", "ethusd"],
"thresholdLevel": 2
}
}
thresholdLevel: 5 — Last Trade only (less data, easier to start with):
{
"eventName": "subscribe",
"authorization": "YOUR_TOKEN_HERE",
"eventData": {
"tickers": ["btcusd", "ethusd"],
"thresholdLevel": 5
}
}
{
"service": "crypto_data",
"messageType": "A",
"data": ["T", "btcusd", "2024-01-01T12:00:00+00:00", "BINANCE", 0.001, 42000.50]
}
| Index | Field | Example |
|---|---|---|
| 0 | Type | "T" |
| 1 | Ticker | "btcusd" |
| 2 | Date | "2024-01-01T..." |
| 3 | Exchange | "BINANCE" |
| 4 | Last Size | 0.001 |
| 5 | Last Price | 42000.50 |
{
"service": "crypto_data",
"messageType": "A",
"data": ["Q", "btcusd", "2024-01-01T12:00:00+00:00", "BINANCE", 0.5, 41999.00, 42000.00, 0.3, 42001.00]
}
| Index | Field | Example |
|---|---|---|
| 0 | Type | "Q" |
| 1 | Ticker | "btcusd" |
| 2 | Date | "2024-01-01T..." |
| 3 | Exchange | "BINANCE" |
| 4 | Bid Size | 0.5 |
| 5 | Bid Price | 41999.00 |
| 6 | Mid Price | 42000.00 |
| 7 | Ask Size | 0.3 |
| 8 | Ask Price | 42001.00 |
Recommendation for learning: Start with thresholdLevel: 5 (trades only) — the firehose at level 2 sends an extremely high volume of quote updates and can be overwhelming. Once you're comfortable parsing trade messages, drop it to 2 to also receive top-of-book updates.
wss://api.tiingo.com/fx
{
"eventName": "subscribe",
"authorization": "YOUR_TOKEN_HERE",
"eventData": {
"tickers": ["eurusd", "gbpusd"],
"thresholdLevel": 5
}
}
Note: For FX, thresholdLevel: 5 is the only level — it gives you all top-of-book updates. Unlike crypto there's no trade-only mode.
All FX messages are Quote ("Q") only — no trade messages like crypto:
{
"service": "fx",
"messageType": "A",
"data": ["Q", "eurusd", "2024-01-01T12:00:00+00:00", 100000, 1.0850, 1.0851, 1.0852, 100000]
}
| Index | Field | Example |
|---|---|---|
| 0 | Type | "Q" |
| 1 | Ticker | "eurusd" |
| 2 | Date | "2024-01-01T..." |
| 3 | Bid Size | 100000 |
| 4 | Bid Price | 1.0850 |
| 5 | Mid Price | 1.0851 |
| 6 | Ask Price | 1.0852 |
| 7 | Ask Size | 100000 |
| Feature | Crypto wss://.../crypto | Forex wss://.../fx |
|---|---|---|
| Message types | "T" (trade) + "Q" (quote) | "Q" only |
| thresholdLevel | 2 = both, 5 = trades only | 5 = all updates |
| Exchange field | ✅ included (index 3) | ❌ not present |
| Resolution | nanosecond | microsecond |
| Data source | Crypto exchanges | Tier-1 banks + FX dark pools |
"tickers": ["eurusd", "gbpusd", "usdjpy", "audusd", "usdchf", "usdcad"]
⚠️ FX firehose is very high volume (microsecond resolution). For learning, subscribe to just 1-2 pairs to start.
wss://api.tiingo.com/iex
{
"eventName": "subscribe",
"authorization": "YOUR_TOKEN_HERE",
"eventData": {
"tickers": ["aapl", "tsla", "msft"],
"thresholdLevel": 6
}
}
Response — Simple, just 3 fields:
{
"service": "iex",
"messageType": "A",
"data": ["2024-01-01T14:00:00+00:00", "aapl", 192.50]
}
| Index | Field | Example |
|---|---|---|
| 0 | Date | "2024-01-01T..." |
| 1 | Ticker | "aapl" |
| 2 | Reference Price | 192.50 |
{
"eventName": "subscribe",
"authorization": "YOUR_TOKEN_HERE",
"eventData": {
"tickers": ["aapl", "tsla"],
"thresholdLevel": 5
}
}
{
"eventName": "subscribe",
"authorization": "YOUR_TOKEN_HERE",
"eventData": {
"tickers": ["aapl"],
"thresholdLevel": 0
}
}
{
"service": "iex",
"messageType": "A",
"data": ["T", "2024-01-01T14:00:00+00:00", 1704110400000000000, "aapl",
null, null, null, null, null, 192.50, 100, 0, 0, 0, 0, 0]
}
{
"service": "iex",
"messageType": "A",
"data": ["Q", "2024-01-01T14:00:00+00:00", 1704110400000000000, "aapl",
500, 192.45, 192.50, 192.55, 300, null, null, 0, 0, 0, null, null]
}
| Index | Field | Trade | Quote |
|---|---|---|---|
| 0 | Type | "T" / "B" | "Q" |
| 1 | Date | ✅ | ✅ |
| 2 | Nanoseconds | ✅ | ✅ |
| 3 | Ticker | ✅ | ✅ |
| 4 | Bid Size | null | ✅ |
| 5 | Bid Price | null | ✅ |
| 6 | Mid Price | null | ✅ |
| 7 | Ask Price | null |
| Feature | IEX wss://.../iex | Crypto wss://.../crypto | Forex wss://.../fx |
|---|---|---|---|
| Asset type | US stocks | Crypto pairs | FX pairs |
| Message types | T, Q, B (break) | T, Q | Q only |
| Free level | 6 (reference price) | 5 (trades only) | 5 (all quotes) |
| Nanosecond field | ✅ index 2 | ❌ | ❌ |
| Exchange field | ❌ (IEX only) | ✅ index 3 | ❌ |
| IEX agreement needed | for level 0 & 5 | ❌ | ❌ |
For learning: Stick to thresholdLevel: 6 on IEX — no agreement needed, clean simple response, and Tiingo says it covers 95% of use cases.
Tiingo's search feature lets you find specific assets in our database by the ticker or the name of the asset. This endpoint lets you segment by active, delisted, tickers across asset classes. The endpoint first searches for ticker matches and then expands to matches in the name of the asset.
Note: Search Endpoint has just been launched and is in early beta. Responses objects are subject to change. We do not recommend building production code using this endpoint while in beta.
To request search query data, use the following REST endpoints.
https://api.tiingo.com/tiingo/utilities/search/<query>
or
https://api.tiingo.com/tiingo/utilities/search?query=<query>
https://api.tiingo.com/tiingo/utilities/search?query=microsoft&token=<token>
| Field Name | JSON Field | Data Type | Description |
|---|---|---|---|
| Ticker | ticker | string | Ticker of the given asset. |
| Name | name | string | The name of the asset. |
| Asset Type | assetType | string | The asset type of the asset (Stock, ETF, & Mutual Fund). |
| Is Active | isActive | boolean | True if the ticker is still actively quoted, and false if the ticker is no longer actively quoted (delisted). |
| Tiingo PermaTicker | permaTicker | string | Placeholder for an upcoming change to the Tiingo API that allows querying by permaticker. |
| OpenFIGI Ticker | openFIGI | string | Placeholder for an upcoming change to the Tiingo API that allows querying by the openFIGI ticker. |
Just remember, you will need your token in order to connect. Keep it safe.
| ✅ |
| 8 | Ask Size | null | ✅ |
| 9 | Last Price | ✅ | null |
| 10 | Last Size | ✅ | null |
| 11 | Halted | ✅ | ✅ |
| 12 | After Hours | ✅ | ✅ |
| 13 | ISO Order | ✅ | ✅ |
| 14 | Oddlot | ✅ | null |
| 15 | NMS Rule 611 | ✅ | null |