Skip to main content
Use GET /v1/market-data/etfs for current NGX exchange-traded fund prices and trading fields. Use the existing GET /v1/companies/{company_ref}/chart route for stored daily history. Each listed ETF is a fund linked to a searchable company record. The snapshot response provides both IDs, while company charts accept the same ETF ticker used by the market-data route. You do not need a separate chart integration for funds.

Request ETF snapshots

Omit tickers to return every supported NGX ETF:
Repeat tickers to return a subset:
Ticker matching is case-insensitive. An unknown filter ticker returns 422 unknown_tickers; Rangler does not return an empty placeholder with 200 OK. The response is ordered by ticker:
percentage_change is fractional: 0.05 means 5%. A field is null when no safe current value is available.

Request an ETF chart

Pass the ETF ticker to the company chart route. An unknown ticker returns 404.
The chart route supports the same ranges and formats as company charts:
  • period: 7d, 1w, 30d, 1m, 90d, 6m, ytd, 1y, 5y, or max
  • from and to: inclusive ISO dates; from overrides period
  • format: detailed, line, or ohlcv
format=line returns compact [date, close] pairs:
The full response also includes statistics and coverage. Use coverage.earliest_available_date, coverage.latest_available_date, and coverage.available_points instead of assuming every ETF has the same history length.

Retrieve fund factsheets

Use the snapshot’s company_id with GET /v1/companies/{company_id}/details. A listed fund response has asset_type: "fund", a fund relationship, and available factsheets in documents with type: "fund_factsheet". Factsheets remain fund documents rather than issuer filings. A fund without a stored factsheet returns documents: null.

Handle thin trading safely

NGX ETFs can trade infrequently. A line response can contain an unchanged end-of-day close on a zero-volume date. Rangler retains that close so charts do not acquire artificial gaps. format=ohlcv is stricter. Rangler omits zero-volume or incomplete candles and reports the count in coverage.omitted_incomplete_candles. Use format=line when you need every available close.
ETF prices are end-of-day and are not adjusted for distributions or other corporate actions. Do not present them as real-time quotes or a total-return series.