African Market Data API

African market data for developers and AI systems.

This suite is the strongest wedge in Mansa API. It gives developers and agents one place to access live African exchange snapshots, equities, ETFs, indices, pan-African movers, local-currency prices, forex, and exchange metadata.

20
Live exchanges
20
Tracked exchanges
771+
Stocks tracked
Pan-Africa
Movers coverage
Why this suite matters

Pan-African movers in one endpoint instead of stitching multiple exchange feeds together.

Local-currency market data across Nigeria, Ghana, Kenya, South Africa, BRVM, Tanzania, and Zambia.

NGX ETF and index snapshots are database-backed, refreshed every 30 minutes, and ready for Mansa Markets ingestion.

Exchange metadata that helps agents reason about market hours, settlement cycles, and coverage.

Keyword direction

Use 'African Market Data API' as the primary phrase.

Work 'Nigeria Stock Exchange API' and 'African Stock Market API' into headings and body copy.

Keep NGX, GSE, NSE, JSE, and BRVM visible in the copy for long-tail discovery.

Endpoints

Live endpoints in the Markets suite.

View OpenAPI
GET/api/v1/markets/exchanges
Bearer auth

Return all tracked exchanges with latest snapshot metadata.

GET/api/v1/markets/exchanges/{exchange_code}
Bearer auth

Return a single exchange and its latest index snapshot.

GET/api/v1/markets/exchanges/{exchange_code}/stocks
Bearer auth

Return stocks for a single exchange.

Query params
limit - Maximum rows to return, capped at 200.
offset - Pagination offset.
sector - Optional sector filter.
sort_by - ticker, price, change_pct, or volume.
order - asc or desc.
GET/api/v1/markets/exchanges/{exchange_code}/stocks/{ticker}
Bearer auth

Return a single stock with quote and reference fields.

GET/api/v1/markets/exchanges/{exchange_code}/movers
Bearer auth

Return top gainers and losers for an exchange.

Query params
limit - Maximum movers to return, capped at 20.
type - gainers, losers, or both.
GET/api/v1/markets/exchanges/{exchange_code}/stocks/{ticker}/history
Bearer auth

Return price history for a stock over a chosen range.

Query params
range - Time window: 1D, 1W, 1M, 3M, 1Y, ALL. Defaults to 1M.
GET/api/v1/markets/exchanges/{exchange_code}/stocks/{ticker}/fundamentals
Bearer auth

Return fundamentals for a stock: market cap, sector, 52-week high/low, TTM dividend yield.

GET/api/v1/markets/search
Bearer auth

Search stocks by ticker or name across one or all African exchanges.

Query params
q - Search query, minimum 1 character.
exchange - Optional exchange code filter (e.g. NIGERIA, NGX).
limit - Maximum results, capped at 50. Defaults to 20.
GET/api/v1/markets/trending
Bearer auth

Return trending stocks by volume across all live African exchanges.

Query params
limit - Maximum results, capped at 50. Defaults to 10.
GET/api/v1/markets/movers/pan-african
Bearer auth

Return top movers across all live African exchanges.

Query params
limit - Maximum movers to return, capped at 20.
GET/api/v1/markets/indices
Bearer auth

Return latest tracked African market indices.

GET/api/v1/markets/indices/{index_code}/history
Bearer auth

Return daily historical values for a tracked African index. Depth varies by index: NGX ASI from 1996, JSE All Share from 1995, SEMDEX from 1990, EGX 30 and TUNINDEX from 1998, MASI from 2002, most frontier indices from 2015. Index codes are slug-insensitive (e.g. ngx-asi, jse-asi, egx-30, gse-ci, brvm-ci, masi, tunindex, nsx-oi).

Query params
from - Earliest trade date to include, YYYY-MM-DD.
to - Latest trade date to include, YYYY-MM-DD.
Example request
GET https://mansaapi.com/api/v1/markets/indices/ngx-asi/history?from=2020-01-01
Authorization: Bearer mansa_live_sk_your_key_here
Example JSON
{
  "success": true,
  "data": {
    "index_code": "NGX ASI",
    "name": "NGX All-Share Index",
    "country": "Nigeria",
    "currency": "NGN",
    "points": [
      { "date": "2020-01-02", "close": 26867.79, "volume": null }
    ]
  },
  "meta": { "count": 1592, "first_date": "2020-01-02", "last_date": "2026-06-09", "data_freshness": "daily" }
}
GET/api/v1/markets/exchanges/{exchange_code}/indices
Bearer auth

Return available index snapshots for a tracked African exchange. DSE returns TSI, DSEI, BI, IA, and CS when the DSE feed has current data.

