gaspriceradar.comPowered by
Vantlir
OverviewCountriesRankingsCompareTrendsMap
Live
GPRGlobal fuel price intelligence
PricesRankingsCompareTrendsMapMethodology

Sources: World Bank, US EIA, EU Commission

Prices in USD/liter. For informational purposes only.

A product of Vantlir

Transparency

Methodology & Data Sources

GasPriceRadar is an open-architecture fuel price intelligence platform. This page documents exactly how we collect, normalize, store, and serve data — and what our limitations are.

Live Database Status

Records

5,525

Countries

78

Avg Gas (Global)

$1.191

Avg Diesel

$1.113

Freshness

Live

Updated today

Ingestion Pipeline

1

Fetch

World Bank, EIA, EU Commission APIs

2

FX Convert

ECB/OER rates → USD

3

Normalize

Gallons→liters, grades→standard

4

Validate

Sanity checks, quality scoring

5

Store

PostgreSQL via Prisma ORM

6

Serve

ISR pages, REST API, charts

Fallback Logic

  • Each data source is fetched independently — one failure does not block others
  • Sources have a 30-second timeout; timed-out sources are logged and skipped
  • FX rates fall back to ECB → Open Exchange Rates → hardcoded Q1 2026 rates
  • If all live sources fail, existing database data is preserved (no data deletion)
  • Partial ingestions are marked as "partial" in the logs

Data Sources

World Bank Global Fuel Prices

The World Bank compiles retail fuel prices from national statistical agencies and energy ministries. Data is reported in USD per liter. This is the foundation layer for global coverage, though it has significant lag (6-18 months). Used as baseline when fresher sources are unavailable.

Reliability

95

Coverage

170+ countries

Frequency

Annual (6-18 month lag)

Fuel Types

Gasoline (EP.PMP.SGAS.CD), Diesel (EP.PMP.DESL.CD)

Legal

Open data, CC BY 4.0 license. Free API, no key required.

US Energy Information Administration (EIA)

Official US government source. Weekly retail prices from ~900 gas stations via phone survey. Reported in USD per gallon; we convert to USD per liter (÷ 3.78541). Highest-priority source for US data.

Reliability

98

Coverage

United States (national + 5 PADD regions)

Frequency

Weekly (published Wednesday)

Fuel Types

Regular Gasoline (EPMR), Diesel (EPD2D)

Legal

Public domain (US government work). Free API key required.

European Commission Weekly Oil Bulletin

Official EU dataset from DG Energy. Reports both tax-inclusive and tax-exclusive prices in EUR per 1000 liters. We convert to USD per liter using ECB exchange rates. Highest-priority source for European data. Available from 2005.

Reliability

97

Coverage

27 EU member states + Norway, Switzerland

Frequency

Weekly (published Monday)

Fuel Types

Euro-super 95 (RON 95), Automotive Diesel, LPG

Legal

Open data, reuse policy of the European Commission. No key required.

ECB / Open Exchange Rates (FX)

Exchange rates used to normalize local-currency prices to USD. Primary: ECB Statistical Data Warehouse (free, XML). Fallback: Open Exchange Rates (free tier). Final fallback: hardcoded Q1 2026 rates for 40+ currencies.

Reliability

99

Coverage

30+ currencies

Frequency

Daily

Fuel Types

N/A

Legal

ECB data is freely available. Open Exchange Rates free tier: 1000 req/month.

World Bank Commodity Prices (Pink Sheet)

Global commodity price benchmarks. Not used for retail price tracking directly, but provides context for crude oil correlation analysis and price movement explanations.

Reliability

95

Coverage

Global benchmarks

Frequency

Monthly

Fuel Types

Crude Oil (Brent, WTI, Dubai), Natural Gas

Legal

Open data, CC BY 4.0 license.

Source Priority System

When multiple sources provide data for the same country and fuel type, we use a priority system:

1. EIA (US only) and EU Oil Bulletin (EU only) — weekly, highest priority for their regions

2. World Bank — global coverage, used as baseline for all other countries

3. REFERENCE — curated reference data used when no live API data is available

Within the same priority level, the most recent data point wins.

All source attributions are stored per-record, so you can always see which source provided each data point.

Price Normalization

Currency → USD

