Fuel Price Today

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.

Stations
8,146
Days of history
49
Station prices
1,293,857
Latest day
25 Oct 2026

Files

Updated after every collection of the feed. Last written 25 Oct 2026.

FileWhat it holdsRowsSize
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
492 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,7172.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,1463.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
12626 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,3573.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,5002.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

dateDay of observation, YYYY-MM-DD.
unleaded_avg_pplAverage unleaded (E10) price, pence per litre, one decimal.
unleaded_stationsNumber of stations behind that average.
diesel_avg_pplAverage diesel (B7) price, pence per litre, one decimal.
diesel_stationsNumber of stations behind that average.
price_changesStation prices, all fuels and all stations, that differ from the day before. Blank on the first day.

towns-daily.csv

dateDay of observation, YYYY-MM-DD.
townTown name as shown on this site.
town_slugIdentifier of the town, as in /petrol-prices/<town_slug>.
nationEngland, Scotland, Wales or Northern Ireland.
unleaded_avg_pplAverage unleaded (E10) price in the town, pence per litre.
unleaded_min_pplLowest unleaded price at a station in the town that day.
unleaded_stationsNumber of stations behind the unleaded figures.
diesel_avg_pplAverage diesel (B7) price in the town, pence per litre.
diesel_min_pplLowest diesel price at a station in the town that day.
diesel_stationsNumber of stations behind the diesel figures.

stations.csv

node_idFuel Finder identifier of the station. Stable, and the key into the history files.
nameStation name, with consistent capitalisation.
brandBrand, one spelling per brand. Blank for independents.
brand_rawBrand exactly as the retailer reported it.
addressAddress lines as reported, with consistent capitalisation.
townTown as shown on this site.
postcodeFull postcode.
postcode_districtOutward code, for example BA1.
postcode_areaPostcode area, for example BA.
nationDerived from the postcode, as the feed's own country field is unreliable.
latitudeWGS84 latitude.
longitudeWGS84 longitude.
motorway1 for motorway services.
supermarket1 for a supermarket forecourt.
members_only1 where only members can buy fuel (Costco).
servicesServices reported by the station, separated by semicolons.
temporarily_closed1 if the feed marks the station temporarily closed.
first_seenFirst day we recorded a price for the station.
last_seenLast day we recorded a price for the station.
page_urlThe station's page on this site.
fuelsFuel grades the station declares it sells, separated by semicolons (E10, E5, B7_STANDARD, B7_PREMIUM, B10, HVO). A grade missing here proves nothing.
opening_hoursOpening hours in OpenStreetMap opening_hours syntax, converted from the feed. Blank when any day is not reported.
phonePublic phone number, as reported.
coordinates_fixBlank 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

changearrival (first price reported), departure (no price for 7 days or more) or return (reporting again after such a gap).
dateArrival: first day with a price. Departure: last day with a price. Return: day it came back.
node_idFuel Finder identifier, as in stations.csv.
nameStation name.
brandBrand, one spelling per brand. Blank for independents.
townTown as shown on this site.
postcodeFull postcode.
nationEngland, Scotland, Wales or Northern Ireland.
daysDeparture: days since the last price. Return: length of the absence, in days.
permanently_closed_onDeparture: the date the feed gives for a permanent closure, when it gives one.
temporarily_closedDeparture: 1 if the feed marked the station temporarily closed the last time we saw it.
page_urlThe station's page on this site, while it is in the feed.

history-YYYY-MM.csv.gz

node_idFuel Finder identifier, as in stations.csv.
fuelE10, E5, B7_STANDARD, B7_PREMIUM, B10 or HVO.
dateDay of observation, YYYY-MM-DD. One reading per station, fuel and day: the last one we saw.
price_pplPrice in pence per litre.
price_last_updatedWhen 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.