petrolprices.com is still going strong. nice to meet one of the OGs.
HN user
theazureguy
shell's logo does have a lot of yellow but morrisons has already claimed yellow on the chart.
data goes back to january but coverage is patchy early on as we were doing full fetches rather than continuous polling. march onwards is complete.
Ahhh thanks for that. I have deployed a change to fix this ASAP.
Absolutely, feel free to reach out. contact details are on the site. would love to see how I can help!
bespoke design but used tailwind for styling. charts are recharts. no dashboard lib.
really appreciate the feedback, that's a valid point. I will review and make it more accessible.
really appreciate you taking the time to check it properly. I will get them both fixed some time this week!
that 5 minute reporting requirement is way stricter than the uk.
Might have a play with that thank you.
yeah that's as far back as my data goes, started ingesting in march. no history existed before that
I would love too. But I have not found an API that surfaces this data. This data is only public as the CMA determined the market was fundamentally broken.
some of my replies yeah, been a bit busy keeping the site up while the thread was live. helps with the typos too.
Yeah aware of some data quality issues in the feed, bad coordinates, missing brands, occasional obviously wrong prices. I filter out anything outside 100-300p and exclude stations flagged as closed but there's definitely still noise in there. check the methodology page for the full detail on how i clean it.
On the colours, esso and shell are both red brands so they ended up close on the chart. will fix that.
checked the db, tesco e5 is 163.8p average across 292 stations in the last 21 days. Worth spot checking a few specific stations if it still looks off to you.
yeah that's fair, without wholesale rack prices as a baseline you can't really isolate station behaviour from what's happening upstream.
fair point on scraper, it's more of an ingest pipeline really. the 90k is total price records across 7,700 stations since january, stations update a few times a week on average. the 10 min polling catches every move when it happens. the value is in the per-station, history over time, not the raw volume.
Update for anyone who hit a slow site earlier: b1ms postgres wasn't having a great time with 140 concurrent users. scaled the db up, bumped the instance, and shipped in-memory output caching while the thread was live so repeated requests stop hammering the db. Site is fully up and fast now. appreciate the interest, genuinely didn't expect to front page today.
already on it, just shipped in-memory output caching while the thread was live. next step redis if it needs it
yeah scaling it up now, was hoping to keep costs down but HN had other ideas
haha not quite, db was struggling under the load for a few minutes. b1ms postgres doesn't love 6k requests in 30 mins.
Good shout. DESNZ publishes weekly wholesale rack prices and they are OGL, so there is no barrier there. The interesting bit isn't just showing the gap; it's the propagation lag. Wholesale spikes and pump prices follow within days. Wholesale drops and pump prices take their time. That asymmetry is basically what I built this dataset to measure. Adding the wholesale series as a reference line is on the list.
Yeah Asda is in there. I match on brand name directly rather than the API's is_supermarket flag because that flag is all over the place (loads of Asda stations don't have it set). So it explicitly checks for Asda, Tesco, Morrisons, Sainsbury's, Co-op, Costco.
Your point about post-PE Asda is interesting, I've noticed it too. If you want to see how they compare individually you can check the brands page on the site, shows each supermarket chain as its own line. Pretty easy to split the supermarket aggregate out per brand too, would probably show Asda creeping back towards the independents since the takeover. Might add that.
I got frustrated that every fuel price app just shows you what's cheap nearby. I wanted to know how stations actually behave: do prices go up faster than they come down, do supermarkets really save you much, how bad are motorway prices really?
So I built a scraper that hits the UK government's mandatory Fuel Finder API every 10 minutes and stores every price change. 90k records across 7,700 stations since January.
Some things I found that surprised me:
The rocket and feather effect is real and measurable. When stations raise prices the average move is 2.35p/litre. When they cut, it's 1.85p. There are also more up moves than down moves. I queried the raw history to check this rather than eyeballing a chart.
Motorway fuel is 28.4p/litre more expensive than everywhere else right now. That's about £14 extra on a 50L fill. Everyone knows motorways are expensive but I didn't expect the gap to be that wide.
The supermarket discount is only about 1.7p. I assumed it would be bigger.
Stack is Azure Functions, TimescaleDB, PostGIS, Next.js. The interesting thing about this project is the history. No public site shows how an individual station has priced over time or how a local cluster of stations react to each other. That's what I'm building towards.
Site: https://fuelinsight.co.uk
Happy to talk through the architecture or the data if anyone's interested.