All prices converted to USD at ingestion time using ECB/OER daily exchange rates. Stored prices are point-in-time conversions — not retroactively adjusted. This matches World Bank methodology.

Unit → Per Liter

US data (USD/gallon) divided by 3.78541. EU data (EUR/1000L) divided by 1000. UK data (pence/liter) divided by 100 and FX-converted. All stored as USD per liter to 4 decimal places.

Fuel Grade → Standard

We track "standard grade" gasoline: RON 92-95 (or US Regular 87 AKI, which is equivalent to ~RON 91-92). Premium grades (RON 98+, US Premium 93 AKI) are mapped to GASOLINE but flagged internally. The grade difference is typically 5-15% — documented here for transparency.

Gasoline vs Petrol

"Gasoline" (US), "petrol" (UK/AU), "benzin" (DE/TR), "essence" (FR), "gasolina" (ES/PT), "benzina" (IT/RO) — all normalized to GASOLINE enum. Diesel variants (B7, gas oil, DERV, gazole) all normalize to DIESEL.

Missing Data

Displayed as "N/A" in the UI and null in the API. Never interpolated, estimated, or filled with neighboring country data. If a source doesn't cover a country, we don't invent data for it.

Quality Scoring

Each normalized price gets a quality score: high (within expected range), medium (slightly unusual), low (very old or edge of range), suspicious ($<0.01 or $>5.00/L). Suspicious prices are stored but flagged.

Data Freshness Strategy

Live

< 48 hours old

Recent

< 1 week old

Weekly

< 1 month old

Stale

> 1 month old

Different sources update at different frequencies. EIA and EU Bulletin provide weekly data; World Bank provides annual data with lag. Each country's data freshness reflects its best available source. The /api/status endpoint shows real-time freshness scores for each source.

Recent Ingestion Logs

SourceStatusRecordsDurationDate
REFERENCEsuccess5,525-3/25/2026, 4:04:28 PM

Known Limitations

World Bank lag: Their global fuel price dataset is published annually with 6-18 month delay. Countries without EIA/EU coverage may show data from the most recent available year.

Single grade per fuel type: We track one standard grade of gasoline per country (typically RON 92-95). Premium grades and regional variations within a country are not separately tracked.

National averages: Prices are national averages. Actual pump prices vary by city, station, and brand — often by 10-20% within a country.

Tax differences: Reported prices include all taxes unless otherwise noted. Tax-exclusive prices are available in the EU Oil Bulletin but we report tax-inclusive for comparability.

Subsidized markets: Countries like Venezuela, Ecuador, and Saudi Arabia have government-subsidized fuel prices that don't reflect market economics. These are accurately reported but should be understood in context.

Conflict zones: Countries in active conflict may have unreliable or outdated pricing data. We show the last available data with appropriate freshness flags.

Legal & Compliance

Data licensing: All data sources are publicly available under open data licenses (CC BY 4.0, public domain, or EU reuse policy). No proprietary data is scraped or reverse-engineered.

API terms compliance: We respect rate limits, use API keys where required, and cache aggressively to minimize request volume. No scraping of websites that prohibit it.

Attribution: All source attributions are stored per-record in PostgreSQL and displayed throughout the UI.

No investment advice: This platform provides informational data only. Fuel prices should not be used as the basis for investment, trading, or financial decisions.

GDPR: No personal data is collected. No cookies are used for tracking. Analytics, if added, would be privacy-respecting.

Technical Architecture

Stack

  • Next.js 16 (App Router, ISR)
  • TypeScript (strict mode)
  • PostgreSQL 16
  • Prisma ORM 7
  • Tailwind CSS 4
  • Recharts (visualizations)

Caching & Performance

  • React cache() for request deduplication
  • ISR revalidation every 1 hour
  • Materialized latest_prices table
  • API responses: s-maxage=3600
  • Static generation for all 78 country pages

Database Schema

  • countries — 78 rows, ISO codes + regions
  • fuel_prices — 5,525 historical records
  • latest_prices — materialized current + Δ%
  • ingestion_logs — full audit trail

API Endpoints

  • GET /api/prices — all prices, filterable
  • GET /api/prices/:code — per-country + history
  • GET /api/status — health + freshness
  • POST /api/ingest — scheduled ingestion
Explore Prices →API Documentation →System Status →