Skip to content
MyStocks Developers
API v1

API v1

Current stable contract

Versioning policyRelease changelog
Sandbox console

Get stock detail (NSE, NGX, JSE, etc.)

Pan-African Market Data & Intelligence

GET

/stocks/{symbol}

Get stock detail (NSE, NGX, JSE, etc.)

Sandbox availablegetStocks

Returns full delayed price and detail data for a single stock. Accepts exchange-qualified symbols (e.g. SCOM.KE for Safaricom PLC on the Nairobi Stock Exchange, DANGCEM.NG for Dangote Cement on the Nigerian Exchange Group, MTN.ZA on the Johannesburg Stock Exchange) or bare tickers (SCOM) when unambiguous.

Parameters

symbolstringpathRequired

Exchange-qualified ticker (e.g. SCOM.KE, DANGCEM.NG) or bare ticker.

Example: SCOM.KE

Headers

AuthorizationstringRequired

Bearer sk_sandbox_<your_key> for sandbox requests.

Response fields

idstring

Unique stock identifier.

Example: "SCOM.KE"

symbolstring

Exchange-qualified ticker symbol.

Example: "SCOM.KE"

namestring

Full company name.

Example: "Safaricom PLC"

slugstring | null

URL-safe identifier. Interchangeable with symbol.

Example: "safaricom"

exchangestring

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

Example: "NSE"

exchangeMicstring | null

ISO 10383 operating Market Identifier Code for the listing exchange.

Example: "XNAI"

currencystring

Local trading currency.

Example: "KES"

sectorstring | null

Example: "Telecommunications"

assetTypeSTOCK | ETF
listingStatusACTIVE | SUSPENDED | DELISTED
pricenumber | null

Latest price in local currency.

Example: 16.5

usdPricenumber | null

Latest price converted to USD at live spot rate.

Example: 0.1274

changenumber | null

Absolute price change from previous close.

Example: 0.25

changePctnumber | null

Percentage price change from previous close.

Example: 1.54

opennumber | null

Session opening price in local currency.

dayHighnumber | null

Intraday high in local currency.

dayLownumber | null

Intraday low in local currency.

volumeinteger | null

Current session trading volume.

previousClosenumber | null

Prior session closing price.

logoUrlstring | null

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

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

lastPriceUpdatestring | null
marketStatusstring

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

bidnumber | null

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

asknumber | null

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

dataFreshnessSecondsinteger | null

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

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.

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.

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.

dataQuality.asOfstring | nullRequired

Timestamp of the exchange observation, not the time the API response was generated.

dataQuality.ageSecondsinteger | nullRequired

Age of the price in seconds (now − asOf).

dataQuality.stalebooleanRequired

True when the price is older than two refresh intervals.

dataQuality.delayModeDELAYED | END_OF_DAYRequired

DELAYED — exchange-supplied data in the 15-minute-delayed latency class. END_OF_DAY — outside the window; this is the most recent close, not a live quote.

dataQuality.delayMinutesintegerRequired

Exchange feed latency class in minutes. This is distinct from the API refresh target.

Example: 15

dataQuality.refreshIntervalSecondsintegerRequired

Target interval between API ingestion refreshes during the published coverage window.

Example: 900

dataQuality.providermstocks | mansaRequired

MyStocks ingestion connector for this exchange feed. This field does not describe exchange licensing or partner entitlement.

dataQuality.disclaimerstringRequired

Plain-English statement of what this price is and is not.

Response codes

200Stock detail.
404Symbol not found.