Example request
GET https://mansaapi.com/api/v1/markets/exchanges/DSE/indices
Authorization: Bearer mansa_live_sk_your_key_here
Example JSON
{
  "success": true,
      "data": [
    {
      "code": "DSEI",
      "name": "DSE All Share Index",
      "exchange": "DSE",
      "currency": "TZS",
      "country": "Tanzania",
      "value": 2875.42,
      "change_pct": 0.18,
      "updated_at": "2026-06-08T10:30:00.000Z"
    }
  ],
  "meta": { "exchange": "DSE", "count": 1, "data_freshness": "30_minutes" }
}
GET/api/v1/markets/exchanges/{exchange_code}/indices/{code}
Bearer auth

Return a single benchmark or sector index by code or alias. For Tanzania, valid codes include TSI, DSEI, BI, IA, and CS.

Example request
GET https://mansaapi.com/api/v1/markets/exchanges/DSE/indices/DSEI
Authorization: Bearer mansa_live_sk_your_key_here
GET/api/v1/markets/exchanges/{exchange_code}/indices/{code}/history
Bearer auth

Return historical benchmark index points for a tracked exchange. Supports range=1D, 1W, 1M, 3M, 1Y, or ALL.

Query params
range - History window. One of 1D, 1W, 1M, 3M, 1Y, ALL. Defaults to 1M.
Example request
GET https://mansaapi.com/api/v1/markets/exchanges/DSE/indices/DSEI/history?range=1Y
Authorization: Bearer mansa_live_sk_your_key_here
Example JSON
{
  "success": true,
  "data": {
    "code": "DSEI",
    "name": "DSE All Share Index",
    "exchange": "DSE",
    "range": "1Y",
    "points": [
      { "t": "2026-06-08T10:30:00.000Z", "trade_date": "2026-06-08", "value": 2875.42, "change_pct": 0.18, "change_points": 5.14 }
    ]
  },
  "meta": { "exchange": "DSE", "currency": "TZS", "point_count": 1, "data_freshness": "30_minutes" }
}
GET/api/v1/markets/exchanges/NGX/indices
Bearer auth

Return the full NGX index universe snapshot. Database-backed, persisted in Supabase-backed snapshots, refreshed every 30 minutes, and consumed by Mansa Markets ingestion.

Example request
GET https://mansaapi.com/api/v1/markets/exchanges/NGX/indices
Authorization: Bearer mansa_live_sk_your_key_here
Example JSON
{
  "success": true,
  "source": "mansa_markets_supabase",
  "updated_at": "2026-05-20T10:30:00.000Z",
  "count": 21,
  "data": [
    {
      "code": "ASI",
      "slug": "asi",
      "name": "NGX ALL SHARE INDEX",
      "description": "The All-Share Index tracks the general market movement.",
      "currentPrice": 251635.42,
      "changePercentage": 0.57,
      "currentDateTime": "2026-05-20T10:30:00.000Z",
      "points": 7510,
      "weekChange": -0.11,
      "monthChange": 15.21,
      "yearChange": 128.06,
      "inceptionChange": 4677.59
    }
  ]
}
GET/api/v1/markets/exchanges/NGX/indices/{code}
Bearer auth

Return a single NGX index by code or slug. Valid lookups include ASI and ngx-bnk.

Example request
GET https://mansaapi.com/api/v1/markets/exchanges/NGX/indices/ngx-bnk
Authorization: Bearer mansa_live_sk_your_key_here
Example JSON
{
  "success": true,
  "source": "mansa_markets_supabase",
  "input": "ngx-bnk",
  "code": "NGXBNK",
  "slug": "ngx-bnk",
  "updated_at": "2026-05-20T10:30:00.000Z",
  "data": {
    "code": "NGXBNK",
    "name": "NGX BANKING",
    "currentPrice": 2394.25,
    "changePercentage": 0.17
  }
}
GET/api/v1/markets/exchanges/NGX/etfs
Bearer auth

Return the full NGX ETF universe snapshot. Database-backed, persisted in Supabase-backed snapshots, refreshed every 30 minutes, and consumed by Mansa Markets ingestion.

Example request
GET https://mansaapi.com/api/v1/markets/exchanges/NGX/etfs
Authorization: Bearer mansa_live_sk_your_key_here
Example JSON
{
  "success": true,
  "source": "mansa_markets_supabase",
  "updated_at": "2026-05-20T10:30:00.000Z",
  "count": 12,
  "data": [
    {
      "symbol": "NEWGOLD",
      "canonical_symbol": "NEWGOLD",
      "slug": "newgold",
      "name": "NewGold ETF",
      "issuer": "NewGold Issuer Limited",
      "isin": "NGNEWGOLD001",
      "description": "Exchange traded fund listed on NGX.",
      "instrument_type": "ETF",
      "exchange": "NGX",
      "currency": "NGN",
      "sector": "Exchange Traded Fund",
      "previous_close": 57500,
      "open": 57500,
      "high": 58000,
      "low": 57500,
      "close": 58000,
      "change": 500,
      "change_percentage": 0.87,
      "trades": 14,
      "volume": 1200,
      "value": 69600000,
      "detail_url": "https://ngxpulse.ng/etfs/newgold"
    }
  ]
}
GET/api/v1/markets/exchanges/NGX/etfs/{symbol}
Bearer auth

