Tiingo End-of-Day API
Daily OHLCV history for 100,000+ US equities and ETFs back to 1962, with split and dividend adjustments.
Daily OHLCV history for 100,000+ US equities and ETFs back to 1962, with split and dividend adjustments.
openapi: 3.0.3
info:
title: Tiingo API
version: 1.0.0
description: 'Tiingo''s REST API for financial market data: end-of-day equity prices, IEX intraday, BOATS overnight
equity data, consolidated equity realtime snapshots, crypto, crypto yield, forex, fundamentals, mutual fund
and ETF fees, corporate actions, curated news, and asset search. Most endpoints return JSON by default and support
CSV via the format parameter. Generated by API Evangelist from Tiingo''s published documentation (https://www.tiingo.com/documentation/)
- Tiingo does not publish an OpenAPI itself.'
termsOfService: https://www.tiingo.com/about/terms
contact:
name: Tiingo Support
url: https://www.tiingo.com/support
email: support@tiingo.com
x-apievangelist:
generated: '2026-07-22'
method: generated
source: https://apimedia.tiingo.com/dist/src_app_api_documentation_documentation_module_ts-es2015.f5eea3d64917e26bb724.js
externalDocs:
description: Tiingo API documentation
url: https://www.tiingo.com/documentation/general/overview
servers:
- url: https://api.tiingo.com
security:
- apiTokenHeader: []
- apiTokenQuery: []
tags:
- name: End-of-Day
- name: Corporate Actions
- name: News
- name: Crypto
- name: Crypto Yield
- name: IEX
- name: BOATS
- name: Equity Realtime
- name: Small Exchange
- name: Forex
- name: Fundamentals
- name: Fund Fees
- name: Utilities
paths:
/tiingo/daily/{ticker}:
get:
operationId: getDailyMeta
summary: Get end-of-day metadata for a ticker
tags:
- End-of-Day
externalDocs:
url: https://www.tiingo.com/documentation/end-of-day
parameters:
- name: ticker
in: path
required: true
description: Ticker related to the asset.
schema:
type: string
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/DailyMeta'
'401':
$ref: '#/components/responses/Unauthorized'
'429':
$ref: '#/components/responses/TooManyRequests'
/tiingo/daily/{ticker}/prices:
get:
operationId: getDailyPrices
summary: Get end-of-day price history for a ticker
tags:
- End-of-Day
externalDocs:
url: https://www.tiingo.com/documentation/end-of-day
parameters:
- name: ticker
in: path
required: true
description: Ticker related to the asset.
schema:
type: string
- name: startDate
in: query
required: false
description: If startDate or endDate is not null, historical data will be queried. This filter limits metrics
to on or after the startDate (>=). Parameter must be in YYYY-MM-DD format.
schema:
type: string
format: date
- name: endDate
in: query
required: false
description: If startDate or endDate is not null, historical data will be queried. This filter limits metrics
to on or before the endDate (<=). Parameter must be in YYYY-MM-DD format.
schema:
type: string
format: date
- name: resampleFreq
in: query
required: false
description: 'Allows resampled values that allow you to choose the values returned as daily, weekly, monthly,
or annually values. Note: ONLY DAILY takes into account holidays. All others use standard business days
Acceptable values: daily : Values returned as daily periods, with a holiday calendar. weekly : Values
returned as weekly data, with days ending on Friday. monthly : Values returned as monthly data, with days
ending on the last standard business day (Mon-Fri) of each month. annually : Values returned as annual
data, with days ending on the last standard business day (Mon-Fri) of each year. Note, that if you choose
a value in-between the resample period for weekly, monthly, and daily, the start date rolls back to consider
the entire period. For example, if you choose to resample weekly, but your "startDate" parameter is set
to Wednesday of that week, the startDate will be adjusted to Monday, so the entire week is captured. Another
example is if you send a startDate mid-month, we roll back the startDate to the beginning of the month.
Similarly, if you provide an endDate, and it''s midway through the period, we roll-forward the date to
capture the whole period. In the above example, if the end date is set to a wednesday with a weekly resample,
the end date is rolled forward to the Friday of that week.'
schema:
type: string
- name: sort
in: query
required: false
description: This field allows you to specify the sort direct and which column to sort by. Prepend "-" if
you want descending order, otherwise it will be ascending. E.g. sort=date will sort by date in ascending
order. sort=-date will sort by date in descending order.
schema:
type: string
- name: format
in: query
required: false
description: Response format. Supports "json" (default) and "csv". CSV is a bare-bones return type that
is often 4-5x faster than JSON.
schema:
type: string
enum:
- json
- csv
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/DailyPriceBar'
'401':
$ref: '#/components/responses/Unauthorized'
'429':
$ref: '#/components/responses/TooManyRequests'
/tiingo/corporate-actions/{ticker}/distribution-yield:
get:
operationId: getDistributionYield
summary: Get trailing distribution yield for a ticker
tags:
- Corporate Actions
externalDocs:
url: https://www.tiingo.com/documentation/corporate-actions/dividends
parameters:
- name: ticker
in: path
required: true
description: Ticker related to the asset you would like yield data for.
schema:
type: string
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/DistributionYield'
'401':
$ref: '#/components/responses/Unauthorized'
'429':
$ref: '#/components/responses/TooManyRequests'
/tiingo/corporate-actions/{ticker}/distributions:
get:
operationId: getTickerDistributions
summary: Get dividend distributions for a ticker
tags:
- Corporate Actions
externalDocs:
url: https://www.tiingo.com/documentation/corporate-actions/dividends
parameters:
- name: ticker
in: path
required: true
description: Ticker related to the asset you would like distribution data for.
schema:
type: string
- name: startExDate
in: query
required: false
description: This filter limits distributions that have an ex-date >= on the date passed. Parameter must
be in YYYY-MM-DD format.
schema:
type: string
format: date
- name: endExDate
in: query
required: false
description: This filter limits distributions that have an ex-date <= on the date passed. Parameter must
be in YYYY-MM-DD format.
schema:
type: string
format: date
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Distribution'
'401':
$ref: '#/components/responses/Unauthorized'
'429':
$ref: '#/components/responses/TooManyRequests'
/tiingo/corporate-actions/distributions:
get:
operationId: getBulkDistributions
summary: Get dividend distributions across all tickers for an ex-date
tags:
- Corporate Actions
externalDocs:
url: https://www.tiingo.com/documentation/corporate-actions/dividends
parameters:
- name: exDate
in: query
required: false
description: This filter limits distributions that have an ex-date on the date passed. Parameter must be
in YYYY-MM-DD format.
schema:
type: string
format: date
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Distribution'
'401':
$ref: '#/components/responses/Unauthorized'
'429':
$ref: '#/components/responses/TooManyRequests'
/tiingo/corporate-actions/{ticker}/splits:
get:
operationId: getTickerSplits
summary: Get split corporate actions for a ticker
tags:
- Corporate Actions
externalDocs:
url: https://www.tiingo.com/documentation/corporate-actions/splits
parameters:
- name: ticker
in: path
required: true
description: Ticker related to the asset you would like distribution data for.
schema:
type: string
- name: startExDate
in: query
required: false
description: This filter limits distributions that have an ex-date >= on the date passed. Parameter must
be in YYYY-MM-DD format.
schema:
type: string
format: date
- name: endExDate
in: query
required: false
description: This filter limits distributions that have an ex-date <= on the date passed. Parameter must
be in YYYY-MM-DD format.
schema:
type: string
format: date
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Split'
'401':
$ref: '#/components/responses/Unauthorized'
'429':
$ref: '#/components/responses/TooManyRequests'
/tiingo/corporate-actions/splits:
get:
operationId: getBulkSplits
summary: Get split corporate actions across all tickers for an ex-date
tags:
- Corporate Actions
externalDocs:
url: https://www.tiingo.com/documentation/corporate-actions/splits
parameters:
- name: exDate
in: query
required: false
description: This filter limits distributions that have an ex-date on the date passed. Parameter must be
in YYYY-MM-DD format.
schema:
type: string
format: date
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Split'
'401':
$ref: '#/components/responses/Unauthorized'
'429':
$ref: '#/components/responses/TooManyRequests'
/tiingo/news:
get:
operationId: listNews
summary: Get curated financial news articles
tags:
- News
externalDocs:
url: https://www.tiingo.com/documentation/news
parameters:
- name: tickers
in: query
required: false
description: 'A comma-separated list of the tickers requested. When passing via GET parameter (not in URL),
use a JSON array, otherwise use a comma-separated list. #Use the below format if querying directly in
the URL https://api.tiingo.com/tiingo/news?tickers=aapl,googl #Otherwise, if passing GET parameters via
a request library, use a JSON array like this: tickers : [''aapl'',''googl'']'
schema:
type: array
items: &id001
type: string
- name: source
in: query
required: false
description: 'A comma-separated list of the tags requested. When passing via GET parameter (not in URL),
use a JSON array, otherwise use a comma-separated list. #Use the below format if querying directly in
the URL https://api.tiingo.com/tiingo/news?source=bloomberg.com,reuters.com #Otherwise, if passing GET
parameters via a request library, use a JSON array like this: source : [''bloomberg.com'',''reuters.com'']'
schema:
type: array
items: *id001
- name: startDate
in: query
required: false
description: If startDate or endDate is not null, historical data will be queried. This filter limits news
stories to on or later than the publishedDate (>=). Parameter must be in YYYY-MM-DD format.
schema:
type: string
format: date
- name: endDate
in: query
required: false
description: If startDate or endDate is not null, historical data will be queried. This filter limits news
stories to on or less than the publishedDate (<=). Parameter must be in YYYY-MM-DD format.
schema:
type: string
format: date
- name: limit
in: query
required: false
description: The maximum number of news objects to return in the array. The default is 100 and the max is
1000. This is maxed to 1,000 as any more than that tends to lead to longer wait times. If you would like
this adjusted, please contact us at support@tiingo.com .
schema:
type: integer
- name: offset
in: query
required: false
description: 'This is a "pagination" variable that is often used alongside limit. It returns an array with
the results shifted by "offset". For example, when limit is 0 you may get the following: 0. News Story
A 1. News Story B 2. News Story C 3. News Story D When offset is "2" you will receive: 0. News Story C
1. News Story D 2. News Story E 3. News Story F This, when used alongside "limit" allows for pagination
and more efficient queries.'
schema:
type: integer
- name: sortBy
in: query
required: false
description: The field can take either "publishedDate" or "crawlDate". The date field specified will be
used to sort the results in descending order. The results can either be sorted by when the news outlet
reported the publish time ("datePublished") or when our feeds came across is ("crawlDate"). Defaults to
"publishedDate" if no value provided
schema:
type: string
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/NewsArticle'
'401':
$ref: '#/components/responses/Unauthorized'
'429':
$ref: '#/components/responses/TooManyRequests'
/tiingo/news/bulk_download:
get:
operationId: listNewsBulkFiles
summary: List available bulk news download files
tags:
- News
externalDocs:
url: https://www.tiingo.com/documentation/news
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/NewsBulkFile'
'401':
$ref: '#/components/responses/Unauthorized'
'429':
$ref: '#/components/responses/TooManyRequests'
/tiingo/news/bulk_download/{id}:
get:
operationId: downloadNewsBulkFile
summary: Download a bulk news batch file
tags:
- News
externalDocs:
url: https://www.tiingo.com/documentation/news
parameters:
- name: id
in: path
required: true
description: The unique "id" that corresponds to the batch file you would like to download. If none is supplied,
returns a list of the available batch files.
schema:
type: integer
responses:
'200':
description: Successful response
'401':
$ref: '#/components/responses/Unauthorized'
'429':
$ref: '#/components/responses/TooManyRequests'
/tiingo/crypto:
get:
operationId: listCryptoMeta
summary: Get metadata for crypto tickers
tags:
- Crypto
externalDocs:
url: https://www.tiingo.com/documentation/crypto
parameters:
- name: tickers
in: query
required: false
description: 'The ticker(s) associated with the crypto pair(s). Can either be a single string or an array
of strings (string[]). Please note: no more than 100 tickers may be requested at this time. If no ticker(s)
are passed, returns data for all supported crypto pairs.'
schema:
type: string
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/CryptoMeta'
'401':
$ref: '#/components/responses/Unauthorized'
'429':
$ref: '#/components/responses/TooManyRequests'
/tiingo/crypto/top:
get:
operationId: getCryptoTopOfBook
summary: Get top-of-book quotes for crypto tickers
tags:
- Crypto
externalDocs:
url: https://www.tiingo.com/documentation/crypto
parameters:
- name: tickers
in: query
required: true
description: 'The ticker(s) associated with the crypto pair(s). Can either be a single string or an array
of strings (string[]). Please note: no more than 100 tickers may be requested at this time.'
schema:
type: string
- name: exchanges
in: query
required: false
description: If you would like to limit the query to a subset of exchanes, pass a comma-separated list of
exchanged to select. E.g. "POLONIEX, GDAX".
schema:
type: array
items: *id001
- name: includeRawExchangeData
in: query
required: false
description: If True, the endpoint will return all of the underlying exchange data used in the calculation.
If this is set to true, there will be a new field called exchangeData for each crypto. This will contain
the exchange-level OHLC for each asset.
schema:
type: boolean
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/CryptoTopOfBook'
'401':
$ref: '#/components/responses/Unauthorized'
'429':
$ref: '#/components/responses/TooManyRequests'
/tiingo/crypto/prices:
get:
operationId: getCryptoPrices
summary: Get historical crypto price data
tags:
- Crypto
externalDocs:
url: https://www.tiingo.com/documentation/crypto
parameters:
- name: tickers
in: query
required: true
description: 'The ticker(s) associated with the crypto pair(s). Can either be a single string or an array
of strings (string[]). Please note: no more than 100 tickers may be requested at this time.'
schema:
type: string
- name: exchanges
in: query
required: false
description: If you would like to limit the query to a subset of exchanes, pass a comma-separated list of
exchanged to select. E.g. "POLONIEX, GDAX".
schema:
type: array
items: *id001
- name: startDate
in: query
required: false
description: If startDate or endDate is not null, historical data will be queried. This filter limits metrics
to on or later than the startDate (>=). Parameter must be in YYYY-MM-DD format.
schema:
type: string
format: date-time
- name: endDate
in: query
required: false
description: f startDate or endDate is not null, historical data will be queried. This filter limits metrics
to on or less than the endDate (<=). Parameter must be in YYYY-MM-DD format.
schema:
type: string
format: date-time
- name: resampleFreq
in: query
required: false
description: 'This allows you to set the frequency in which you want data resampled. For example "1hour"
would return the data where OHLC is calculated on an hourly schedule. The minimum value is "1min". Units
in minutes (min), hours (hour), and days (day) are accepted. Format is # + (min/hour/dau); e.g. "15min",
"4hour" or "1day". If no value is provided, defaults to 5min.'
schema:
type: string
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/CryptoPrices'
'401':
$ref: '#/components/responses/Unauthorized'
'429':
$ref: '#/components/responses/TooManyRequests'
/tiingo/crypto-yield/platforms:
get:
operationId: listCryptoYieldPlatforms
summary: List crypto yield platforms
tags:
- Crypto Yield
externalDocs:
url: https://www.tiingo.com/documentation/crypto
parameters:
- name: platformCodes
in: query
required: false
description: A list of platform codes to constrain the output to the given platforms. If passing it as a
string in the URL, it can be a comma-separated list.
schema:
type: string
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/YieldPlatform'
'401':
$ref: '#/components/responses/Unauthorized'
'429':
$ref: '#/components/responses/TooManyRequests'
/tiingo/crypto-yield/pools:
get:
operationId: listCryptoYieldPools
summary: List crypto yield pools
tags:
- Crypto Yield
externalDocs:
url: https://www.tiingo.com/documentation/crypto
parameters:
- name: poolCodes
in: query
required: false
description: The pool code(s) associated with the Yield Pool. Can either be a single string or an array
of strings (string[]). If no pool code(s) are passed, returns data for all supported yield pools.
schema:
type: string
- name: platformCodes
in: query
required: false
description: The platform code(s) associated with the Yield Pools that you would like to constrain the output
by. Can either be a single string or an array of strings (string[]). If no platform code(s) are passed,
returns data for all supported yield pools for all platforms.
schema:
type: string
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/YieldPool'
'401':
$ref: '#/components/responses/Unauthorized'
'429':
$ref: '#/components/responses/TooManyRequests'
/tiingo/crypto-yield/ticks:
get:
operationId: getCryptoYieldTicks
summary: Get latest crypto yield metric ticks
tags:
- Crypto Yield
externalDocs:
url: https://www.tiingo.com/documentation/crypto
parameters:
- name: poolCodes
in: query
required: false
description: The pool code(s) associated with the Yield Pool. Can either be a single string or an array
of strings (string[]). If no pool code(s) are passed, returns data for all supported yield pools.
schema:
type: string
- name: platformCodes
in: query
required: false
description: The platform code(s) associated with the Yield Pools that you would like to constrain the output
by. Can either be a single string or an array of strings (string[]). If no platform code(s) are passed,
returns data for all supported yield pools for all platforms.
schema:
type: string
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/YieldTick'
'401':
$ref: '#/components/responses/Unauthorized'
'429':
$ref: '#/components/responses/TooManyRequests'
/tiingo/crypto-yield/{poolCode}/metrics:
get:
operationId: getCryptoYieldMetrics
summary: Get historical yield metrics for a pool
tags:
- Crypto Yield
externalDocs:
url: https://www.tiingo.com/documentation/crypto
parameters:
- name: poolCode
in: path
required: true
description: The pool code associated with the yield pool. Must be a single pool code.
schema:
type: string
- name: startDate
in: query
required: false
description: If startDate or endDate is not null, historical data will be queried. This filter limits metrics
to on or later than the startDate (>=). Parameter must be in YYYY-MM-DD format.
schema:
type: string
format: date-time
- name: endDate
in: query
required: false
description: f startDate or endDate is not null, historical data will be queried. This filter limits metrics
to on or less than the endDate (<=). Parameter must be in YYYY-MM-DD format.
schema:
type: string
format: date-time
- name: resampleFreq
in: query
required: false
description: 'This allows you to set the frequency in which you want data resampled. For example "1hour"
would return the data where OHLC is calculated on an hourly schedule. The minimum value is "1min". Units
in minutes (min), hours (hour), and days (day) are accepted. Format is # + (min/hour/dau); e.g. "15min",
"4hour" or "1day". If no value is provided, defaults to 5min.'
schema:
type: string
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/YieldMetrics'
'401':
$ref: '#/components/responses/Unauthorized'
'429':
$ref: '#/components/responses/TooManyRequests'
/iex:
get:
operationId: getIexTopOfBook
summary: Get IEX top-of-book and last-sale quotes
tags:
- IEX
externalDocs:
url: https://www.tiingo.com/documentation/iex
parameters:
- name: tickers
in: query
required: false
description: Ticker related to the asset.
schema:
type: string
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/IexTopOfBook'
'401':
$ref: '#/components/responses/Unauthorized'
'429':
$ref: '#/components/responses/TooManyRequests'
/iex/{ticker}/prices:
get:
operationId: getIexHistoricalPrices
summary: Get IEX historical intraday prices for a ticker
tags:
- IEX
externalDocs:
url: https://www.tiingo.com/documentation/iex
parameters:
- name: ticker
in: path
required: true
description: Ticker related to the asset.
schema:
type: string
- name: startDate
in: query
required: false
description: If startDate or endDate is not null, historical data will be queried. This filter limits metrics
to on or after the startDate (>=). Parameter must be in YYYY-MM-DD format.
schema:
type: string
format: date
- name: endDate
in: query
required: false
description: If startDate or endDate is not null, historical data will be queried. This filter limits metrics
to on or before the endDate (<=). Parameter must be in YYYY-MM-DD format.
schema:
type: string
format: date
- name: resampleFreq
in: query
required: false
description: 'his allows you to set the frequency in which you want data resampled. For example "1hour"
would return the data where OHLC is calculated on an hourly schedule. The minimum value is "1min". Both
units in minutes (min) and hours (hour) are accepted. Format is # + (min/hour); e.g. "15min" or "4hour".
If no value is provided, defaults to 5min.'
schema:
type: string
- name: afterHours
in: query
required: false
description: If set to true, includes pre and post market data if available.
schema:
type: boolean
- name: forceFill
in: query
required: false
description: Some tickers do not have a trade/quote update for a given time period. if forceFill is set
to true, then the previous OHLC will be used to fill the current OHLC.
schema:
type: boolean
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/IexPriceBar'
'401':
$ref: '#/components/responses/Unauthorized'
'429':
$ref: '#/components/responses/TooManyRequests'
/boats:
get:
operationId: getBoatsTopOfBook
summary: Get BOATS overnight top-of-book and last-sale quotes (beta)
tags:
- BOATS
externalDocs:
url: https://www.tiingo.com/documentation/boats
parameters:
- name: tickers
in: query
required: false
description: Ticker related to the asset. Pass a comma-separated list for multiple tickers (for example
aapl,spy).
schema:
type: string
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/BoatsTopOfBook'
'401':
$ref: '#/components/responses/Unauthorized'
'429':
$ref: '#/components/responses/TooManyRequests'
/boats/{ticker}/prices:
get:
operationId: getBoatsHistoricalPrices
summary: Get BOATS overnight historical intraday prices for a ticker (beta)
tags:
- BOATS
externalDocs:
url: https://www.tiingo.com/documentation/boats
parameters:
- name: ticker
in: path
required: true
description: Ticker related to the asset.
schema:
type: string
- name: startDate
in: query
required: false
description: If startDate or endDate is not null, historical data will be queried. This filter limits metrics
to on or after the startDate (>=). Parameter must be in YYYY-MM-DD format. When both dates are omitted,
Tiingo returns the latest overnight BOAT
# --- truncated at 32 KB (109 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/tiingo/refs/heads/main/openapi/tiingo-openapi.yml