Intraday bars

Intraday OHLCV bars of the regular session, kept for 30 days: older bars are deleted and there is no archive. A US listing's bars can be published during the session from a 15-minute-delayed minute-bar stream, each about 15 minutes after it closes, and are read again overnight from the end-of-day intraday source, which fills any the stream missed and decides where the two differ; other exchanges' bars are published overnight after the close. A listing whose bars the source posts late follows a session later; GET /v1/health reports per exchange how many listings have the newest closed session (coverage.latest_session) and turns partial or stale when they fall short 8 hours after the close. Crypto bars cover the leading pairs only, and each UTC day is read at 09:15 UTC the morning after it ends (again at 15:15 for a pair it left short), so the newest crypto bar is from the end of the previous UTC day, or of the day before that until about 09:30. They come from the provider's intraday feed, not the one behind the daily bars: their prices differ from the daily bar's by a fraction of a percent (0.1-0.2% measured in October 2026), so a day's minute high or low can fall outside its daily range, and their volume is in coins. The daily bar is the reference for a crypto pair's day. Currency pairs are collected at one minute for the majors and leading crosses only, each UTC day read at 03:20 UTC the morning after it ends; they carry no volume, and their bars match the daily bar. Indices, bonds and mutual funds have no intraday bars: a request for one returns no rows and names it in meta.errors as no-data. Exchange listings are collected as five-minute bars; 1h bars are rolled up from them on request, each session cut into hours from its open (for a US listing 9:30, 10:30, ..., 15:30 New York time, the last one shorter), with the first open, last close, extreme high and low and summed volume. Crypto and currency pairs serve the interval they are collected at and longer ones rolled up the same way. An interval a listing is not collected at returns 422 unsupported-interval rather than an empty page. Intraday bars do not sum to the daily bar of /v1/eod. The intraday source reports the regular session's five-minute bars from fewer trades than the consolidated daily bar counts: with all 78 bars of a session present, a liquid US stock's five-minute volumes added up to 66-77% of its daily volume over six sessions measured in 2026, and a daily open, high or low can lie outside the intraday range. Nothing outside the regular session is collected. Use /v1/eod for the session's official open, high, low, close and volume. Default order: requested symbol, then datetime descending (newest first). Select listings with symbols or instrument_ids, not both; order=desc returns each listing's rows newest first (the default) and order=asc oldest first. Requires intraday.read and an entitled market. An empty data array is a successful result. When none of the requested symbols resolves, the response is 404 symbol-not-resolved, whatever the size of the list; when at least one does, the others are reported in meta.errors.

GET/v1/intraday
Canonical

The recommended endpoint for this data. Also available as GET /v1/bars (cross-asset form).

Required capability
intraday.read
Data timing
US delayed 15+ minutes; other venues the next day
Credits
25 credits per symbol.
Live endpoint. Request examples query live data with your API key; response examples are illustrative. History and coverage vary by dataset and plan; see dataset coverage.

Parameters

