Skip to main content

Disclosures now go back to 2014

GET /disclosures and GET /companies/:symbol/disclosures used to only return filings from this year. Both now return everything NGX’s own filing system has on record, back to July 2014.Nothing changed about how you call these endpoints, no new parameters and no plan restrictions. The data was just missing before. If you’ve cached results or built anything that assumed disclosures only went back to January, it’s worth a re-fetch.

WebSocket API

You can now receive live updates over a persistent WebSocket connection instead of polling. Six channels are available: prices, market snapshot, indices, forex rates, corporate disclosures, and dividends.Prices, snapshot, indices, and forex are available on every plan, including Free. What scales by plan is how many connections you can hold open at once, and, on the prices channel, how many symbols one connection can request. WebSocket connections don’t count against your monthly REST quota.See the new WebSocket section for connection details, message formats for every channel, limits, and error codes.

New financials endpoints

You can now fetch individual parts of a company’s financials without requesting the full financials response.GET /companies/:symbol/financials isn’t changing. It still returns the income statement, balance sheet, cash flow, and ratios together in one request.If you only need one of those datasets, there are now six more focused endpoints:So if your app only needs ratios or a cash flow statement, you can request that directly and skip the rest of the financials payload.Plan requirements for each endpoint are listed on Plans.

Historical data depth now depends on your plan

How far back you can query chart and history endpoints now depends on your plan.Hobby accounts can request up to 2 years of historical data. Starter accounts get up to 5 years. Pro and higher can access the full available history with no plan-based cutoff.These limits apply to company charts, forex history, index charts, ETF charts, and dividend history.If you request a range that goes further back than your plan allows, the API won’t reject the request. It’ll start from the earliest date available to your plan and return the data from there.Responses now also include start_date and end_date, so you can see the exact date range that came back.If you were already a paying customer before August 12, 2026, your existing historical access stays unchanged for four months from launch. The new limits apply immediately to new signups and will apply to existing paid accounts once that four-month period ends.See Historical data depth for the full breakdown.

Pro replaces Growth

We’ve retired the Growth plan and replaced it with Pro.Pro costs ₦100,000/month and includes 250,000 API calls per month with a rate limit of 120 requests per minute.If you’re already on Growth, you’ll be moved to Pro automatically at the new price. You don’t need to make any changes to your account.GET /market/breadth, GET /market/sectors, and GET /market/ytd-performers now require Pro or higher. These endpoints previously required Growth.See Plans for the full plan comparison.

Dividend history backfilled for several tickers

GET /companies/:symbol/dividends was returning little or no data for a number of tickers, including SEPLAT, NESTLE, ZENITHBANK, and AIRTELAFRI, even though other symbols on the same endpoint already went back years. These are all backfilled now, most going back well over a decade.

AI agent support

If you’re using an AI coding agent with the NGN Market API, you can now install a skill that gives it the API context it needs before it starts working.The skill is available at docs.ngnmarket.com/skill.md and works with Claude Code, Cursor, Windsurf, and other agents that support skills.Once installed, the agent knows the API base URL, authentication format, plan tiers, and which endpoints to use for common tasks. For example, it can map a request for a live price ticker, candlestick chart, currency converter, or dividend calendar to the right endpoint and method.Install the agent skill covers the CLI install with npx skills add -g, along with manual installation for Claude Code, Cursor, Windsurf, and agents using the shared .agents/skills/ convention.There’s also an Agent quickstart if you want to use it on an existing project.The quickstart includes a copyable prompt that installs the skill and checks your repository for hardcoded NGX prices, stale forex rates, and manually maintained company or dividend data. It then suggests which API endpoints you can use instead.It waits for your approval before changing any files.

ETF endpoints

You can now access NGX-listed ETFs and ETPs through three dedicated endpoints: one for the full list, one for individual fund details, and one for historical prices.

GET /etfs

Available on all plans, including Free.
GET /etfs returns a snapshot of all 12 ETFs and ETPs listed on the NGX.For each fund, you’ll get its current price, daily change, 7-day, YTD, and 52-week performance, today’s volume and naira value traded, average 3-month volume, fund manager, and benchmark index.You can paginate the results, search by fund name, ticker, or fund manager, and sort by any numeric field.

GET /etfs/:symbol

Requires a Starter plan or higher.
Use GET /etfs/:symbol when you need the full details for one ETF.For example:
The response includes the current OHLCV snapshot and 52-week range, along with the ISIN, fund manager, index tracked, fund sponsor, trustee, custodian, liquidity provider, and website.It also includes period change percentages and average 3-month volume.

GET /etfs/:symbol/chart

Requires a Starter plan or higher.
GET /etfs/:symbol/chart returns daily price history for an ETF.For example:
Use period for one of the predefined ranges: 7d, 30d, 90d, 1y, 5y, or all.If you need an exact range, pass from and to instead.For a compact chart response, format=chart returns [date, price] pairs.format=detailed returns full OHLCV rows and a normalized_value for each date. The normalized value rebases the ETF price to 100 at the beginning of the requested period, which makes it easier to compare performance between funds.The statistics block also includes return_1m, return_3m, return_1y, and return_ytd. These use fixed reference points regardless of the period you request.

More data from existing endpoints

A number of existing endpoints now return more of the data you’d otherwise have to calculate or fetch separately.

Company charts now return full OHLCV data

GET /companies/:symbol/chart used to return only the closing price for each day.It now returns the full daily candle: open, high, low, close, volume, value_traded, vwap, trade_count, change, and change_percent.If you’re already using price, you don’t need to change anything. The field remains available as an alias for close.There’s also a new format=ohlcv option that returns each candle as:
This format can be used directly with charting libraries such as Apache ECharts, ApexCharts, Highcharts, and Plotly.

Market snapshot now includes breadth data

GET /market/snapshot now gives you a broader view of the trading session.The response includes advances, declines, unchanged count, the advance/decline ratio, YTD ASI return, turnover rate, total listed securities, and NGX session open and close times.

Company profiles now include more valuation ratios

GET /companies/:symbol now includes pb_ratio, debt_to_equity, current_ratio, and dividend_yield.They’re calculated from the latest available financial statements.If there isn’t enough financial data to calculate one of the values, that field returns null.

Movers and top trades now include logos and market cap

GET /market/movers and GET /market/top-trades now include logo_url and market_cap for each entry.

Forex responses now include the inverse rate

GET /forex/current now returns inverse_rate for each currency.The regular rate tells you how many naira one unit of a foreign currency is worth. inverse_rate gives you the other side of that conversion: how much foreign currency ₦1 buys.

Index charts now include period returns and normalized values

GET /indices/:symbol/chart now includes return_1m, return_3m, return_1y, and return_ytd in the statistics block.When you use format=detailed, each data point also includes normalized_value.This rebases the index to 100 at the start of the requested period. If you’re comparing indices with very different absolute values, you can use the normalized values to plot them on the same scale and compare their relative performance.