Skip to content
MyStocks Developers
API v1

API v1

Current stable contract

Versioning policyRelease changelog
Sandbox console
Market Data API

Stocks

Delayed and historical price data for equities and ETFs across supported African exchanges — quotes, charts, news pulse, company fundamentals, canonical tickers, and curated market intelligence. All read-only and data-key safe.

Delayed and historical price data for equities and ETFs across all supported African exchanges. GET /stocks returns equity data; GET /etfs mirrors the same shape for ETFs. All price endpoints accept exchange-qualified symbols (SCOM.KE) and bare tickers (SCOM) when unambiguous.

Examples use the production base. Swap /api/v1/partner for /api/sandbox/v1/partner (and an sk_sandbox_ key) to run any of them against the sandbox. Both environments read the same exchange-supplied, 15-minute-delayed feed. The API refresh target is 900 seconds; inspect asOf and stale on every quote and never label the price real-time.

List stocks

GET /stocks

Returns a cursor-paginated catalogue of tradeable equities. Follow nextCursor while hasMore is true; narrow the catalogue with the filters below.

FieldTypeRequiredDescription
exchangestringNoFilter by exchange code: NSE, NGX, JSE, GSE, BRVM, ZSE, BSE, LUSE, EGX, DSE, USE, MSE, CSE, SEM.
sectorstringNoFilter by sector name (e.g. Banking, Telecommunications).
assetTypestringNoSTOCK or ETF.
searchstringNoFree-text match against symbol or company name.
limitintegerNoPage size. Default 50, maximum 100.
cursorstringNoOpaque cursor returned as nextCursor by the previous page.
curl "https://mystocks.africa/api/v1/partner/stocks?exchange=NSE" \
  -H "Authorization: Bearer pk_live_<key>"
{ "stocks": [{ "id": "SCOM.KE", "symbol": "SCOM.KE", "name": "Safaricom PLC", "exchange": "NSE", "currency": "KES", "sector": "Telecommunications", "assetType": "STOCK", "listingStatus": "ACTIVE", "price": 16.5, "usdPrice": 0.0126, "change": 0.25, "changePct": 1.54, "volume": 4210000, "lastPriceUpdate": "2026-06-04T09:45:00Z" }], "count": 1, "totalCount": null, "totalCountExact": false, "hasMore": true, "nextCursor": "opaque_cursor" }

Single quote

GET /stocks/{symbol}

Delayed quote for a single stock. Returns the full StockSummary shape plus open, dayHigh, dayLow, previousClose, volume, and a self-hosted logoUrl. The symbol path accepts exchange-qualified (SCOM.KE), slug (safaricom), or bare ticker (SCOM).

curl "https://mystocks.africa/api/v1/partner/stocks/DANGCEM.NG" \
  -H "Authorization: Bearer pk_live_<key>"
{ "id": "SCOM.KE", "symbol": "SCOM.KE", "name": "Safaricom PLC", "exchange": "NSE", "currency": "KES", "sector": "Telecommunications", "assetType": "STOCK", "listingStatus": "ACTIVE", "price": 16.5, "usdPrice": 0.0126, "change": 0.25, "changePct": 1.54, "open": 16.2, "dayHigh": 16.75, "dayLow": 16.1, "previousClose": 16.25, "volume": 4210000, "exchangeMic": "XNAI", "lastPriceUpdate": "2026-06-04T09:45:00Z" }

Price chart

GET /stocks/{symbol}/candles

The canonical stock-chart contract is GET /stocks/{symbol}/candles. Its response reports per-candle ohlcAvailable and series-level qualityStatus, qualityIssues, ohlcCoveragePct, volumeCoveragePct, and recommendedChartType. Use those fields to choose a candlestick, line, or unavailable state instead of assuming every listed symbol has complete OHLCV. It returns universal EOD closes plus OHLCV where available, in the listing currency with instrument and quality metadata. Intraday bucket requests can be sparse; inspect SPARSE_INTRADAY_COVERAGE and observed cadence.

