Historical stock candles
Pan-African Market Data & Intelligence
/stocks/{symbol}/candles
Historical stock candles
getStockCandlesReturns chart-ready OHLCV candles in the listing currency, sorted oldest-first. from and to define an inclusive date window; interval selects intraday bucket sizes or daily/weekly/monthly aggregation. African equity observations are exchange-supplied and 15-minute delayed. The API refresh target is 900 seconds during the published coverage window. This is pull-based market data—not a real-time or tick feed. Every listed African equity has EOD data for a line chart; complete reported OHLCV is instrument-dependent. Intraday candles are built only from observations captured after the intraday rollout; missing observations are never interpolated. The current delayed capture can be materially coarser than the requested 15m or 1h bucket, so inspect SPARSE_INTRADAY_COVERAGE, samplingCadenceSeconds, and intradayObservationCount before rendering an intraday chart. Older daily source rows may contain only close, or omit volume. Use each candle's volumeAvailable and the series coverage metadata before enabling volume-dependent indicators. Prices are raw and unadjusted for splits and dividends. MyStocks holds market-data rights for every supported exchange, so endpoint availability is not gated by missing exchange licences. Authenticated partners may display these candles to their end-users under their Partner Agreement. Raw-feed redistribution, bulk export, and standalone data products remain governed by that agreement and applicable downstream-use terms.
Parameters
symbolstringpathRequiredExchange-qualified ticker (recommended) or an unambiguous bare ticker.
Example: SCOM.KE
interval15m | 1h | 1d | 1w | 1moqueryCandle bucket interval. 15m and 1h never interpolate missing observations and may be sparse on the delayed capture; 1mo means one calendar month. 1m is not supported.
Example: 1d
fromstringqueryInclusive start date. Defaults to 30 calendar days ago.
Example: 2026-01-01
tostringqueryInclusive end date. Defaults to today.
Example: 2026-08-10
adjustmentrawqueryPrice-adjustment mode. Only raw, unadjusted exchange prices are currently available.
Example: raw
Headers
AuthorizationstringRequiredBearer sk_sandbox_<your_key> for sandbox requests.
Response fields
symbolstringRequiredExample: "SCOM.KE"
namestring | nullRequiredExample: "Safaricom PLC"
exchangestring | nullRequiredExample: "NSE"
currencystringRequiredExample: "KES"
interval15m | 1h | 1d | 1w | 1moRequiredadjustmentrawRequiredcandlesobject[]Requiredcandles[].timestampstringRequiredUTC start of the 15-minute, hourly, daily, ISO-week, or calendar-month bucket.
Example: "2026-08-03T00:00:00.000Z"
candles[].opennumberRequiredExample: 16.2
candles[].highnumberRequiredExample: 16.75
candles[].lownumberRequiredExample: 16.1
candles[].closenumberRequiredExample: 16.5
candles[].volumeintegerRequiredReported or sampled volume in the candle bucket. Check volumeAvailable before using it.
Example: 2450000
candles[].ohlcAvailablebooleanRequiredTrue when OHLC was reported or sampled; false when open/high/low are close-derived fallbacks.
candles[].volumeAvailablebooleanRequiredTrue when the source supplied volume for every observation in this candle.
metaobjectRequiredmeta.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.fromstringRequiredmeta.tostringRequiredmeta.countintegerRequiredmeta.sourcedelayed_eod | delayed_intradayRequiredmeta.asOfstring | nullRequiredTimestamp of the latest returned candle, or null when the range is empty.
meta.ohlcQualityreported | mixed | close_derived | sampledRequiredmeta.ohlcAvailablebooleanRequiredmeta.ohlcCoveragePctnumberRequiredmeta.flatCandlePctnumberRequiredmeta.volumeAvailablebooleanRequiredmeta.volumeCoveragePctnumberRequiredmeta.volumeStatusunavailable | partial | completeRequiredmeta.zeroVolumePctnumberRequiredmeta.qualityStatuscomplete | partial | degraded | unavailableRequiredmeta.qualityIssuesstring[]Requiredmeta.recommendedChartTypecandlestick | line | noneRequiredServer recommendation derived from price quality. Any missing OHLC, a flat-candle rate of 25% or more, or sparse intraday observations produces line; incomplete volume alone does not prevent candlesticks.
meta.samplingCadenceSecondsinteger | nullMedian observed same-session gap between source snapshots, not a promised target cadence.
Example: 14400
meta.intradayObservationCountinteger | nullSource observations available for the requested intraday window before bucketing.
meta.coverageStartsAtstring | nullmeta.adjustedfalseRequiredmeta.sandboxbooleanResponse codes
200Historical candles and data-quality metadata.400Invalid date, interval, adjustment, or interval-specific date range.401Unauthorized.404Symbol not found or ambiguous.