List all NGX-listed ETFs
curl --request GET \
--url https://api.ngnmarket.com/v1/etfs \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.ngnmarket.com/v1/etfs"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.ngnmarket.com/v1/etfs', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.ngnmarket.com/v1/etfs",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.ngnmarket.com/v1/etfs"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.ngnmarket.com/v1/etfs")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.ngnmarket.com/v1/etfs")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"success": true,
"data": [
{
"symbol": "STANBICETF30",
"name": "Stanbic IBTC ETF 30",
"isin": "NGSTBKETF308",
"fund_manager": "Stanbic IBTC Asset Management Limited",
"index_tracked": "NSE 30",
"current_price": 4175,
"price_change": -155,
"price_change_percent": -3.47,
"change_7d_percent": null,
"change_ytd_percent": null,
"volume": 3961,
"value_traded": 16361032.94,
"high_52wk": 7003.96,
"low_52wk": 295.3,
"avg_vol_3m": 32,
"stats_date": "2026-06-10"
},
{
"symbol": "VETBANK",
"name": "Vetiva Banking ETF",
"isin": "NGVETBANK009",
"fund_manager": "Vetiva Fund Managers Limited",
"index_tracked": "NSE Banking Index",
"current_price": 12.5,
"price_change": 0.3,
"price_change_percent": 2.46,
"change_7d_percent": null,
"change_ytd_percent": null,
"volume": 222878,
"value_traded": 2785975,
"high_52wk": 14,
"low_52wk": 3.5,
"avg_vol_3m": 98000,
"stats_date": "2026-06-10"
}
],
"pagination": {
"page": 1,
"limit": 50,
"total": 12,
"pages": 1,
"has_next": false,
"has_prev": false
},
"meta": {
"plan": "free",
"calls_used": 41,
"calls_remaining": 9959,
"reset_at": "2026-07-15T23:57:00.000Z"
}
}ETF Endpoints
List ETFs
Retrieve all NGX-listed Exchange Traded Funds and ETPs with current prices and period performance.
GET
/
etfs
List all NGX-listed ETFs
curl --request GET \
--url https://api.ngnmarket.com/v1/etfs \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.ngnmarket.com/v1/etfs"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.ngnmarket.com/v1/etfs', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.ngnmarket.com/v1/etfs",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.ngnmarket.com/v1/etfs"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.ngnmarket.com/v1/etfs")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.ngnmarket.com/v1/etfs")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"success": true,
"data": [
{
"symbol": "STANBICETF30",
"name": "Stanbic IBTC ETF 30",
"isin": "NGSTBKETF308",
"fund_manager": "Stanbic IBTC Asset Management Limited",
"index_tracked": "NSE 30",
"current_price": 4175,
"price_change": -155,
"price_change_percent": -3.47,
"change_7d_percent": null,
"change_ytd_percent": null,
"volume": 3961,
"value_traded": 16361032.94,
"high_52wk": 7003.96,
"low_52wk": 295.3,
"avg_vol_3m": 32,
"stats_date": "2026-06-10"
},
{
"symbol": "VETBANK",
"name": "Vetiva Banking ETF",
"isin": "NGVETBANK009",
"fund_manager": "Vetiva Fund Managers Limited",
"index_tracked": "NSE Banking Index",
"current_price": 12.5,
"price_change": 0.3,
"price_change_percent": 2.46,
"change_7d_percent": null,
"change_ytd_percent": null,
"volume": 222878,
"value_traded": 2785975,
"high_52wk": 14,
"low_52wk": 3.5,
"avg_vol_3m": 98000,
"stats_date": "2026-06-10"
}
],
"pagination": {
"page": 1,
"limit": 50,
"total": 12,
"pages": 1,
"has_next": false,
"has_prev": false
},
"meta": {
"plan": "free",
"calls_used": 41,
"calls_remaining": 9959,
"reset_at": "2026-07-15T23:57:00.000Z"
}
}This endpoint returns a snapshot of every ETF and ETP listed on the Nigerian Exchange (NGX), including the current price, daily change, and period performance metrics (7-day, YTD, 52-week). Use it to build ETF screeners, populate a fund overview dashboard, or discover available symbols before querying detail or chart data.
Supports pagination and optional search by fund name, ticker symbol, or fund manager. All plan tiers can access this endpoint.
Authorizations
Pass your API key as a Bearer token: Authorization: Bearer ngm_live_YOUR_KEY.
Generate keys at ngnmarket.com/dashboard/developer.
Query Parameters
Required range:
x >= 1Required range:
1 <= x <= 100Filter by fund name, ticker, or fund manager (case-insensitive partial match).
Example:
"Vetiva"
Available options:
name, symbol, price, price_change_percent, change_7d_percent, change_ytd_percent, change_52w_percent, volume, value_traded Available options:
asc, desc