FieldTypeRequiredDescription
intervalstringNo15m, 1h, 1d, 1w, or 1mo. Defaults to 1d.
fromdateNoInclusive YYYY-MM-DD start date.
todateNoInclusive YYYY-MM-DD end date.

The /stocks/{symbol}/chart and /history routes are deprecated compatibility shapes scheduled for removal on 2026-10-01. New integrations should not depend on their parallel-array schemas.

News pulse

GET /stocks/{symbol}/pulse

Recent news headlines, corporate announcements, and analyst sentiment for a stock. Use it to populate a "News" tab or price-movement explanation in your UI.

curl "https://mystocks.africa/api/v1/partner/stocks/SCOM.KE/pulse" \
  -H "Authorization: Bearer pk_live_<key>"
{ "symbol": "SCOM.KE", "pulse": [{ "id": "pulse_abc", "title": "Safaricom H1 profit up 14%", "summary": "Safaricom posted KES 23.4bn net profit for H1 2026, driven by M-PESA revenue growth.", "source": "MyStocks Africa", "publishedAt": "2026-06-03T08:00:00Z", "url": "https://mystocks.africa/market-intel/safaricom-h1-2026" }], "count": 1 }

Company profiles

GET /companies/{symbol}

Company fundamentals: description, sector, market cap, P/E ratio, EPS, 52-week high/low, and financial highlights. Also available as a list via GET /companies with ?exchange= and ?sector= filters.

curl "https://mystocks.africa/api/v1/partner/companies/MTN.ZA" \
  -H "Authorization: Bearer pk_live_<key>"
{ "symbol": "SCOM.KE", "name": "Safaricom PLC", "exchange": "NSE", "sector": "Telecommunications", "description": "Safaricom PLC is the largest telecoms provider in East Africa and pioneer of M-PESA mobile money.", "marketCap": 1360000000, "pe": 12.4, "eps": 1.33, "high52w": 19.8, "low52w": 12.5, "dividendYield": 6.2, "sharesOutstanding": 40065000000, "exchangeMic": "XNAI" }

GET /companies/{symbol}/news returns curated news and regulatory announcements (same shape as /pulse, sourced from exchange filings and newswires; supports ?limit= and ?cursor=).

GET /companies/tickers

Cursor-paginated canonical ticker list containing each symbol, slug, display name, and exchange. Use it to build a local symbol-resolution map or search index, following nextCursor until hasMore is false.

{ "tickers": [{ "symbol": "DANGCEM.NG", "slug": "dangote-cement", "name": "Dangote Cement", "exchange": "NGX" }, { "symbol": "EABL.KE", "slug": "eabl", "name": "East African Breweries", "exchange": "NSE" }], "count": 2, "totalCount": null, "totalCountExact": false, "hasMore": true, "nextCursor": "opaque_cursor" }

Market intelligence

GET /market-intel · GET /market-intel/{id}

Editorial market-intelligence articles and exchange announcements curated by the MyStocks research team. Filter the list by ?exchange=NGX or ?symbol=SCOM.KE (returns { articles, count }, newest first). The detail route resolves by document ID or URL slug and includes the full body field.

FieldTypeRequiredDescription
symbolstringNoFilter to articles tagged with a stock symbol, e.g. SCOM.KE.
exchangestringNoFilter articles by exchange code, e.g. NGX, NSE.
limitintegerNoMax results. Default 20, max 100.
curl "https://mystocks.africa/api/v1/partner/market-intel?exchange=NGX" \
  -H "Authorization: Bearer pk_live_<key>"
{ "articles": [{ "id": "intel_ngx_q2", "title": "NGX Q2 2026 Market Wrap", "summary": "NGX All-Share Index gained 4.2% in Q2 led by banking and cement sectors.", "slug": "ngx-q2-2026-market-wrap", "category": "macro", "exchange": "NGX", "source": "MyStocks Africa", "publishedAt": "2026-06-01T08:00:00Z" }], "count": 1 }

Was this page useful?

Your signal helps us tighten partner onboarding docs.

Send note

Last updated on

On this page