Opaindex Opaindex Open dashboard

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:

https://api.opaindex.com
GET /prices

List every tracked price with dataset-level provenance.

Try it: https://api.opaindex.com/prices

Returns { prices: PricePoint[], count, source: "db" | "seed", asOf }

GET /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 }

GET /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.

Browse the commodity prices →