Data page
Price and market pages. The official figure and the reported figure come from different months, and the distance between them is the story rather than an inconvenience.
The thing this page must get right
NBS data lags roughly four months. That is structural, not a gap in our ingest. Live reporting does not lag. So the page has two true figures that disagree, and the only dishonest option is to show one without saying which.
Presented properly, that gap is the single most defensible thing on the site: the competition for "price of petrol in Nigeria" is thin pages with hand-typed guesses, and NBS's own output is unusable PDFs.
Both figures, both dated
The official series is published quarterly and runs about four months behind. The reported figure is drawn from this week's coverage across six outlets. Both are accurate for their period, and the gap is what a driver actually experiences.
HTML
<div style="display:grid;gap:var(--p234-space-6);grid-template-columns:repeat(auto-fit,minmax(13rem,1fr));margin-bottom:var(--p234-space-7)">
<div class="p234-tile">
<span class="p234-tile__label">Petrol, Lagos · NBS official, May 2026</span>
<span class="p234-tile__figure">₦1,077</span>
</div>
<div class="p234-tile">
<span class="p234-tile__label">Petrol, Lagos · reported, this week</span>
<span class="p234-tile__figure">₦1,345</span>
<span class="p234-delta" data-direction="up">25% above official</span>
</div>
</div>
<div class="p234-prose">
<p>The official series is published quarterly and runs about four months behind. The reported figure is drawn from this week's coverage across six outlets. Both are accurate for their period, and the gap is what a driver actually experiences.</p>
</div>The order
kicker and headline
the figures tiles, each one dated and attributed
what the gap means prose, two or three sentences
the series table or chart, by state or by month
method where each number comes from, plainly
next step the related price pages
By state
A series table
| State | Official, May | Reported, this week |
|---|---|---|
| Lagos | 1,077.00 | 1,345.00 |
| Abuja | 1,092.00 | 1,310.00 |
| Kano | 1,105.00 | 1,290.00 |
| Rivers | 1,068.00 | 1,270.00 |
HTML
<table class="p234-table">
<thead><tr><th>State</th><th>Official, May</th><th>Reported, this week</th></tr></thead>
<tbody>
<tr><td>Lagos</td><td>1,077.00</td><td><span class="p234-delta" data-direction="up">1,345.00</span></td></tr>
<tr><td>Abuja</td><td>1,092.00</td><td><span class="p234-delta" data-direction="up">1,310.00</span></td></tr>
<tr><td>Kano</td><td>1,105.00</td><td><span class="p234-delta" data-direction="up">1,290.00</span></td></tr>
<tr><td>Rivers</td><td>1,068.00</td><td><span class="p234-delta" data-direction="up">1,270.00</span></td></tr>
</tbody>
</table>Rules
- Date every figure, in the label, where the eye lands.
- Attribute every figure. "NBS official" and "reported" are different claims with different weights.
- State the method in plain language on the page, not behind a link.
- Format the unit at the source. The NGX feed reports percent change in naira, and a figure rendered straight from that field with a per cent sign has been wrong before.
- Never show a single blended number. Averaging an official figure with a reported one produces something that is true of nothing.
- Never imply the official figure is current.
- Do not hide the lag. It is the reason the page is worth reading.
Five tokens used across the current price pages are declared nowhere, which is why those pages render with unstyled text today. Migrating this pattern fixes that as a side effect.