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.

GET/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

Request
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"
Response
200 OK
{
  "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

identifierstringrequired

A ticker ID, an exchange and symbol separated by a colon (e.g. NASDAQ:AAPL), or a FIGI.

Examples: NASDAQ:AAPLtkr_cO46h8pgSu9QqyBBG000B9XRY4

Query parameters

datestringoptional

Pass 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
date.gtestring

Return prices whose date is greater than or equal to the given date.

date.gtstring

Return prices whose date is strictly greater than the given date.

date.ltestring

Return prices whose date is less than or equal to the given date.

date.ltstring

Return prices whose date is strictly less than the given date.

adjustmentstringoptional

How 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.

Default: noneValues: nonesplitstotal_return
orderstringoptional

Sort by trading date (date).

Default: descValues: ascdesc
limitintegeroptional

Maximum number of resources to return.

Default: 250Min: 1Max: 1000
pagestringoptional

Opaque 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 objects

Array of daily price resources for the current page.

+ Show child attributes
datestring

The trading day the prices refer to, in YYYY-MM-DD format.

opennumber

Price of the first trade of the regular session, in currency units. Unadjusted unless you pass adjustment.

highnumber

Highest price traded during the session. Unadjusted unless you pass adjustment.

lownumber

Lowest price traded during the session. Unadjusted unless you pass adjustment.

closenumber

Price of the last trade of the regular session. Unadjusted unless you pass adjustment.

volumenumber

Total number of shares traded during the session.

symbolstring

Qualified 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.

currencystring

ISO 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_urlnullable

URL of the next page of results, or null when there are no more pages. Request it unchanged to continue paging.

previous_page_urlnullable

URL 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"