OHLCV price history (end-of-day candles)
Pan-African Market Data & Intelligence
/market/ohlcv
OHLCV price history (end-of-day candles)
getMarketOhlcvReturns end-of-day OHLCV (Open, High, Low, Close, Volume) candles for a stock over a date range. Formerly GET /market-data/ohlcv, which remains a supported (deprecated) alias. Current limitations: - Only interval=1d (end-of-day) is supported. Intraday intervals are not yet available. - open, high, and low fields are null until intraday data is ingested — only close and volume are populated. - Maximum date range per request: 365 days. Split larger requests. Candles are sorted oldest-first and filtered to the [from, to] window inclusive.
Parameters
symbolstringqueryRequiredExchange-qualified ticker (e.g. SCOM.KE) or bare ticker.
Example: SCOM.KE
exchangestringqueryRequiredExchange code (NSE, NGX, JSE, GSE, BRVM, ZSE, BSE, LUSE, EGX, DSE, USE, MSE, CSE, SEM).
Example: NSE
timeframe1D | sessionqueryCandle timeframe. 1D (default, end-of-day, always available) or session (coarse intraday — open/mid/close samples captured 3×/day; accumulates from when capture was enabled, see meta.coverageStartsAt). Finer intervals (1Min/5Min/15Min/1H) are not available on the delayed feed. The legacy interval=1d param remains a supported alias for 1D.
Example: 1D
interval1dqueryLegacy alias for timeframe. 1d maps to timeframe=1D. Prefer timeframe.
Example: 1d
fromstringqueryStart date inclusive (YYYY-MM-DD). Defaults to 30 days ago.
Example: 2026-01-01
tostringqueryEnd date inclusive (YYYY-MM-DD). Defaults to today.
Example: 2026-06-04
Headers
AuthorizationstringRequiredBearer sk_sandbox_<your_key> for sandbox requests.
Response fields
dataobject[]Candles sorted oldest-first. One entry per trading day with available price data.
data[].timestampstringISO 8601 start-of-day UTC timestamp for the candle period.
Example: "2026-01-02T00:00:00.000Z"
data[].opennumber | nullSession open price (local currency). null until intraday data is available.
data[].highnumber | nullSession high price (local currency). null until intraday data is available.
data[].lownumber | nullSession low price (local currency). null until intraday data is available.
data[].closenumber | nullEnd-of-day closing price in local currency.
Example: 16.5
data[].volumeintegerTrading volume for the session. 0 if not recorded.
Example: 4200000
metaobjectmeta.request_idstringUnique identifier for this request. Include in support tickets for tracing.
Example: "4f6e1a2b-3c4d-5e6f-7a8b-9c0d1e2f3a4b"
meta.timestampstringISO 8601 UTC timestamp of when the response was generated.
Example: "2026-06-04T10:23:45.123Z"
meta.exchangestring | nullExchange code the request was scoped to, when applicable.
Example: "NSE"
meta.symbolstring | nullTicker symbol the request was scoped to, when applicable.
Example: "SCOM.KE"
meta.timeframestringThe resolved timeframe (1D or session).
Example: "1D"
meta.intervalstringLegacy alias field. 1d for 1D, else the timeframe.
Example: "1d"
meta.coverageStartsAtstring | nullSession timeframe only — earliest date intraday samples exist for this symbol. Absent for 1D.
Example: "2026-07-15"
meta.fromstringExample: "2026-01-01"
meta.tostringExample: "2026-06-04"
meta.countintegerNumber of candles returned.
Example: 107
meta.ohlc_availablebooleanfalse until intraday OHLC data is ingested. When false, open/high/low are null.
Example: false
Response codes
200OHLCV candles for the requested symbol and date range.400Validation error (missing params, invalid date format, range > 365 days).401Unauthorized.404Symbol not found on the specified exchange.