Return a single NGX ETF by canonical symbol. Example: NEWGOLD.

Example request
GET https://mansaapi.com/api/v1/markets/exchanges/NGX/etfs/NEWGOLD
Authorization: Bearer mansa_live_sk_your_key_here
Example JSON
{
  "success": true,
  "source": "mansa_markets_supabase",
  "input": "NEWGOLD",
  "canonical_symbol": "NEWGOLD",
  "updated_at": "2026-05-20T10:30:00.000Z",
  "data": {
    "symbol": "NEWGOLD",
    "name": "NewGold ETF",
    "close": 58000,
    "change_percentage": 0.87
  }
}
GET/api/v1/markets/exchanges/NGX/etfs/resolve/{symbol}
Bearer auth

Resolve legacy, shorthand, or vendor ETF tickers into canonical NGX ETF symbols used by the API.

Example request
GET https://mansaapi.com/api/v1/markets/exchanges/NGX/etfs/resolve/LOTUSHAL
Authorization: Bearer mansa_live_sk_your_key_here
Example JSON
{
  "success": true,
  "source": "mansa_markets_supabase",
  "input": "LOTUSHAL",
  "canonical_symbol": "LOTUSHAL15",
  "slug": "lotushal15",
  "name": "Lotus Halal Equity ETF"
}
GET/api/v1/markets/exchanges/{exchange_code}/dividends/{ticker}
Bearer auth

Return dividend history for a stock: ex-dividend dates, record dates, pay dates, and dividend-per-share amounts. NGX only. Premium tier.

Query params
limit - Maximum records to return. Omit for full history.
Example request
GET https://mansaapi.com/api/v1/markets/exchanges/NGX/dividends/GTCO
Authorization: Bearer mansa_live_sk_your_key_here
Example JSON
{
  "success": true,
  "symbol": "GTCO",
  "count": 8,
  "latest_ex_dividend_date": "2025-03-14",
  "history": [
    {
      "ex_dividend_date": "2025-03-14",
      "record_date": "2025-03-15",
      "pay_date": "2025-04-01",
      "dividend_per_share": 3.0,
      "currency": "NGN"
    }
  ]
}
GET/api/v1/markets/exchanges/{exchange_code}/disclosures
Bearer auth

Return NGX regulatory filings and company announcements: financial reports, corporate actions, price-sensitive notices. NGX only. Premium tier.

Query params
symbol - Filter by stock ticker, e.g. GTCO.
type - Filter by disclosure type, e.g. FinancialStatement.
company - Filter by company name substring.
limit - Maximum records to return.
Example request
GET https://mansaapi.com/api/v1/markets/exchanges/NGX/disclosures?symbol=GTCO&limit=5
Authorization: Bearer mansa_live_sk_your_key_here
GET/api/v1/markets/exchanges/{exchange_code}/insider-trades
Bearer auth

Return director and insider dealings parsed from NGX PDF disclosures: transaction type, volume, price, and post-trade holdings. NGX only. Premium tier.

Query params
symbol - Filter by stock ticker.
side - buy or sell.
days - Lookback window in days.
limit - Maximum records to return, capped at 500.
Example request
GET https://mansaapi.com/api/v1/markets/exchanges/NGX/insider-trades?days=30
Authorization: Bearer mansa_live_sk_your_key_here
Example JSON
{
  "success": true,
  "count": 12,
  "data": [
    {
      "symbol": "GTCO",
      "company": "Guaranty Trust Holding Company",
      "insider_name": "Segun Agbaje",
      "role": "Group CEO",
      "transaction_type": "buy",
      "volume": 500000,
      "price": 42.5,
      "total_value": 21250000,
      "dealing_date": "2026-05-15"
    }
  ],
  "stats": {
    "week_net_flow": 45000000,
    "week_total_buys": 60000000,
    "week_total_sells": 15000000
  }
}
GET/api/v1/markets/exchanges/{exchange_code}/recommendations
Bearer auth

Return weekly broker recommendations and per-ticker consensus (BUY/HOLD/SELL) compiled from Nigerian stockbroker research. NGX only. Premium tier.

