Skip to content
MyStocks Developers
API v1

API v1

Current stable contract

Versioning policyRelease changelog
Sandbox console

Top gainers & losers

Pan-African Market Data & Intelligence

GET

/market/movers

Top gainers & losers

Sandbox availablegetMarketMovers

Returns 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

exchangestringqueryRequired

Exchange 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

limitintegerquery

Number of results to return. Default 10, max 100.

Example: 10

pageintegerquery

Example: 1

Headers

AuthorizationstringRequired

Bearer sk_sandbox_<your_key> for sandbox requests.

Response fields

dataobject[]
data[].idstring

Unique stock identifier.

Example: "SCOM.KE"

data[].symbolstring

Exchange-qualified ticker symbol.

Example: "SCOM.KE"

data[].namestring

Full company name.

Example: "Safaricom PLC"

data[].slugstring | null

URL-safe identifier. Interchangeable with symbol.

Example: "safaricom"

data[].exchangestring

Exchange code: NSE, NGX, JSE, GSE, BRVM, ZSE, BSE, LUSE, EGX, DSE, USE, MSE, CSE, SEM.

Example: "NSE"

data[].exchangeMicstring | null

ISO 10383 operating Market Identifier Code for the listing exchange.

Example: "XNAI"

data[].currencystring

Local trading currency.

Example: "KES"

data[].sectorstring | null

Example: "Telecommunications"

data[].assetTypeSTOCK | ETF
data[].listingStatusACTIVE | SUSPENDED | DELISTED
data[].pricenumber | null

Latest price in local currency.

Example: 16.5

data[].usdPricenumber | null

Latest price converted to USD at live spot rate.

Example: 0.1274

data[].changenumber | null

Absolute price change from previous close.

Example: 0.25

data[].changePctnumber | null

Percentage price change from previous close.

Example: 1.54

data[].opennumber | null

Session opening price in local currency.

data[].dayHighnumber | null

Intraday high in local currency.

data[].dayLownumber | null

Intraday low in local currency.

data[].volumeinteger | null

Current session trading volume.

data[].previousClosenumber | null

Prior session closing price.

data[].logoUrlstring | null

Self-hosted SVG logo. Safe to use as img src.

Example: "https://mystocks.africa/logos/scom-ke.svg"

data[].lastPriceUpdatestring | null
data[].marketStatusstring

Exchange state at quote time: OPEN or CLOSED. Present on /market/quotes and /market/movers responses.

data[].bidnumber | null

Best bid. Currently always null (no order-book depth in the data source).

data[].asknumber | null

Best ask. Currently always null (no order-book depth in the data source).

data[].dataFreshnessSecondsinteger | null

Seconds since the last price update. Present on /market/quotes and /market/movers responses.

data[].asOfstring | null

Timestamp 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[].staleboolean

True 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[].dataQualityobject

The 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.

metaobject
meta.request_idstring

Unique identifier for this request. Include in support tickets for tracing.

Example: "4f6e1a2b-3c4d-5e6f-7a8b-9c0d1e2f3a4b"

meta.timestampstring

ISO 8601 UTC timestamp of when the response was generated.

Example: "2026-06-04T10:23:45.123Z"

meta.exchangestring | null

Exchange code the request was scoped to, when applicable.

Example: "NSE"

meta.symbolstring | null

Ticker symbol the request was scoped to, when applicable.

Example: "SCOM.KE"

meta.directiongainers | losers
meta.pageinteger
meta.totalCountinteger

Total number of stocks with price change data on this exchange.

meta.perPageinteger
meta.hasNextboolean
meta.total_countinteger

Deprecated alias of totalCount — removed 2026-10-01.

meta.per_pageinteger

Deprecated alias of perPage — removed 2026-10-01.

meta.has_nextboolean

Deprecated alias of hasNext — removed 2026-10-01.

Response codes

200Top movers for the requested exchange and direction.
400Missing or invalid parameters.
401Unauthorized.