Director dealings summary
curl --request GET \
--url https://api.ngnmarket.com/v1/companies/{symbol}/director-dealings/summary \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.ngnmarket.com/v1/companies/{symbol}/director-dealings/summary"
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/companies/{symbol}/director-dealings/summary', 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/companies/{symbol}/director-dealings/summary",
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/companies/{symbol}/director-dealings/summary"
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/companies/{symbol}/director-dealings/summary")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.ngnmarket.com/v1/companies/{symbol}/director-dealings/summary")
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": {
"total": 684,
"buy_count": 511,
"sell_count": 173,
"buy_value": 1196639493.25,
"sell_value": 242116085.61,
"net_value": 954523407.64,
"buy_value_90d": 151399399.2,
"sell_value_90d": 365220.35,
"net_value_90d": 151034178.85,
"avg_days_to_file": 2.87,
"oldest": "2020-03-05",
"newest": "2026-08-17",
"largest": {
"insider_name": "ARTROL INVESTMENT COMPANY LIMITED",
"insider_position": "RELATED PARTY TO PETER ASHADE",
"transaction_type": "purchase",
"total_value": 175030000,
"transaction_date_from": "2024-11-11"
},
"top_insider": {
"name": "ARTROL INVESTMENT COMPANY LIMITED",
"total_value": 88938440.6,
"trades": 3
},
"monthly": [
{
"month_start": "2026-07-01",
"buy_value": 22000000,
"sell_value": 4200000,
"buy_count": 6,
"sell_count": 2,
"net_value": 17800000
}
],
"insiders": [
{
"name": "ARTROL INVESTMENT COMPANY LIMITED",
"position": "RELATED PARTY TO PETER ASHADE",
"insider_type": "related_party",
"buy_value": 88938440.6,
"sell_value": 0,
"net_value": 88938440.6,
"buy_count": 3,
"sell_count": 0,
"total_trades": 3,
"last_trade_date": "2024-11-11"
}
],
"filing_lag": {
"0_5_days": 640,
"6_14_days": 31,
"15_plus_days": 13,
"max_days": 62,
"min_days": 0
}
},
"meta": {
"plan": "pro",
"calls_used": 119,
"calls_remaining": 249881,
"reset_at": "2026-10-01T00:00:00.000Z"
}
}Company Endpoints
Director Dealings Summary
Aggregated director-dealings data for a single NGX-listed company.
GET
/
companies
/
{symbol}
/
director-dealings
/
summary
Director dealings summary
curl --request GET \
--url https://api.ngnmarket.com/v1/companies/{symbol}/director-dealings/summary \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.ngnmarket.com/v1/companies/{symbol}/director-dealings/summary"
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/companies/{symbol}/director-dealings/summary', 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/companies/{symbol}/director-dealings/summary",
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/companies/{symbol}/director-dealings/summary"
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/companies/{symbol}/director-dealings/summary")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.ngnmarket.com/v1/companies/{symbol}/director-dealings/summary")
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": {
"total": 684,
"buy_count": 511,
"sell_count": 173,
"buy_value": 1196639493.25,
"sell_value": 242116085.61,
"net_value": 954523407.64,
"buy_value_90d": 151399399.2,
"sell_value_90d": 365220.35,
"net_value_90d": 151034178.85,
"avg_days_to_file": 2.87,
"oldest": "2020-03-05",
"newest": "2026-08-17",
"largest": {
"insider_name": "ARTROL INVESTMENT COMPANY LIMITED",
"insider_position": "RELATED PARTY TO PETER ASHADE",
"transaction_type": "purchase",
"total_value": 175030000,
"transaction_date_from": "2024-11-11"
},
"top_insider": {
"name": "ARTROL INVESTMENT COMPANY LIMITED",
"total_value": 88938440.6,
"trades": 3
},
"monthly": [
{
"month_start": "2026-07-01",
"buy_value": 22000000,
"sell_value": 4200000,
"buy_count": 6,
"sell_count": 2,
"net_value": 17800000
}
],
"insiders": [
{
"name": "ARTROL INVESTMENT COMPANY LIMITED",
"position": "RELATED PARTY TO PETER ASHADE",
"insider_type": "related_party",
"buy_value": 88938440.6,
"sell_value": 0,
"net_value": 88938440.6,
"buy_count": 3,
"sell_count": 0,
"total_trades": 3,
"last_trade_date": "2024-11-11"
}
],
"filing_lag": {
"0_5_days": 640,
"6_14_days": 31,
"15_plus_days": 13,
"max_days": 62,
"min_days": 0
}
},
"meta": {
"plan": "pro",
"calls_used": 119,
"calls_remaining": 249881,
"reset_at": "2026-10-01T00:00:00.000Z"
}
}Returns aggregated data from the available director-dealings records for a company, including buy and sell totals, trailing 90-day activity, monthly trends, per-insider breakdowns, and filing lag. The summary is computed from the same records returned by
GET /companies/{symbol}/director-dealings, so you don’t need to download and aggregate each filing yourself.
This endpoint requires a Pro plan or higher.
Returns 404 if the company has no director-dealings filings on record.
curl "https://api.ngnmarket.com/v1/companies/UCAP/director-dealings/summary" \
-H "Authorization: Bearer ngm_live_YOUR_KEY"
const symbol = 'UCAP';
const res = await fetch(
`https://api.ngnmarket.com/v1/companies/${symbol}/director-dealings/summary`,
{ headers: { Authorization: 'Bearer ngm_live_YOUR_KEY' } }
);
const { data } = await res.json();
import requests
symbol = 'UCAP'
res = requests.get(
f'https://api.ngnmarket.com/v1/companies/{symbol}/director-dealings/summary',
headers={'Authorization': 'Bearer ngm_live_YOUR_KEY'},
)
data = res.json()['data']
filing_lag groups filings by the number of days between the transaction date and the NGX disclosure date. The current buckets are 0_5_days, 6_14_days, and 15_plus_days.
These are NGN Market grouping labels based on elapsed time and should not be interpreted as a regulatory compliance determination.
Authorizations
Pass your API key as a Bearer token: Authorization: Bearer ngm_live_YOUR_KEY.
Generate keys at ngnmarket.com/dashboard/developer.
Path Parameters
NGX ticker symbol (e.g. GTCO). Case-insensitive.
Example:
"UCAP"