Fuel Finder open data · OBD fuel level · fuel card

Where to fill,
and the truth about the card.

Since 2026 every forecourt in the UK has to publish its prices within 30 minutes of changing them, and the government shares the lot as open data. This build puts those prices on the wall panel's map. It reads the work van's real fuel level from its tracker and warns Kev's phone when the tank gets low, naming the best places to fill. It also checks, week by week, whether the business fuel card is actually cheaper than the pumps. The card's price arrives by text every Friday, and now that text updates Home Assistant by itself.

GOV.UK Fuel Finder no API key OBD fuel level card vs pump

8,121UK forecourts priced
30 minlegal reporting window
3best places per alert
10 of 169pumps the card beat this week
01 · The data

Every forecourt in the country, for free

Fuel Finder is a legal requirement, not a website. Since February 2026 every UK forecourt must report a price change within 30 minutes, and the regulator can fine the ones that don't. The data comes two ways: an API with 30-minute freshness that needs a free registration, and a CSV of every station that needs nothing at all. This build uses the CSV: about 7.8 MB, refreshed twice a day. A small service on the Pi checks it every fifteen minutes with a conditional request, so an unchanged file costs one tiny "not modified" reply.

Home Assistant serves a compressed copy of the station file, so the whole of the UK loads on the panel in about 0.6 MB and revalidates for free. The van's position and fuel level stay private: they're read through Home Assistant's login, never from a public file.
Open data needs a sanity filter. On the first run, the cheapest diesel within ten miles was 16p under everything around it. It hadn't reported a price for a month. So a price not reported for two weeks is greyed out on the map and never recommended, and anything over a week old is marked "may be out of date".
02 · The van's tank

The fuel gauge, read from the diagnostic port

The van already carried a Teltonika OBD tracker for the Traccar map. It turns out it reads the engine computer's fuel-level value too, reported to Traccar as a bare number with no label. It only arrives while the engine is running, so the service keeps the last reading while the van is parked.

Learned economy

Pairs of readings 40 km or more apart, with no fill-up between them, give the van's real consumption: about 0.16% of the tank per kilometre, or 11 L/100 km. That turns a percentage into miles you can drive.

Fill-ups, found

A jump of 12 points or more is a fill-up. It's matched to the forecourt where the van last parked, which is the groundwork for a fuel log with litres, cost and real mpg.

On the Traccar tab

The van's card now shows its fuel level and range next to its speed and battery voltage, with a gauge that turns red below the alert level.

03 · Where to fill

Cheapest isn't the same as best

A station nine miles away can be 7p a litre cheaper and still cost more, because you burn fuel getting there and back. So the recommendations rank by value: the price times the litres needed to fill the tank, plus the fuel for the round trip, taking the road as about 1.35 times the straight-line distance. When the van's level drops below the alert threshold (15% by default), Kev's phone gets one alert per low spell with the best three places and a navigation button. It re-arms after the next fill-up.

Phone notification · example
Home Assistant · now
⛽ Van fuel 10% · about 39 miles left
Best places to fill near the van: 1. Supermarket: 193.9p, 3.4 mi 2. Independent: 197.4p, 1.3 mi 3. Main-road garage: 196.9p, 2.2 mi Cheapest pump: independent, 189.9p, 9.0 mi
GO: SUPERMARKETGO: INDEPENDENT

Why the 9-mile one isn't first

At 10% there are about 63 litres to put in. Saving 7p a litre saves about £4.40, but getting there and back is about 24 miles by road, which burns about £8 of fuel. The value ranking sees that; a plain price sort doesn't. The first alert went out for real, at 10% with about 39 miles left.

04 · The maps

A fuel layer on the tracker, and a map of its own

On the Traccar tab a new Fuel button puts price pins on the map, coloured from cheapest (green) to dearest (red), with the three cheapest in view numbered and listed. A selector switches between diesel, petrol, super and premium diesel. A Fuel map button opens a full map with a ranked list around the van or the house, sortable by value, price or distance. Tap a station to see every grade with how fresh each price is, its hours, and a button that sends it to the phone with directions.

Map pins · example values
1193.9best value
197.4typical
214.9motorway
177.9not reported for a month
202.6201.7card site: pump cheaper
200.4201.7card site: card cheaper
05 · The fuel card

Is the card actually cheaper? Mostly, no.

The van runs on a UK Fuels card, fuelplus through Radius, with a fixed weekly diesel price quoted without VAT and valid from Monday. At the supermarket forecourts that take it the price is a little higher: 3p more in September. So every station that takes the card shows both prices, card | pump, with VAT added to the card price so the two compare fairly. The dearer half is greyed, and the station's own panel says plainly which way to pay.

A card site, tapped · example values
202.6p
168.84p + VAT
201.7p
reported 4 days ago
Pay at the pump here: 0.9p a litre cheaper than your card. From Monday the card is 200.4p, 1.3p under today's pump.

What the first week showed

With VAT added, this week's card price beat only 10 of 169 pumps within ten miles. The supermarkets' own pumps were cheaper than the card's supermarket price every time. Next week's card price is lower, but 130 pumps are still cheaper. Kev had suspected as much. Now the map shows it at a glance, every week, without anyone doing the maths.

06 · The Friday text

Nobody types the price in

Radius texts next week's card price every Friday afternoon. The plan was for the phone's Home Assistant app to read the notification. That sensor turned out not to exist in this build of the app, so a free automation app, MacroDroid, now does one job: when a text arrives containing "fuel price", it sends that text, and nothing else, to a private Home Assistant webhook. A script reads the week and the price, stores it as next week's price and sends a summary. At midnight on Monday it becomes the current price.

The text · account number masked
Radius · Friday 17:05
Account ••••••. Fuel price for w/c 28.09.26. Your UK Fuels fuel price is 167ppl. Our T&Cs can be found at ukfuels.co.uk.
A few minutes later
Home Assistant · now
⛽ Card diesel from Mon 28 Sep: 167.00p + VAT
200.4p with VAT, down 1.84p on this week. Cheaper at the pump near home right now: Supermarket: 193.9p, 3.4 mi Independent: 197.4p, 1.3 mi

Only that text leaves the phone

A notification sensor would have passed every message to Home Assistant. MacroDroid only fires on the fuel text. The webhook address is kept in Home Assistant's secrets file, and Home Assistant showed it to Kev in its own notifications, so it never went through a chat.

GET, not POST

The first real test never arrived. Home Assistant's log showed MacroDroid sends GET by default, and the webhook only accepted POST. It accepts both now, with the text in the address's query string.

Works away from home

The text lands at five o'clock on a Friday, often on the road. The webhook is reachable through the house's secure public address, and was tested from outside before it was trusted.


Fuel, at home

Open data, one tracker and one text a week.

No paid price feed, no fuel-card API, nothing new in the van. The government's open data gives every pump price, the tracker that was already there gives the fuel level, and the supplier's own Friday text keeps the card price current. What's next: the 30-minute API once it's registered, a fuel log with real mpg, and asking Luna "where's the cheapest diesel?"

Fuel Finder · open data·OBD fuel level·on the Traccar tab