Market Data API FAQs
Common questions about MyStocks market-data freshness, history, symbols, keys, and redistribution.
Explore endpoints
1 of 1/stocks
List stocks (NSE, NGX, JSE, GSE, BRVM, etc.)
Full endpoint documentationlistStocksReturns the full tradeable stock and ETF universe across all supported African exchanges. Provides exchange-supplied, 15-minute-delayed stock price data. The API refresh target is 900 seconds during the published coverage window. These are not real-time prices. MyStocks holds full data rights for every supported exchange. - Nairobi Stock Exchange (NSE) in Kenya (KES) - Nigerian Exchange Group (NGX) in Nigeria (NGN) - Johannesburg Stock Exchange (JSE) in South Africa (ZAR) - Ghana Stock Exchange (GSE) in Ghana (GHS) - BRVM serving 8 West African French-speaking countries (XOF) - LuSE (Zambia), USE (Uganda), BSE (Botswana), DSE (Tanzania), ZSE (Zimbabwe), EGX (Egypt), MSE (Malawi), CSE (Morocco), and SEM (Mauritius). Filter by exchange, sector, asset type, or free-text search. Results are cursor-paginated to keep catalogue responses fast as market coverage grows. Use nextCursor while hasMore is true.
Parameters
exchangestringqueryFilter by exchange code. One of: NSE, NGX, JSE, GSE, BRVM, ZSE, BSE, LUSE, EGX, DSE, USE, MSE, CSE, SEM.
Example: NSE
sectorstringqueryFilter by GICS sector name.
Example: Telecommunications
assetTypeSTOCK | ETFqueryFilter to stocks or ETFs.
searchstringqueryFree-text match against symbol or company name.
Example: safaricom
limitintegerqueryPage size. Defaults to 50 and is capped at 200.
Example: 50
cursorstringqueryContinuation cursor returned as nextCursor by the previous page.
Headers
AuthorizationstringRequiredBearer sk_sandbox_<your_key> for sandbox requests.
Response fields
stocksobject[]stocks[].idstringUnique stock identifier.
Example: "SCOM.KE"
stocks[].symbolstringExchange-qualified ticker symbol.
Example: "SCOM.KE"
stocks[].namestringFull company name.
Example: "Safaricom PLC"
stocks[].slugstring | nullURL-safe identifier. Interchangeable with symbol.
Example: "safaricom"
stocks[].exchangestringExchange code: NSE, NGX, JSE, GSE, BRVM, ZSE, BSE, LUSE, EGX, DSE, USE, MSE, CSE, SEM.
Example: "NSE"
stocks[].exchangeMicstring | nullISO 10383 operating Market Identifier Code for the listing exchange.
Example: "XNAI"
stocks[].currencystringLocal trading currency.
Example: "KES"
stocks[].sectorstring | nullExample: "Telecommunications"
stocks[].assetTypeSTOCK | ETFstocks[].listingStatusACTIVE | SUSPENDED | DELISTEDstocks[].pricenumber | nullLatest price in local currency.
Example: 16.5
stocks[].usdPricenumber | nullLatest price converted to USD at live spot rate.
Example: 0.1274
stocks[].changenumber | nullAbsolute price change from previous close.
Example: 0.25
stocks[].changePctnumber | nullPercentage price change from previous close.
Example: 1.54
stocks[].opennumber | nullSession opening price in local currency.
stocks[].dayHighnumber | nullIntraday high in local currency.
stocks[].dayLownumber | nullIntraday low in local currency.
stocks[].volumeinteger | nullCurrent session trading volume.
stocks[].previousClosenumber | nullPrior session closing price.
stocks[].logoUrlstring | nullSelf-hosted SVG logo. Safe to use as img src.
Example: "https://mystocks.africa/logos/scom-ke.svg"
stocks[].lastPriceUpdatestring | nullstocks[].marketStatusstringExchange state at quote time: OPEN or CLOSED. Present on /market/quotes and /market/movers responses.
stocks[].bidnumber | nullBest bid. Currently always null (no order-book depth in the data source).
stocks[].asknumber | nullBest ask. Currently always null (no order-book depth in the data source).
stocks[].dataFreshnessSecondsinteger | nullSeconds since the last price update. Present on /market/quotes and /market/movers responses.
stocks[].asOfstring | nullTimestamp of the exchange observation — NOT when the API answered. African equity data is 15-minute delayed and the API refresh target is 900 seconds, so display and evaluate freshness against this value.
stocks[].stalebooleanTrue when the price is older than two refresh intervals (30 minutes). The feed for this symbol is genuinely behind — do not trust the price for pricing a trade.
stocks[].dataQualityobjectThe published market-data freshness contract. African equity quotes are supplied by the exchanges on a 15-minute-delayed basis, not in real time. MyStocks holds full exchange data rights. The API refresh target is 900 seconds during the published coverage window, with an end-of-day pass after market close.
countintegerNumber of stocks in this page.
totalCountinteger | nullExact matching count when known; null for bounded cursor scans.
hasMorebooleannextCursorstringResponse codes
200List of stocks.Are prices tick-by-tick?
No. Partner market data is pull-based and refreshes according to the documented market-data cadence. Events and SSE are not a tick stream.
African equity quotes are supplied by the exchanges on a 15-minute-delayed basis. MyStocks targets
a 15-minute API refresh cadence during the published coverage window. Read asOf on every response;
do not describe the value as live or real-time.
Does the 15-minute delay mean MyStocks lacks exchange data rights?
No. MyStocks holds full market-data rights for every supported exchange. Fifteen-minute delay is the latency class of the exchange-supplied feed. It is not a licensing or entitlement gap.
Can every African stock render a chart?
Yes, every listed African equity has EOD data for a line chart. Not every instrument has complete
reported OHLCV. Use /stocks/{symbol}/candles and follow meta.recommendedChartType; show
candlesticks only when the response recommends them, otherwise use the EOD close line.
How do I identify a symbol?
Use the canonical SYMBOL.EXCHANGE value returned by GET /stocks and do not infer exchange from a company name.
Does a data key allow trading?
No. Data keys are read-only and limited to market-data routes.
Is historical depth identical for every exchange?
No. History depth varies by exchange and instrument. Inspect historyConfidence and treat missing history as a data characteristic, not a zero-price series.
May I redistribute the data?
Only within the permissions and attribution requirements in Data Licensing.
Was this page useful?
Your signal helps us tighten partner onboarding docs.
Last updated on