Market Data
Read-only market data across 14 African exchanges — ETFs, currency-correct price charts, 50-symbol batch quotes, exchange open/closed status, top movers, holiday calendars, the exchange directory, and EOD OHLCV candles. Data-key safe.
Everything here is read-only and data-key safe (pk_data_). Expand your product with ETFs listed
across African markets (e.g. Satrix on the JSE) and render rich price charts for both stocks and ETFs.
Examples use the production base https://mystocks.africa/api/v1/partner. To run any of them against
the sandbox, swap the base for https://mystocks.africa/api/sandbox/v1/partner and use your
sk_sandbox_ key.
ETFs catalog
Query listed ETFs via the /etfs endpoints. Responses carry fund-specific metadata such as expense
ratios, asset classes, geographical focus, risk levels, and top holdings.
Mapped price charts
Retrieve pre-computed, currency-correct charts via the /chart endpoints — no manual date-grid math.
Price values are returned in their native local trading currency for precise UI alignment,
alongside converted USD histories. Works for both stocks (GET /stocks/SCOM.KE/chart?period=1y) and
ETFs (GET /etfs/STXEME.ZA/chart?period=3m).
Batch quotes (up to 50 symbols)
Query up to 50 comma-separated stock or ETF symbols in a single roundtrip with ?symbols=A,B,C. Use
?symbol=X&exchange=Y for a single symbol — the response unwraps to a plain object in data and
returns 404 if not found. In batch mode, unresolved symbols are listed in not_found rather than
failing the whole request. Sending more than 50 returns 400 BATCH_LIMIT_EXCEEDED with max and
received. volume is always an integer — 0 for instruments with no trades today, never null.
Market status & holidays
GET /market/status tells you whether an exchange is currently open and when it next opens. Status is
computed from live exchange schedules and the holiday calendar; when an exchange is closed for a
public holiday the response includes a holiday reason string. Omit ?exchange= to receive status for
all 14 supported exchanges plus a top-level anyOpen boolean.
GET /market/holidays returns forward-looking closure dates for any exchange and range (from, to;
defaults to today through +12 months, max 2 years). Combine the two: status tells you if the market is
open right now, holidays gives you the calendar for scheduling logic.
Top movers
Top price-change movers for any exchange — sorted by change_pct descending (gainers) or ascending
(losers). Paginated via page and limit. Only instruments with a recorded changePct appear.
| Field | Type | Required | Description |
|---|---|---|---|
| exchange | string | Yes | Exchange code, e.g. NSE. |
| direction | string | No | gainers | losers (default: gainers). |
| limit | integer | No | 1–100, default 10. |
| page | integer | No | 1-based, default 1. |
The snake_case meta aliases (total_count, per_page, has_next) are deprecated — removal 2026-10-01.
Exchange directory
Returns all supported exchanges with trading hours, currencies, settlement cycles, and live
OPEN/CLOSED status in one call. mic is the ISO 10383 operating Market Identifier Code; settlement
summarizes the cycle (T+2 for EGX, T+3 for all others). The same mic appears on
GET /stocks/{symbol} and GET /companies/{symbol} as exchangeMic.
EOD OHLCV candles
End-of-day OHLCV candles for any symbol over a custom date range. open, high, and low are null
until intraday data becomes available for that session — check ohlc_available before rendering a
candlestick.
| Field | Type | Required | Description |
|---|---|---|---|
| symbol | string | Yes | Exchange-qualified symbol, e.g. SCOM.KE. |
| exchange | string | Yes | Exchange code, e.g. NSE. |
| from | string | No | Start date (YYYY-MM-DD, UTC). |
| to | string | No | End date (YYYY-MM-DD, UTC). |
| interval | string | No | Candle interval — currently only 1d supported. |
Every market endpoint lives under /market/* (quotes, movers, exchanges, ohlcv, status, settlement,
holidays). The old /market-data/* paths remain working aliases but are deprecated — use /market/*
in new code.