Query params
week - Specific week key, e.g. 2026-W21. Defaults to latest.
weeks - Pass 'list' to return available week keys instead of recommendations.
Example request
GET https://mansaapi.com/api/v1/markets/exchanges/NGX/recommendations
Authorization: Bearer mansa_live_sk_your_key_here
Example JSON
{
  "success": true,
  "meta": { "week_key": "2026-W21", "week_date": "2026-05-19" },
  "stocks": [
    {
      "ticker": "GTCO",
      "company_name": "Guaranty Trust Holding Company",
      "last_price": 42.5,
      "consensus": { "action": "BUY", "buy": 3, "hold": 1, "sell": 0, "avg_target": 54.0, "avg_upside": 27.1 },
      "signals": [
        { "broker": "Cordros Securities", "action": "BUY", "target_price": 55.0 }
      ]
    }
  ]
}
GET/api/ngxdata/indices
Bearer auth

Legacy compatibility route for /api/v1/markets/exchanges/NGX/indices. Prefer the Mansa Markets namespace for new integrations.

GET/api/ngxdata/indices/{code}
Bearer auth

Legacy compatibility route for /api/v1/markets/exchanges/NGX/indices/{code}. Prefer the Mansa Markets namespace for new integrations.

GET/api/ngxdata/etfs
Bearer auth

Legacy compatibility route for /api/v1/markets/exchanges/NGX/etfs. Prefer the Mansa Markets namespace for new integrations.

GET/api/ngxdata/etfs/{symbol}
Bearer auth

Legacy compatibility route for /api/v1/markets/exchanges/NGX/etfs/{symbol}. Prefer the Mansa Markets namespace for new integrations.

GET/api/ngxdata/etfs/resolve/{symbol}
Bearer auth

Legacy compatibility route for /api/v1/markets/exchanges/NGX/etfs/resolve/{symbol}. Prefer the Mansa Markets namespace for new integrations.

GET/api/v1/markets/forex
Bearer auth

Return current forex rates available through Mansa Markets.

GET/api/v1/markets/commodities
Bearer auth

Return commodity prices relevant to African producers and traders.

GET/api/v1/markets/exchange-metadata
Bearer auth

Return exchange metadata such as market type, settlement cycle, and website.

GET/api/v1/markets/calendar/{exchange_code}/is-open
Bearer auth

Return whether an exchange is open right now, with next open/close timestamps. Free tier.

Example request
curl https://mansaapi.com/api/v1/markets/calendar/NGX/is-open \
  -H "Authorization: Bearer mansa_live_sk_..."
Example JSON
{
  "success": true,
  "data": {
    "exchange": "NGX",
    "is_open": true,
    "status": "open",
    "reason": "market_hours",
    "timezone": "Africa/Lagos",
    "local_time": "11:42",
    "local_date": "2026-06-11",
    "session": { "open": "09:00", "close": "16:00" },
    "trading_days": "Mon-Fri",
    "next_open": null,
    "next_close": "2026-06-11T13:30:00.000Z"
  },
  "meta": { "exchange": "NGX", "checked_at": "2026-06-11T10:42:00.000Z", "source": "mansa_api" }
}
GET/api/v1/markets/calendar/{exchange_code}
Bearer auth

Return the full trading calendar for an exchange: session times, timezone, trading days, settlement cycle, and public holidays for a year. Starter tier and above.

Query params
year - Calendar year for the holiday list (default: current year)
GET/api/v1/markets/exchanges/{exchange_code}/dividends-calendar
Bearer auth

Calendar-style dividends across all listed companies: ex-dividend, record, and pay dates with amounts. Filter by date range, symbol, or upcoming=true. NGX. Starter tier and above.

Query params
upcoming - true = only ex-dividend dates from today forward
from - Start date YYYY-MM-DD (default 90 days back)
to - End date YYYY-MM-DD
symbol - Filter to one ticker
limit - Rows to return (default 200, max 500)
GET/api/v1/markets/bonds/{country}
Bearer auth

Return listed bonds (government local, eurobond, sukuk, corporate) with latest price and yield to maturity. Professional tier and above.

Query params
type - Filter: govt_local | eurobond | sukuk | corporate
GET/api/v1/markets/yields/{country}/curve
Bearer auth

Return the current government yield curve: latest auction result per instrument and tenor. Professional tier and above.

GET/api/v1/markets/yields/{country}/tbills
Bearer auth

Return treasury bill auction results (stop rates, average yields, subscription), newest first. Professional tier and above.

Query params
limit - Rows to return (default 50, max 500)
GET/api/v1/markets/yields/{country}/auctions
Bearer auth

Return government debt auction history across instrument types. Professional tier and above.

Query params
type - Filter: tbill | bond | sukuk | cp
limit - Rows to return (default 100, max 600)
Related pages