List historical stock prices
Return a cursor-paginated series of daily prices for one supported security
identifier. Prices are unadjusted by default: every open, high, low,
and close is exactly what traded on the day, ignoring later corporate actions.
Pass adjustment to restate them in current terms.
/v3.0.0/stock-prices/{identifier}Plan Access
Free
(Your plan)
Individual
$29/mo
Professional
$89/mo
Plan History
Free
(Your plan)
2 years
Individual
$29/mo
5 years
Professional
$89/mo
All available
curl "https://api.roic.ai/v3.0.0/stock-prices/NASDAQ:AAPL?apikey=YOUR_API_KEY&date.gte=2025-01-01&date.lt=2026-01-01&order=asc"{
"data": [
{
"date": "2026-07-17",
"open": 210.61,
"high": 213.34,
"low": 209.85,
"close": 212.41,
"volume": 48923700
}
],
"symbol": "NASDAQ:AAPL",
"currency": "USD",
"next_page_url": null,
"previous_page_url": null
}Parameters
Path parameters
identifierstringrequiredA ticker ID, an exchange and symbol separated by a colon (e.g. NASDAQ:AAPL), or a FIGI.
NASDAQ:AAPLtkr_cO46h8pgSu9QqyBBG000B9XRY4Query parameters
datestringoptionalPass a YYYY-MM-DD date directly for an exact trading-date match. For a range, combine the modifiers below, for example, date.gte=2025-01-01&date.lt=2026-01-01.
+ Show filter modifiers- Hide filter modifiers
date.gtestringReturn prices whose date is greater than or equal to the given date.
date.gtstringReturn prices whose date is strictly greater than the given date.
date.ltestringReturn prices whose date is less than or equal to the given date.
date.ltstringReturn prices whose date is strictly less than the given date.
adjustmentstringoptionalHow OHLC prices are restated in current terms. none returns prices exactly as they traded on the day. splits restates them for later capital actions: stock splits, reverse splits, spin-offs and special distributions. total_return restates for those capital actions and for ordinary cash dividends. Volume is always the raw session volume.
noneValues: nonesplitstotal_returnorderstringoptionalSort by trading date (date).
descValues: ascdesclimitintegeroptionalMaximum number of resources to return.
250Min: 1Max: 1000pagestringoptionalOpaque page token from a previous response. Follow the returned page URL when possible.
Response
A page covers one ticker, so the response states symbol and currency once on
the envelope, next to the page URLs, and each item in data is one daily price
identified by its date. Both envelope fields are present even when data is
empty, so a filtered-out page still tells you what you asked for.
By default the open, high, low, and close are unadjusted, matching the
prices printed on the exchange that day. When you request an adjustment, those
same four fields are restated for every subsequent qualifying event, so a
continuous series is comparable across them. volume is always the raw session
volume.
Response fields
dataarray of objectsArray of daily price resources for the current page.
+ Show child attributes- Hide child attributes
datestringThe trading day the prices refer to, in YYYY-MM-DD format.
opennumberPrice of the first trade of the regular session, in currency units. Unadjusted unless you pass adjustment.
highnumberHighest price traded during the session. Unadjusted unless you pass adjustment.
lownumberLowest price traded during the session. Unadjusted unless you pass adjustment.
closenumberPrice of the last trade of the regular session. Unadjusted unless you pass adjustment.
volumenumberTotal number of shares traded during the session.
symbolstringQualified symbol every quote in data belongs to, e.g. NASDAQ:AAPL. A page covers one ticker, so the symbol is stated once here instead of on every quote. Present even when data is empty.
currencystringISO 4217 code every quote in data is priced in, e.g. USD. Matches the ticker's trading currency, and a ticker is only ever quoted in one currency. null when the page carries no priced quote.
next_page_urlnullableURL of the next page of results, or null when there are no more pages. Request it unchanged to continue paging.
previous_page_urlnullableURL of the previous page of results, or null on the first page.
Examples
Combine the filters below to answer common questions. Each request is runnable.
The most recent daily prices for one company, unadjusted:
curl "https://api.roic.ai/v3.0.0/stock-prices/NASDAQ:AAPL?apikey=YOUR_API_KEY&order=desc&limit=10"Prices from one exact trading day:
curl "https://api.roic.ai/v3.0.0/stock-prices/NASDAQ:AAPL?apikey=YOUR_API_KEY&date=2025-09-30"One year of prices in ascending date order, using a date.gte=2025-01-01 lower
bound and a date.lt=2026-01-01 upper bound:
curl "https://api.roic.ai/v3.0.0/stock-prices/NASDAQ:AAPL?apikey=YOUR_API_KEY&date.gte=2025-01-01&date.lt=2026-01-01&order=asc"A window spanning Apple's 4:1 split of 31 August 2020, restated for capital
actions with adjustment=splits. The 28 August close reads 124.8075 instead
of the 499.23 that printed on the day, so the series stays continuous across
the split:
curl "https://api.roic.ai/v3.0.0/stock-prices/NASDAQ:AAPL?apikey=YOUR_API_KEY&date.gte=2020-08-26&date.lte=2020-09-02&adjustment=splits"The same window with adjustment=total_return, folding cash dividends in as
well. That same close reads 121.0600, the remaining 3% being every dividend
Apple has paid since:
curl "https://api.roic.ai/v3.0.0/stock-prices/NASDAQ:AAPL?apikey=YOUR_API_KEY&date.gte=2020-08-26&date.lte=2020-09-02&adjustment=total_return"