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, Morocco
  • NGX: Nigeria
  • JSE: South Africa, sourced through Yahoo Finance
  • BRVM: 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_daily for broad USD-based daily rates across African currencies
  • bot_tz_fx_rates for official Bank of Tanzania-published TZS rates
  • bkam_ma_fx_rates for official Bank Al-Maghrib-published MAD rates for Morocco
  • bceao_fx_rates for official BCEAO-published XOF rates used across WAEMU countries
  • beac_fx_rates for 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

GET/v1/markets/exchanges

Returns exchange records with ticker counts and latest trade dates.

country_codestring
Filter to one country
limitinteger
Maximum rows to return (1-500)
Request
curl "https://api.africa-api.com/v1/markets/exchanges" \
  -G \
  -d "country_code=ng" \
  -H "Authorization: Bearer $AFRICA_API_KEY"
Response
{
  "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

GET/v1/markets/tickers

Returns exchange-backed instruments.

exchange_codestring
Filter to one exchange, such as NGX or JSE
country_codestring
Filter to one country
instrument_typestring
Filter by type such as EQUITY, INDEX, BOND, or ETP
qstring
Search by symbol or security name
limitinteger
Maximum rows to return (1-500)
Request
curl "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"
Response
{
  "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

GET/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 fieldMeaning
price_currencyISO currency for normalized prices, or null when unresolved
source_price_unitUnit reported by the source, such as ZAc
price_unitminor_currency_unit, major_currency_unit, index_points or unknown
price_scaleSource-to-normalized multiplier, or null
normalized_open_price, normalized_high_price, normalized_low_price, normalized_close_priceNormalized values where source evidence supports the unit; missing values remain null
price_basisas_published or unknown; not a corporate-action-adjusted series
observation_statusintraday, final or unknown
source_urlSource provenance where recorded
observed_at, retrieved_atSource observation and retrieval timestamps where recorded; either may be null
finality_reasonExplanation 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

GET/v1/markets/tickers/{exchange_code}/{symbol}/history
curl "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

GET/v1/markets/fx-rates

Returns 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_currencystring
Base currency, default USD
quote_currenciesstring
Comma-separated quote currencies
country_codestring
Filter by associated country
limitinteger
Maximum rows to return (1-500)
Request
curl "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"
Response
{
  "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

GET/v1/markets/fx-rates/{base_currency}/{quote_currency}/history
curl "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"

On this page