How FuelScan collects and calculates fuel prices
Every price on this site comes from a named public source, and every figure in our analysis articles is computed from the same database that powers the live pages. This page documents where each country's data originates, how often it refreshes, how we turn it into averages, and — importantly — what it cannot tell you.
Sources by country
Six of the twelve countries we cover give us a genuine per-station feed. The other six publish a national average or a regulated maximum. We show which is which, because it changes how you should read a figure.
Publisher: Markttransparenzstelle für Kraftstoffe (MTS-K), redistributed under CC BY 4.0
German operators are legally required to report every price change within five minutes. This is the highest-fidelity feed we receive.
Publisher: Ministère de l'Économie, published as open data on data.gouv.fr
Mandatory reporting since 2007. Coverage is close to complete for public forecourts; a small number of private and fleet-only sites are absent.
Publisher: Ministerio para la Transición Ecológica y el Reto Demográfico
Includes the unmanned discount chains, which is why Spanish brand-level differences in our data are so wide.
Publisher: Ministero delle Imprese e del Made in Italy (MIMIT)
The feed distinguishes self-service (fai da te) from attended (servito) prices. We display the self-service price where both are published.
Publisher: E-Control, the Austrian federal energy regulator
Austrian law permits price increases only once a day at 12:00 noon, so late-morning readings sit at the daily low.
Publisher: Direção-Geral de Energia e Geologia
Reporting is mandatory but some rural independents update irregularly, so individual station timestamps vary more than in Germany or Spain.
Publisher: Centraal Bureau voor de Statistiek
The Netherlands has no public per-station feed. We distribute the official national average across a representative station network and label it as an estimate.
Publisher: FOD Economie / SPF Économie
Belgium sets a legal maximum price. Real forecourt prices sit at or slightly below it, which is why local comparison offers little in Belgium.
Publisher: Institut Luxembourgeois de Régulation (ILR)
Same mechanism as Belgium. Our measured station-to-station spread in Luxembourg is about one cent — take the first station you see.
Publisher: European Commission, DG Energy
Greek per-station data is not publicly redistributable, so we use the Commission's weekly national figures. Expect up to seven days of lag.
Publisher: Hrvatska energetska regulatorna agencija (HERA)
Croatia caps retail margins and revises prices on a fixed schedule. Between revisions our figure does not move.
Publisher: UK Department for Energy Security and Net Zero (GOV.UK)
Published in pence per litre and converted for display. Because the UK is outside the euro, currency movement affects the comparison independently of pump prices.
The pipeline, step by step
- 1
Fetch
A scheduled job per country pulls from the upstream source on a cadence matched to how often that source actually changes. There is no point polling a weekly bulletin every ten minutes, and no point polling German prices daily.
- 2
Validate
Every record must carry usable coordinates, a station name and at least one price inside a plausible band of €0.30 to €4.99 per litre. Records failing any check are dropped rather than corrected — we would rather show fewer stations than invented ones.
- 3
Deduplicate
The upstream operator's own external identifier is the stable key. When a source re-issues a station under a new ID, the old row ages out rather than producing a duplicate pin on the map.
- 4
Snapshot
Once daily, per-country aggregates are written to an immutable history table. This is what the trend charts read, and it is why our historical figures cannot be retroactively rewritten by a later upstream correction.
- 5
Serve
Country and city aggregates are computed in the database rather than the browser, and served through a cached edge endpoint. The figures you see are the same figures our own analysis articles are built from.
How the averages are computed
- National average — the arithmetic mean of the most recent valid price at every station in that country reporting the fuel grade. Stations with no price for that grade are excluded rather than counted as zero.
- City average — the same calculation restricted to stations whose city field matches, with a minimum station count applied before we publish a city-level figure. Cities below the threshold are marked as thin rather than shown with a misleading average.
- Spread — the difference between the 10th and 90th percentile price within a country. We use percentiles rather than minimum-to-maximum so a single mis-reported forecourt cannot define the range.
- Brand comparison — a brand's mean price minus the national mean for the same fuel and the same day. Brands with too few stations to be meaningful are excluded.
- Trend — daily country snapshots, with statistical outliers excluded from the plotted line so a single bad upstream day does not create a phantom spike.
Known limits
We would rather state these plainly than have you discover them.
Six countries are national figures, not station prices
The Netherlands, Belgium, Luxembourg, Greece, Croatia and the United Kingdom publish an official average or a regulated maximum rather than a per-station feed. Our numbers for those countries are accurate as national prices and are labelled as estimates throughout the site — but you should not expect to beat them by shopping around locally, and our city-level figures for those countries will show little variation because the source data has none.
Every feed lags the pump
Even the German five-minute reporting requirement is a reporting requirement, not a live pump reading. A price can change while you are driving to the station. Always trust the totem at the moment you pay, not our figure.
Averages are unweighted
Our national and city averages weight every reporting station equally. They are not volume-weighted, so a country with many small rural independents will read slightly differently from a volume-weighted official statistic. This is why our figures can differ by one or two cents from a government headline number for the same day.
Price history starts when we started
We only hold snapshots from the date each country's collection began. Longer-run historical claims in our articles are sourced from published statistics and labelled as such rather than presented as our own measurements.
Fuel grade definitions differ by country
What we display as Euro 95 is E10 in Germany, France and the Netherlands, Super 95 in Austria, Gasolina 95 in Spain and Benzina 95 in Italy. These are comparable but not identical products, and the ethanol content affects both price and consumption.
Corrections
If a station price, name or location on FuelScan is wrong, email info@fuelscan.eu with the station and what you saw at the pump. Where the error originates upstream we will say so and point you at the publisher; where it is ours, we fix it and the change flows through to the next refresh. FuelScan is operated independently, is free to use, and is funded by clearly-labelled advertising — no operator pays for placement or ranking on this site.