UK fuel price data, free to download
Every pump price we have collected from the government's Fuel Finder feed since 7 Sep 2026: 1,293,857 daily station prices, 8,146 filling stations, and daily averages for the UK and for each town. The official feed only shows today's price and keeps no history. These files are that history, refreshed every three hours and free to reuse under the Open Government Licence v3.0.
Files
Updated after every collection of the feed. Last written 25 Oct 2026.
| File | What it holds | Rows | Size |
|---|---|---|---|
| uk-daily.csv UK daily averages | One row per day: the average unleaded and diesel price across the UK, the number of stations behind each average, and how many prices changed. 7 Sep 2026 to 25 Oct 2026 | 49 | 2 KB |
| towns-daily.csv Town daily averages | One row per town and day: average and lowest unleaded and diesel price, with the number of stations behind each. 7 Sep 2026 to 25 Oct 2026 | 35,717 | 2.4 MB |
| stations.csv Filling stations | One row per station reporting today: identifier, name, brand, address, postcode, nation, coordinates, type, services, declared fuels, opening hours and the first and last day it reported. | 8,146 | 3.3 MB |
| stations-changes.csv Stations joining and leaving the feed | One row per arrival, departure or return since our collection began, most recent first. A station that stops reporting has not necessarily closed. 7 Sep 2026 to 25 Oct 2026 | 126 | 26 KB |
| history-2026-09.csv.gz Every price, September 2026 | One row per station, fuel and day: the price reported that day and when the retailer last changed it. Gzipped CSV. 7 Sep 2026 to 30 Sep 2026 | 631,357 | 3.2 MB |
| history-2026-10.csv.gz Every price, October 2026 | One row per station, fuel and day: the price reported that day and when the retailer last changed it. Gzipped CSV. 1 Oct 2026 to 25 Oct 2026 | 662,500 | 2.6 MB |
For scripts, manifest.json lists every file with its rows, size and period. File names are stable: a new month adds a file, it never renames one. How the station list is cleaned, and what to check before using it on a map, is on the station list page.
Columns
uk-daily.csv
| date | Day of observation, YYYY-MM-DD. |
| unleaded_avg_ppl | Average unleaded (E10) price, pence per litre, one decimal. |
| unleaded_stations | Number of stations behind that average. |
| diesel_avg_ppl | Average diesel (B7) price, pence per litre, one decimal. |
| diesel_stations | Number of stations behind that average. |
| price_changes | Station prices, all fuels and all stations, that differ from the day before. Blank on the first day. |
towns-daily.csv
| date | Day of observation, YYYY-MM-DD. |
| town | Town name as shown on this site. |
| town_slug | Identifier of the town, as in /petrol-prices/<town_slug>. |
| nation | England, Scotland, Wales or Northern Ireland. |
| unleaded_avg_ppl | Average unleaded (E10) price in the town, pence per litre. |
| unleaded_min_ppl | Lowest unleaded price at a station in the town that day. |
| unleaded_stations | Number of stations behind the unleaded figures. |
| diesel_avg_ppl | Average diesel (B7) price in the town, pence per litre. |
| diesel_min_ppl | Lowest diesel price at a station in the town that day. |
| diesel_stations | Number of stations behind the diesel figures. |
stations.csv
| node_id | Fuel Finder identifier of the station. Stable, and the key into the history files. |
| name | Station name, with consistent capitalisation. |
| brand | Brand, one spelling per brand. Blank for independents. |
| brand_raw | Brand exactly as the retailer reported it. |
| address | Address lines as reported, with consistent capitalisation. |
| town | Town as shown on this site. |
| postcode | Full postcode. |
| postcode_district | Outward code, for example BA1. |
| postcode_area | Postcode area, for example BA. |
| nation | Derived from the postcode, as the feed's own country field is unreliable. |
| latitude | WGS84 latitude. |
| longitude | WGS84 longitude. |
| motorway | 1 for motorway services. |
| supermarket | 1 for a supermarket forecourt. |
| members_only | 1 where only members can buy fuel (Costco). |
| services | Services reported by the station, separated by semicolons. |
| temporarily_closed | 1 if the feed marks the station temporarily closed. |
| first_seen | First day we recorded a price for the station. |
| last_seen | Last day we recorded a price for the station. |
| page_url | The station's page on this site. |
| fuels | Fuel grades the station declares it sells, separated by semicolons (E10, E5, B7_STANDARD, B7_PREMIUM, B10, HVO). A grade missing here proves nothing. |
| opening_hours | Opening hours in OpenStreetMap opening_hours syntax, converted from the feed. Blank when any day is not reported. |
| phone | Public phone number, as reported. |
| coordinates_fix | Blank when the position is as reported. swapped: latitude and longitude were inverted; longitude_sign: the sign was lost; both were corrected because only the corrected point falls in the UK. outside_uk: left as reported, and wrong. |
stations-changes.csv
| change | arrival (first price reported), departure (no price for 7 days or more) or return (reporting again after such a gap). |
| date | Arrival: first day with a price. Departure: last day with a price. Return: day it came back. |
| node_id | Fuel Finder identifier, as in stations.csv. |
| name | Station name. |
| brand | Brand, one spelling per brand. Blank for independents. |
| town | Town as shown on this site. |
| postcode | Full postcode. |
| nation | England, Scotland, Wales or Northern Ireland. |
| days | Departure: days since the last price. Return: length of the absence, in days. |
| permanently_closed_on | Departure: the date the feed gives for a permanent closure, when it gives one. |
| temporarily_closed | Departure: 1 if the feed marked the station temporarily closed the last time we saw it. |
| page_url | The station's page on this site, while it is in the feed. |
history-YYYY-MM.csv.gz
| node_id | Fuel Finder identifier, as in stations.csv. |
| fuel | E10, E5, B7_STANDARD, B7_PREMIUM, B10 or HVO. |
| date | Day of observation, YYYY-MM-DD. One reading per station, fuel and day: the last one we saw. |
| price_ppl | Price in pence per litre. |
| price_last_updated | When the retailer last changed this price, as reported by the feed (UTC). |
How the averages are calculated
The averages are the ones drawn in the charts of the price trends and of each town page, to the tenth of a penny. They leave out prices unchanged for more than 30 days on the day, and motorway services, which sit inside a town without charging its prices. A price more than 25p away from the day's median is left out of the average as a reporting error; the lowest price is not filtered, as it is a price a station actually showed.
Each average comes with the number of stations behind it. A town figure resting on one or two stations says little about the town: set your own threshold. Towns are listed when they have at least 3 stations.
The history files hold every price, stale ones included: price_last_updated says how old each one is, and some brands update far less often than others. They also keep stations that have since left the feed, listed on stations no longer reporting.
Licence and how to cite
Free to use, copy, adapt and publish, commercially or not, under the Open Government Licence v3.0. Retailers report the prices to the Department for Energy Security and Net Zero's Fuel Finder scheme under The Motor Fuel Price (Open Data) Regulations 2025; we collect, clean and keep them. Please include this attribution and a link to this page:
Contains public sector information licensed under the Open Government Licence v3.0. Data via fuelpricetoday.co.uk.
Suggested citation:
fuelpricetoday.co.uk (2026). UK fuel prices by filling station, daily, from the Fuel Finder feed. https://fuelpricetoday.co.uk/data (accessed [date]).
Longer history
The station files start on 7 Sep 2026, the first day of our collection. For the official weekly UK average since 2003, see petrol price history, from the Department for Energy Security and Net Zero. New and closed stations are on new stations, and the press figures by town on the press page.