Reference
Markets
Query African exchanges, tickers, historical market data, and FX rates through Africa API.
The 9 September 2026 audit found instrument and index observations for:
CSE: Casablanca, MoroccoNGX: NigeriaJSE: South Africa, sourced through Yahoo FinanceBRVM: the regional West African exchange
An exchange record does not establish populated or complete price coverage. History depth, fields and finality vary by instrument and observation. BRVM summary-page samples can be intraday. Index values are points. NGX also contains bonds and ETPs; request instrument_type=EQUITY when you need equities. FX is a separate dataset.
Response examples below illustrate the schema; they are not live coverage counts or price quotes.
FX sources include:
fx_usd_dailyfor broad USD-based daily rates across African currenciesbot_tz_fx_ratesfor official Bank of Tanzania-published TZS ratesbkam_ma_fx_ratesfor official Bank Al-Maghrib-published MAD rates for Moroccobceao_fx_ratesfor official BCEAO-published XOF rates used across WAEMU countriesbeac_fx_ratesfor official BEAC-published XAF rates used across CEMAC countries
Current WAEMU official FX coverage applies to:
- Benin
- Burkina Faso
- Côte d'Ivoire
- Guinea-Bissau
- Mali
- Niger
- Senegal
- Togo
Current CEMAC official FX coverage applies to:
- Cameroon
- Central African Republic
- Chad
- Congo
- Equatorial Guinea
- Gabon
List Exchanges
/v1/markets/exchangesReturns exchange records with ticker counts and latest trade dates.
country_codestringlimitintegercurl "https://api.africa-api.com/v1/markets/exchanges" \
-G \
-d "country_code=ng" \
-H "Authorization: Bearer $AFRICA_API_KEY"{
"data": [
{
"code": "NGX",
"name": "Nigerian Exchange",
"country_code": "ng",
"currency": "NGN",
"timezone": "Africa/Lagos",
"primary_index_name": "NGX All-Share Index",
"ticker_count": 189,
"latest_trade_date": "2026-03-06"
}
]
}List Tickers
/v1/markets/tickersReturns exchange-backed instruments.
exchange_codestringNGX or JSEcountry_codestringinstrument_typestringEQUITY, INDEX, BOND, or ETPqstringlimitintegercurl "https://api.africa-api.com/v1/markets/tickers" \
-G \
-d "exchange_code=JSE" \
-d "instrument_type=EQUITY" \
-d "limit=2" \
-H "Authorization: Bearer $AFRICA_API_KEY"{
"data": [
{
"exchange_code": "JSE",
"symbol": "AGL",
"security_name": "Anglo American plc",
"instrument_type": "EQUITY",
"sector": "Basic Materials",
"industry": "Metals & Mining",
"country_code": "za",
"latest_trade_date": "2026-03-06",
"latest_close_price": 512.35,
"latest_change_percent": 1.27
}
]
}Get Ticker Detail
/v1/markets/tickers/{exchange_code}/{symbol}curl "https://api.africa-api.com/v1/markets/tickers/NGX/MTNN" \
-H "Authorization: Bearer $AFRICA_API_KEY"Price units and observation status
Original close_price, OHLC fields and latest_close_price remain unchanged for compatibility. Do not label them with the exchange currency or divide every JSE value by 100. Instrument history items and latest_snapshot include price_metadata; ticker-list items include latest_price_metadata. These objects may be absent on older API responses.
| Metadata field | Meaning |
|---|---|
price_currency | ISO currency for normalized prices, or null when unresolved |
source_price_unit | Unit reported by the source, such as ZAc |
price_unit | minor_currency_unit, major_currency_unit, index_points or unknown |
price_scale | Source-to-normalized multiplier, or null |
normalized_open_price, normalized_high_price, normalized_low_price, normalized_close_price | Normalized values where source evidence supports the unit; missing values remain null |
price_basis | as_published or unknown; not a corporate-action-adjusted series |
observation_status | intraday, final or unknown |
source_url | Source provenance where recorded |
observed_at, retrieved_at | Source observation and retrieval timestamps where recorded; either may be null |
finality_reason | Explanation of the available finality evidence, when supplied |
For example, the audited JSE ABG observation for 8 September 2026 had a source value of 23,199 in ZAc. Its normalized value is ZAR 231.99 at scale 0.01. Index points and a source explicitly reporting ZAR use scale 1. Unknown-unit observations must remain explicitly unverified; absence of metadata does not justify a currency guess.
as_published describes the retained source value, not a verified adjustment methodology. Do not combine unresolved or differently based prices to calculate returns. A successful fetch and a recent retrieval timestamp do not establish a final close. Index history uses observation_metadata for status, source and timestamps; its levels remain points and are never currency-scaled.
The current contract does not supply complete corporate actions, dividends, financial statements or issuer disclosures.
Get Ticker History
/v1/markets/tickers/{exchange_code}/{symbol}/historycurl "https://api.africa-api.com/v1/markets/tickers/NGX/MTNN/history" \
-G \
-d "start_date=2026-02-01" \
-d "end_date=2026-03-06" \
-H "Authorization: Bearer $AFRICA_API_KEY"List Latest FX Rates
/v1/markets/fx-ratesReturns the latest known FX rates for the requested base currency.
Official central-bank sources listed above may appear alongside the broader daily FX source, depending on the requested base currency. Check each row's source_code and rate_date before comparing or displaying rates.
base_currencystringUSDquote_currenciesstringcountry_codestringlimitintegercurl "https://api.africa-api.com/v1/markets/fx-rates" \
-G \
-d "base_currency=USD" \
-d "quote_currencies=NGN,ZAR,KES" \
-H "Authorization: Bearer $AFRICA_API_KEY"{
"data": [
{
"source_code": "fx_usd_daily",
"base_currency": "USD",
"quote_currency": "NGN",
"country_codes": ["ng"],
"rate_date": "2026-03-07",
"rate": 1538.12,
"created_at": "2026-03-07T01:05:00Z"
}
]
}Get FX History
/v1/markets/fx-rates/{base_currency}/{quote_currency}/historycurl "https://api.africa-api.com/v1/markets/fx-rates/USD/NGN/history" \
-G \
-d "start_date=2026-02-01" \
-d "end_date=2026-03-07" \
-H "Authorization: Bearer $AFRICA_API_KEY"