NGX market open/close status
curl --request GET \
--url https://api.ngnmarket.com/v1/market/status \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.ngnmarket.com/v1/market/status"
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/market/status', 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/market/status",
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/market/status"
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/market/status")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.ngnmarket.com/v1/market/status")
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": {
"is_open": true,
"status": "open",
"reason": "open",
"session": {
"open_time": "09:00",
"close_time": "16:00",
"timezone": "Africa/Lagos"
},
"holiday": null,
"next_open": null,
"closes_in": {
"hours": 3,
"minutes": 22,
"total_minutes": 202
},
"as_of": "2026-05-13T11:38:00.000Z"
},
"meta": {
"plan": "free",
"calls_used": 1,
"calls_remaining": 9999,
"reset_at": "2026-06-15T23:57:00.000Z"
}
}
Market Endpoints
Market Status
Check whether the NGX is currently open or closed.
GET
/
market
/
status
NGX market open/close status
curl --request GET \
--url https://api.ngnmarket.com/v1/market/status \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.ngnmarket.com/v1/market/status"
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/market/status', 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/market/status",
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/market/status"
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/market/status")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.ngnmarket.com/v1/market/status")
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": {
"is_open": true,
"status": "open",
"reason": "open",
"session": {
"open_time": "09:00",
"close_time": "16:00",
"timezone": "Africa/Lagos"
},
"holiday": null,
"next_open": null,
"closes_in": {
"hours": 3,
"minutes": 22,
"total_minutes": 202
},
"as_of": "2026-05-13T11:38:00.000Z"
},
"meta": {
"plan": "free",
"calls_used": 1,
"calls_remaining": 9999,
"reset_at": "2026-06-15T23:57:00.000Z"
}
}
The status endpoint tells you whether the Nigerian Exchange (NGX) is currently trading, and if not, exactly why and when it will next open.
All times are computed in the Africa/Lagos timezone (WAT, UTC+1). The NGX trading session runs Monday–Friday, 09:00–16:00 WAT, excluding public holidays.
The
When
curl "https://api.ngnmarket.com/v1/market/status" \
-H "Authorization: Bearer ngm_live_YOUR_KEY"
const res = await fetch('https://api.ngnmarket.com/v1/market/status', {
headers: { Authorization: 'Bearer ngm_live_YOUR_KEY' },
});
const { data } = await res.json();
console.log(data.is_open, data.reason);
import requests
res = requests.get(
'https://api.ngnmarket.com/v1/market/status',
headers={'Authorization': 'Bearer ngm_live_YOUR_KEY'},
)
data = res.json()['data']
print(data['is_open'], data['reason'])
The reason field
| Value | Meaning |
|---|---|
open | The market is currently trading. |
pre_market | Today is a trading day but the 09:00 open has not yet occurred. |
after_hours | Today was a trading day; the 16:00 close has passed. |
weekend | Today is Saturday or Sunday. |
holiday | Today is a public holiday. The holiday object will contain the holiday name and date. |
is_open is false, the next_open object tells you the date, UTC timestamp, and human-readable label for the next opening. For holiday closures, the holiday object provides the name of the holiday.Authorizations
Pass your API key as a Bearer token: Authorization: Bearer ngm_live_YOUR_KEY.
Generate keys at ngnmarket.com/dashboard/developer.