curl --request GET \
--url https://api.ngnmarket.com/v1/disclosures \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.ngnmarket.com/v1/disclosures"
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/disclosures', 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/disclosures",
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/disclosures"
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/disclosures")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.ngnmarket.com/v1/disclosures")
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": {
"data": [
{
"title": "Directorsdealings",
"company_name": "AVA CAPITAL PLC",
"company_symbol": "AVACAP",
"isin": "NGAVACAP0009",
"category": "director_dealings",
"submission_type": "DirectorsDealings",
"document_url": "https://doclib.ngxgroup.com/Financial_NewsDocs/261_Notification_of_Insider_Trading_NGX_-_Adebanjo_Elijah_Adeyemi.pdf",
"disclosed_at": "2026-08-20T14:20:02.000Z",
"modified_at": "2026-08-20T14:20:02.000Z"
}
],
"pagination": {
"page": 1,
"limit": 1,
"total": 3205,
"pages": 3205,
"has_next": true,
"has_prev": false
}
},
"meta": {
"plan": "free",
"calls_used": 154,
"calls_remaining": 2846,
"reset_at": "2026-10-01T00:00:00.000Z"
}
}List Disclosures
Paginated feed of official corporate filings from NGX-listed companies.
curl --request GET \
--url https://api.ngnmarket.com/v1/disclosures \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.ngnmarket.com/v1/disclosures"
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/disclosures', 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/disclosures",
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/disclosures"
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/disclosures")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.ngnmarket.com/v1/disclosures")
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": {
"data": [
{
"title": "Directorsdealings",
"company_name": "AVA CAPITAL PLC",
"company_symbol": "AVACAP",
"isin": "NGAVACAP0009",
"category": "director_dealings",
"submission_type": "DirectorsDealings",
"document_url": "https://doclib.ngxgroup.com/Financial_NewsDocs/261_Notification_of_Insider_Trading_NGX_-_Adebanjo_Elijah_Adeyemi.pdf",
"disclosed_at": "2026-08-20T14:20:02.000Z",
"modified_at": "2026-08-20T14:20:02.000Z"
}
],
"pagination": {
"page": 1,
"limit": 1,
"total": 3205,
"pages": 3205,
"has_next": true,
"has_prev": false
}
},
"meta": {
"plan": "free",
"calls_used": 154,
"calls_remaining": 2846,
"reset_at": "2026-10-01T00:00:00.000Z"
}
}document_url link to the source PDF.
Coverage goes back to July 2014, which is as far back as NGX’s own filing system has records. There’s nothing before that to fetch, not even from NGX directly.
Results are sorted newest first by default. Use GET /disclosures/types to discover all valid values for the type filter.
Submission types
| Type | Description |
|---|---|
Financial Statements | Quarterly and annual audited financial reports |
Corporate Actions | Major company announcements and corporate events |
Board Meeting (BM) | Board meeting notices, results, and resolutions |
Annual General Meeting (AGM) | AGM notices, results, and resolutions |
Extra-Ordinary General Meeting (EGM) | Emergency or special shareholder meetings |
DirectorsDealings | Insider trading and director share transaction reports |
EarningForcast | Earnings guidance and forecast filings |
Filtering by company
Use thesymbol param to scope results to a single company. If you’re building a stock detail view, GET /companies/{symbol}/disclosures is a cleaner alternative.
Example requests
curl "https://api.ngnmarket.com/v1/disclosures?symbol=GTCO&type=Financial+Statements" \
-H "Authorization: Bearer ngm_live_YOUR_KEY"
curl "https://api.ngnmarket.com/v1/disclosures?from=2026-01-01&to=2026-03-31" \
-H "Authorization: Bearer ngm_live_YOUR_KEY"
const res = await fetch(
'https://api.ngnmarket.com/v1/disclosures?symbol=MTNN&limit=10',
{ headers: { Authorization: 'Bearer ngm_live_YOUR_KEY' } }
);
const { data } = await res.json();
import requests
res = requests.get(
'https://api.ngnmarket.com/v1/disclosures',
params={'symbol': 'GTCO', 'type': 'Financial Statements'},
headers={'Authorization': 'Bearer ngm_live_YOUR_KEY'},
)
data = res.json()['data']
Authorizations
Pass your API key as a Bearer token: Authorization: Bearer ngm_live_YOUR_KEY.
Generate keys at ngnmarket.com/dashboard/developer.
Query Parameters
Filter by company ticker symbol (e.g. GTCO, DANGCEM). Case-insensitive.
"GTCO"
Filter by the raw NGX submission type. Use /disclosures/types for valid values.
"Financial Statements"
Filter by category, a coarser curated grouping over submission_type. Use /disclosures/categories for valid values. An unrecognised value is ignored rather than rejected.
"director_dealings"
Search by company name, ticker, or document title.
"Zenith Bank"
Return disclosures on or after this date.
"2026-01-01"
Return disclosures on or before this date.
"2026-12-31"
Field to sort by.
disclosed_at, modified_at, company_name, submission_type Sort direction.
asc, desc x >= 11 <= x <= 100