limitintegeroptional · query
Maximum records per page, from 1 to 500; default 100.Default: 100
cursorstringoptional · query
Opaque cursor, expires after one hour. Keep all query parameters unchanged. Changes to entitlements can invalidate it.
If-None-Matchstringoptional · header
ETag from a previous response. Authorization is rechecked before returning 304, and a 304 costs no credits.
symbolsstringoptional · query
Comma-separated MIC:TICKER symbols (crypto pairs are CRYPTO:BTC-USD, currency pairs FOREX:EUR-USD, indices INDEX:GSPC, bonds BOND and the ISIN, such as BOND:US00037BAF94) or bare tickers, which resolve to the exchange listing that ticker; neither part is case-sensitive, and two spellings of one listing count as a repeated value. A bare ticker that names no listing as written is also read in the common vendor spellings: with an exchange suffix (RY.TO, SHEL.L, VOD.LSE, BHP.AX), ^GSPC for INDEX:GSPC, and EURUSD=X or EURUSD for FOREX:EUR-USD. At most 100, further limited by the effective plan and key scope. A symbol names the listing recorded under it at symbol_at; at a date before any ticker is recorded for a listing, the earliest ticker recorded for it selects it as well (see symbol_at). Supply symbols or instrument_ids.
instrument_idsstringoptional · query
Comma-separated stable instrument IDs (the instrument_id of each row, and of the research endpoints) instead of symbols; each selects its listing at any date, including history from before its earliest recorded ticker and listings that no longer trade. Rows carry the symbol the listing had at symbol_at, or where it had none then, its symbol at as_of, else the last one it carried by as_of, else its first. At most 100. Cannot be combined with symbols.
symbol_atstringoptional · query
Resolve symbols as they were assigned at the end of this UTC date (YYYY-MM-DD); defaults to as_of. Only listings the security master holds resolve: it was built in September 2026 and records delistings from then on, so most issuers delisted earlier, such as TWTR or SIVB, resolve at no date. A ticker names the listing that carries it at symbol_at, and every row of a from/to range carries that symbol, rows from before the listing took the ticker included: a ticker reused after its earlier holder delisted returns the new holder's older rows, so set symbol_at inside the range to name the listing that traded under the ticker then. Tickers are recorded only where there is evidence for them (for many listings from 2003, though prices start earlier), and none is asserted earlier. As a lookup convenience, a date before a listing's earliest recorded ticker still finds the listing by that ticker when no record contradicts it (no listing is recorded under the ticker by that date, and the listing has no earlier ticker): its rows carry the symbol as a label and meta.unrecorded_symbols lists it. A date before the listing's first row returns 200 with no-data, as a to before it does. A ticker another listing held, or one the listing was renamed from or to, returns 404 naming the date and the listing; instrument_ids select a listing at any date.
as_ofstringoptional · query
Knowledge cutoff as a UTC date (YYYY-MM-DD): the response reflects what was known by the end of that day. Defaults to now; cannot be in the future. A date from before the dataset's knowledge history returns 422 point-in-time-unavailable naming the earliest one, which GET /v1/datasets lists as earliest_as_of.
adjustmentstringoptional · query
raw (default) serves prices and volume as traded. split restates bars before each later split to the current share basis: prices are multiplied by old over new shares, as the exact fraction, and rounded half up to 6 decimal places, and volume is multiplied by new over old shares and rounded half up to whole shares. total_return also multiplies prices by the dividend factors of later cash dividends, to the same 6 places. Adjusted bars carry adjustment and factor_set_version. Listings whose corporate actions are not collected (crypto and currency pairs, OTC) return 422 adjustment-unsupported for anything but raw, as do indices, whose levels already reflect their members' corporate actions, and bonds. Each mode needs its own validated factor set, else 503 adjustments-unavailable: split never waits on a dividend, while total_return is unavailable for a dividend it cannot value (one detaching on the day of a split, or not below that close) and, for rows before a dividend that just detached, until that close is in.

rawsplittotal_return

Default: raw
fromstringoptional · query
First exchange-local trading date (YYYY-MM-DD) whose bars to include, from that exchange's midnight.
tostringoptional · query
Last exchange-local trading date (YYYY-MM-DD) whose bars to include, through that exchange's midnight; on or after from, so from equal to to selects one day.
orderstringoptional · query
Direction on datetime, desc (default, newest first) or asc; ties keep their internal order in the same direction. The cursor is bound to it.

ascdesc

Default: desc
intervalstringrequired · query
Required, with session; a request without either returns 422 interval-required. Bar length. Exchange listings are collected as five-minute bars, so they serve 5m and 1h (rolled up from 5m); 1m is served only by listings collected at one minute, which today are crypto and currency pairs, and returns 422 unsupported-interval for the others.

5m1m1h

