Get started
Prices & bars

An OHLC API that returns
clean bars, not guesswork.

Open, high, low, close and volume for stocks and ETFs listed in the U.S., Canada, the UK, France, the Netherlands and Australia, crypto and currency pairs, and index levels. Daily bars, 5-minute and hourly bars, raw or split- and dividend-adjusted, with exact decimal strings and one consistent schema.

Three bar endpoints

/v1/eod for daily bars, /v1/intraday for 5-minute and hourly bars, and /v1/bars for one cross-asset shape that covers both.

Raw or adjusted

Set adjustment to raw, split or total_return. Adjusted rows name their mode and factor set version.

Batch and whole market

Up to 100 symbols per request, or one date with no symbols for every listing that traded that session.

JSON, CSV or MCP

JSON by default, format=csv for spreadsheets, and the same bars as tools in Claude and other MCP clients.

What an OHLC bar contains in this API

Every bar carries open, high, low, close and volume as decimal strings, so nothing is rounded on the way to you. Alongside them come the exchange-qualified symbol (such as XNAS:AAPL), the exchange_mic, the currency_code and a stable instrument_id that survives ticker changes. trade_count is included where the source reports it and is otherwise null.

The time field depends on the endpoint. Daily bars carry a single date: the exchange-local trading date. Intraday bars carry datetime, the UTC instant the bar opens, so the first regular-session bar of a New York trading day in October is 13:30:00Z. Cross-asset bars carry window_start and window_end plus interval and session.

Credit costs from the x-credit-cost of each operation in the OpenAPI spec.
EndpointBarsTime fieldCreditsPlans
/v1/eodOne daily bar per exchange-local trading datedate5 per symbol; 500 for a whole-market dateAll plans (Free: AAPL, NVDA, JNJ, PEP, MSFT, SPY, QQQ)
/v1/intraday5-minute regular-session bars, 1h rolled up from them, kept about 30 daysdatetime25 per symbolPro and above
/v1/bars1d from the daily bars, 5m and 1h from the intraday bars, and 1m for crypto and currency pairs; stocks, ETFs, crypto and currency pairs, indices and bondswindow_start5 per symbol, 25 for intraday intervalsPro and above

Parameters that shape the bars

  • interval (intraday and cross-asset): 5m or 1h for exchange listings. 1m is not collected for them and returns 422 unsupported-interval rather than an empty page. /v1/bars also takes 1d. Weekly and monthly bars are not served; build them from daily bars.
  • session: regular for exchange listings, which have regular-session bars only. Crypto pairs trade around the clock in one session, so all selects the same bars.
  • adjustment: raw (the default), split or total_return. See adjusted stock prices for how each is built.
  • from and to: exchange-local trading dates as YYYY-MM-DD, both inclusive, so from equal to to selects one session. A timestamp returns 422 invalid-date.
  • order, limit (1 to 500, default 100) and cursor: copy meta.next_cursor into the next request until it is null.
  • as_of and symbol_at: a knowledge cutoff for point-in-time reads, and the date at which a ticker is resolved to a listing.

Batch requests and whole-market date queries

symbols takes a comma-separated list of up to 100 symbols. Bare tickers resolve to the listing that holds them, and every requested symbol appears either in data or in meta.errors with a code such as symbol-not-resolved or no-data, so a batch never fails silently. Credits are charged per distinct symbol.

For a market-wide snapshot of one session, pass date instead of from and to and omit symbols. /v1/eod returns one raw bar for every listing in your entitled markets that traded that day, in symbol order, optionally limited with exchanges. The request costs 500 credits and pages like any other.

Every NYSE and Nasdaq listing for one sessioncURL
curl 'https://api.ohlc.io/v1/eod?date=2026-10-02&exchanges=XNYS,XNAS&limit=500' \
  -H "Authorization: Bearer $OHLC_API_KEY"

Formats: JSON, CSV, files and AI assistants

  1. Call the REST endpoints for JSON envelopes of { data, meta }, with ETags for conditional requests.
  2. Add format=csv to load the same rows into Excel or Google Sheets. The next cursor moves to the X-Next-Cursor header.
  3. On Pro and above, download nightly flat files of every daily bar instead of paging through the market.
  4. Ask Claude or another MCP client: get_eod_prices, get_intraday_bars and get_bars are the same endpoints as tools.

Looking for how far back prices go rather than the bar format? Historical stock prices covers history depth by plan. Nothing here is real-time: daily bars are end-of-day, and intraday bars and quotes are delayed at least 15 minutes.

Daily OHLCV bars for two symbols

RequestcURL
curl 'https://api.ohlc.io/v1/eod?symbols=XNAS:AAPL,XNYS:JNJ&from=2026-10-02&to=2026-10-02' \
  -H "Authorization: Bearer $OHLC_API_KEY"
Response · Illustrative sampleJSON
{
  "data": [
    {
      "date": "2026-10-02",
      "security_id": "01M35H2KE2ZJHXFY5C3E7FPC66",
      "instrument_id": "01M35H2KE2ZJHXFY5C3E7FPC66",
      "symbol": "XNAS:AAPL",
      "exchange_mic": "XNAS",
      "currency_code": "USD",
      "open": "333.205",
      "high": "334.54",
      "low": "330.61",
      "close": "333.69",
      "volume": "31878433",
      "trade_count": 628338
    },
    {
      "date": "2026-10-02",
      "security_id": "01M35XSMJQGQD66XDX1R38FJDM",
      "instrument_id": "01M35XSMJQGQD66XDX1R38FJDM",
      "symbol": "XNYS:JNJ",
      "exchange_mic": "XNYS",
      "currency_code": "USD",
      "open": "259.38",
      "high": "259.38",
      "low": "255.12",
      "close": "256.03",
      "volume": "10939967",
      "trade_count": 166129
    }
  ],
  "meta": {
    "timezone": "UTC",
    "as_of": "2026-10-03T15:08:26.944354Z",
    "next_cursor": null
  }
}

Prices delayed 15 minutes · Illustrative sample data

Questions, answered.

What is an OHLC API?

An API that returns price bars: the open, high, low and close of each interval, usually with volume (OHLCV). OHLC serves daily bars from /v1/eod, intraday bars from /v1/intraday and both through /v1/bars.

Does the OHLC API include volume?

Yes. Every bar includes volume as a decimal string, plus trade_count where the source reports it. Split-adjusted rows scale volume so share counts stay comparable across a split.

Which intervals are available?

Daily for stocks, ETFs, crypto and currency pairs, indices and bonds; 5-minute and hourly for exchange listings and crypto and currency pairs, and 1-minute for crypto and currency pairs, kept for about 30 days. One-minute bars are not collected for exchange listings, and weekly and monthly bars are not served.

Is the data real-time?

No. Daily bars are published after the session, and intraday bars are delayed at least 15 minutes. OHLC does not sell real-time or SIP data. Historical trade prints for U.S. listings are available on Pro and above from the day after each session.

Can I get adjusted OHLC data?

Yes. Pass adjustment=split or adjustment=total_return on /v1/eod, /v1/intraday or /v1/bars. Whole-market date queries return raw prices only.

A little JSON.
A lot of possibility.

Explore the API