Top gainers & losers
Pan-African Market Data & Intelligence
/market/movers
Top gainers & losers
getMarketMoversReturns the top price movers (gainers or losers) for a given exchange, sorted by percentage change. Results are paginated (meta uses camelCase totalCount/perPage/hasNext; the snake_case aliases are deprecated, removal 2026-10-01). Also available at GET /market-data/movers (deprecated alias, identical handler).
Parameters
exchangestringqueryRequiredExchange code (NSE, NGX, JSE, GSE, BRVM, ZSE, BSE, LUSE, EGX, DSE, USE, MSE, CSE, SEM).
Example: NSE
directiongainers | losersquery"gainers" for top price increases, "losers" for top price decreases. Default: gainers.
Example: gainers
limitintegerqueryNumber of results to return. Default 10, max 100.
Example: 10
pageintegerqueryExample: 1
Headers
AuthorizationstringRequiredBearer sk_sandbox_<your_key> for sandbox requests.
Response fields
dataobject[]data[].idstringUnique stock identifier.
Example: "SCOM.KE"
data[].symbolstringExchange-qualified ticker symbol.
Example: "SCOM.KE"
data[].namestringFull company name.
Example: "Safaricom PLC"
data[].slugstring | nullURL-safe identifier. Interchangeable with symbol.
Example: "safaricom"
data[].exchangestringExchange code: NSE, NGX, JSE, GSE, BRVM, ZSE, BSE, LUSE, EGX, DSE, USE, MSE, CSE, SEM.
Example: "NSE"
data[].exchangeMicstring | nullISO 10383 operating Market Identifier Code for the listing exchange.
Example: "XNAI"
data[].currencystringLocal trading currency.
Example: "KES"
data[].sectorstring | nullExample: "Telecommunications"
data[].assetTypeSTOCK | ETFdata[].listingStatusACTIVE | SUSPENDED | DELISTEDdata[].pricenumber | nullLatest price in local currency.
Example: 16.5
data[].usdPricenumber | nullLatest price converted to USD at live spot rate.
Example: 0.1274
data[].changenumber | nullAbsolute price change from previous close.
Example: 0.25
data[].changePctnumber | nullPercentage price change from previous close.
Example: 1.54
data[].opennumber | nullSession opening price in local currency.
data[].dayHighnumber | nullIntraday high in local currency.
data[].dayLownumber | nullIntraday low in local currency.
data[].volumeinteger | nullCurrent session trading volume.
data[].previousClosenumber | nullPrior session closing price.
data[].logoUrlstring | nullSelf-hosted SVG logo. Safe to use as img src.
Example: "https://mystocks.africa/logos/scom-ke.svg"
data[].lastPriceUpdatestring | nulldata[].marketStatusstringExchange state at quote time: OPEN or CLOSED. Present on /market/quotes and /market/movers responses.
data[].bidnumber | nullBest bid. Currently always null (no order-book depth in the data source).
data[].asknumber | nullBest ask. Currently always null (no order-book depth in the data source).
data[].dataFreshnessSecondsinteger | nullSeconds since the last price update. Present on /market/quotes and /market/movers responses.
data[].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.
data[].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.
data[].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.
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.directiongainers | losersmeta.pageintegermeta.totalCountintegerTotal number of stocks with price change data on this exchange.
meta.perPageintegermeta.hasNextbooleanmeta.total_countintegerDeprecated alias of totalCount — removed 2026-10-01.
meta.per_pageintegerDeprecated alias of perPage — removed 2026-10-01.
meta.has_nextbooleanDeprecated alias of hasNext — removed 2026-10-01.
Response codes
200Top movers for the requested exchange and direction.400Missing or invalid parameters.401Unauthorized.