sessionstringrequired · query
Required, with interval; a request without either returns 422 interval-required. regular selects the regular trading session, the only one collected for exchange listings: there are no pre-market or after-hours bars. all is every session of a continuous market: a crypto or currency pair trades in one session a UTC day, so it selects the same bars as regular there, and returns 422 unsupported-session for exchange listings.

regularall

formatstringoptional · query
Response format. csv returns the data rows with a header row, for spreadsheet functions such as IMPORTDATA; nested fields become dotted columns and lists one JSON array cell, the next page cursor is returned in X-Next-Cursor and meta.errors in X-Meta-Errors. A result without rows is the header row alone, listing the documented fields of a row. Default json, or csv when format is omitted and the Accept header ranks text/csv above JSON; a format the Accept header does not admit returns 406 not-acceptable.

jsoncsv

Response fields

Returns data as an array of records. All example values are illustrative.

datetimestring
Instant the bar opens.
security_idstring
Deprecated: the same stable public ID as instrument_id, which replaces it.Being superseded by instrument_id, which carries the same value. Read instrument_id where present; security_id remains for compatibility.
instrument_idstring
Stable public instrument ID, independent of ticker; the instrument_id of the research endpoints.
symbolstring
symbol
exchange_micstring
exchange mic
currency_codestring
currency code
openstring · null
Exact decimal string. Never a JSON floating point number.
highstring · null
Exact decimal string. Never a JSON floating point number.
lowstring · null
Exact decimal string. Never a JSON floating point number.
closestring · null
Exact decimal string. Never a JSON floating point number.
volumestring · null
Shares traded, always a whole number for exchange listings: a source that counts fractional-share executions is rounded half up to whole shares. A US daily bar carries the consolidated tape's volume (every print, fractional shares included) wherever the consolidated-tape source has the session and its open, high, low and close agree with the bar's, and the end-of-day provider's volume otherwise. For crypto pairs (the CRYPTO venue), a daily bar's volume is the value traded in the quote currency, US dollars, not coins; an intraday bar's is the number of coins traded, from the provider's separate intraday aggregation, so intraday volumes neither are dollars nor add up to the daily bar's. Null on any crypto bar whose price moved while the source reported no volume (the volume is unknown, not zero). Always null for currency pairs (the FOREX venue): the over-the-counter market reports no traded amount; for indices (the INDEX venue), whose level is not traded; and for bonds (the BOND venue), whose source reports no traded amount. Exact decimal string.
trade_countinteger · null
Number of trades in the bar; null when no source of the bar counts them, which is not missing data. Only the consolidated-tape source of daily bars counts trades: a daily bar carries its count, with its volume, where that source has the session and its prices agree with the bar's, which is from the 2026-10-02 session on for the US-listed symbols that source covers. Most daily bars before that session, every intraday bar, crypto and currency pairs, indices, mutual funds and OTC listings are null.
adjustmentstring
Present only for adjusted prices.

splittotal_return

factor_set_versioninteger
Present only for adjusted prices.

Response metadata

Responses include meta.timezone. Dataset responses include next_cursor; health and exports have their own metadata. Request tracing uses the X-Request-ID header.

Read the shared data conventions

When something goes wrong

An empty data: [] is a successful query with no matching records. Invalid symbols, permissions and malformed parameters produce an RFC 9457 problem with an actionable detail.

Error codes & retry guidance

Plans

Requires intraday.read. Access, recency and history depth come from the plan definitions the API enforces.

PlanAccessRecencyHistory
FreeNot included——
DeveloperNot included——
ProIncludedUS delayed 15+ minutes; other venues the next day15 years
CommercialIncludedUS delayed 15+ minutes; other venues the next dayFull history
ScaleIncludedUS delayed 15+ minutes; other venues the next dayFull history

History is how far back a plan may request. How far records actually go for a symbol is history_from in dataset coverage. Nothing is real-time. Compare plans