How we track prices across every UK supermarket
A price is not a number. It is a pack size, an offer flag, sometimes a loyalty ticket, and a unit hiding in the corner. This is how Groceria turns 12,000+ public shelf prices into a comparison you can trust.
REFRESHED DAILY
Updated 13 September 2026 with clearer matching rules and loyalty-price caveats. Launch coverage is 8+ UK chains; more follow.
We are asked, about once a week, whether Groceria "has a deal with Tesco". We do not. We read the same public prices a shopper can read — online shelf tickets, pack sizes, offer flags — then we do the unglamorous work humans hate in aisle four: convert everything to a unit, decide what is actually the same product, and refuse to compare a 300g punnet with a 400g one as if they were twins.
That pipeline is why the homepage can say 12,000+ prices, refreshed daily without turning the app into a rumour mill. This post is the method, in plain English. No war stories about bypassing anyone's systems. If a price is not listed for ordinary customers, we do not invent it.
Why a price isn't a number
Ask eight UK supermarkets for "strawberries" and you do not get eight numbers. You get eight catalogues: different pack weights, seasonal British versus imported, "taste the difference" versus everyday, a Clubcard ticket that only exists if you scan a card, a multibuy that collapses if you wanted one punnet. A comparison app that only stores "£2.49" has already failed.
The honest object is a row with at least this:
The Price Marking Order 2004 already forces most GB retailers to publish a unit price on pre-packed goods. We treat that unit as the source of truth and recompute it when the pack size is clear, so a missing or rounded shelf ticket does not sneak through.
"If we cannot say what you are buying, we will not say it is cheaper."
What we actually collect
Launch coverage is the chains UK shoppers already use for a weekly shop: Tesco, Asda, Sainsbury's, Lidl, Aldi, Morrisons, Waitrose and Iceland, with more to follow. We collect publicly listed grocery prices — the tickets a customer can see without a trade login — and we refresh that catalogue every day. "12,000+" is the size of the compared set, not a claim that we have every SKU in the country. A Tesco Extra can hold tens of thousands of lines. We start with the basket people repeat: produce, dairy, meat, cupboard, household, freezer staples.
Each refresh is a replace-and-check, not a rumour. If a line disappears from a store's public list, it disappears from Groceria or is marked unavailable. We would rather show a hole than a zombie price from Tuesday.
| Field | Why it exists |
|---|---|
| Shelf price | What the ticket says before maths |
| Pack size | Stops 300g vs 400g fake wins |
| Unit price | The only fair comparison |
| Offer / loyalty flag | So "cheapest" matches the till you will use |
| Collected at | Stale prices get dropped, not decorated |
Matching a banana to a banana
The hard problem is not collecting prices. It is deciding two products are comparable. Tesco's "loose bananas, per kg" and Asda's "bananas 1kg bag" can be compared on £/kg. Tesco Finest smoked salmon and Aldi's everyday smoked salmon cannot be treated as the same dinner just because both say salmon.
We use three match grades, and the app is allowed to be boring about them:
Humans still review the messy middle — new seasonal lines, renamed own-brands, a pack that quietly lost 50g. That is why Maya's piece on front-of-store decoys and Tom's £20-a-week habits keep coming back to the unit. The pipeline is built to make that glance automatic.
Offers, Clubcard and the till you will actually use
UK grocery now runs two prices in one aisle. Tesco Clubcard, Sainsbury's Nectar, and similar tickets can be the real till price for people who will scan a card — and a fiction for people who will not. We store both when the retailer shows both, and we label which one we used to crown "cheapest".
Multibuys are normalised to a single-unit equivalent. If the deal only works at three packs, we will not tell a household buying one that they have beaten Aldi's everyday tin. Yellow-sticker and local clearance are usually too short-lived and too store-specific to treat as a national comparison, so we do not pretend they are a strategy.
The CMA has spent the last few years looking hard at grocery competition and loyalty pricing. Our rule is simpler than a regulator's report: the price we rank on must be a price a typical shopper can actually pay on that visit, with the conditions written next to it.
What we check before you see it
A daily feed is only as good as the rejects. Before a price can win a comparison it has to survive a dull checklist:
When we get it wrong — and we will — the fix is a correction with a timestamp, not a quiet edit. That is the same standard we expect from a receipt.
What we will not claim
Honesty is a feature. Here is the small print we would rather put in the article than in a footer nobody reads:
What the pipeline is for:
Sources and further reading
- Price Marking Order 2004 — the legal unit-price ticket we treat as ground truth.
- Competition and Markets Authority — groceries market and loyalty-pricing context.
- ONS inflation and price indices — why a price without a date is not a fact.
- Groceria: under the hood — the same trolley, two totals, in product form.