Open data & API
Opaindex publishes its 14 tracked Nigerian prices as open, machine-readable data: a free public REST API at https://api.opaindex.com and bulk CSV/JSON downloads. Every record carries its source, an as-of date and a confidence rating, freshest as of 23 June 2026.
Key takeaways
- A free public REST API at
https://api.opaindex.com— list, single-item and history endpoints. - Bulk downloads of the whole dataset as CSV (spreadsheets) or JSON (code).
- Every record carries its source, as-of date and confidence — 12 fields in all.
- Free to reuse with attribution to Opaindex; figures fall back to our sourced seed when the live API is unavailable.
Download the whole dataset
Take all 14 tracked items with you in one file — 12 columns including the source, as-of date and confidence on each row. Generated live on each request, so a download is always current.
14 items · freshest reading as of 23 June 2026.
REST API
The same data is served live from https://api.opaindex.com. All endpoints are GET, return JSON,
need no API key, and never 5xx on missing data — an empty or unmigrated table falls back to the sourced seed (so
source tells you whether a response is live database data or seed). Base URL:
/prices List every tracked price with dataset-level provenance.
Try it: https://api.opaindex.com/prices
Returns { prices: PricePoint[], count, source: "db" | "seed", asOf }
/prices/:slug A single price by its slug. 404 when the slug is unknown.
Try it: https://api.opaindex.com/prices/cement-nigeria
Returns { price: PricePoint, source } | 404 { price: null, message }
/prices/:slug/history?limit=90 Daily historical series for one item, oldest→newest (limit 1–365, default 90).
Try it: https://api.opaindex.com/prices/cement-nigeria/history?limit=90
Returns { slug, count, history: [{ asOf, price }] }
Example — GET /prices
{
"prices": [
{
"slug": "cement-nigeria",
"name": "Cement",
"category": "building-materials",
"market": "Nigeria",
"unit": "50kg bag",
"price": 9500,
"currency": "NGN",
"dayChangePercent": 1.6,
"weekChangePercent": 3.2,
"source": "Dealer survey (Lagos, Abuja, Kano)",
"asOf": "2026-06-23T08:00:00Z",
"confidence": "high"
}
],
"count": 14,
"source": "seed",
"asOf": "2026-06-23T08:00:00Z"
} Response fields
Each price is a PricePoint — the same shape in the API responses and in every row of the bulk
export:
| Field | Type | Meaning |
|---|---|---|
slug | string | Stable URL slug, e.g. "cement-nigeria". |
name | string | Human-readable item name. |
category | string | One of: building-materials, food-staples, energy, agriculture. |
market | string | Geography the figure applies to, e.g. "Nigeria" or "Lagos". |
unit | string | The priced unit, e.g. "50kg bag" or "per litre". |
price | number | The current price, in the stated currency. |
currency | string | ISO currency code (NGN unless noted). |
dayChangePercent | number | Day-on-day percent change (0 for monthly official series). |
weekChangePercent | number | Week-on-week percent change (0 for monthly official series). |
source | string | Provenance — where the figure came from. |
asOf | string | ISO timestamp: when the figure was true (not page-load time). |
confidence | string | "high" | "medium" | "low" — how corroborated the figure is. |
Terms & attribution
The data is free to reuse with attribution to
Opaindex — each figure keeps its own source and
as-of date, so cite the asOf shown on the record. This is an early public API and the shape may
evolve; the 12 fields above are the stable core. See
how we source this for the provenance and
confidence model behind every number. Categories currently covered:
Building Materials, Food Staples, Energy, Agriculture.