← The Receipt · all posts ISSUE Nº 03 · BEHIND THE SCENES
BEHIND THE SCENES · Nº 03

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.

Fresh UK produce — the kind of everyday grocery lines Groceria price-checks across supermarkets REFRESHED DAILY
NOT A MAGIC API — A PIPELINE WITH RULES, MATCHES AND THINGS WE REFUSE TO FAKE

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.

01

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:

Store and fulfilment. Which chain, and whether the ticket is typical national online or flagged as local. We do not pretend a Cornish store matches a Glasgow one when the retailer says it does not.
Identity. Name, brand or own-brand, pack size, unit of measure. "Eggs ×12" is not "eggs ×6".
Money. The shelf price, the unit price (£/100g, £/litre, £/each), and whether an offer or loyalty ticket is required to get it.
When. A collected-at timestamp. Yesterday's banana is a different fact from this morning's.

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."
REALITY CHECK Nº 3
The comparison is the product Search an item, see the unit, see the cheapest store. That is the whole app — kept honest by this pipeline. Get early access →
Lidl · 400g 62p
Asda69p
Tesco80p
02

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.

What Groceria stores for each grocery price
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
03

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:

1 Same line. Same brand, same size, same product — or the retailer's own-brand equivalent where the spec is close enough (semi-skimmed 4-pint, 400g baked beans, 500g spaghetti). These get a straight cheapest-store badge.
2 Same job, different pack. We still show them, but we rank on unit price and we label the pack. You choose whether 1kg of chicken is the same decision as 600g.
3 Do not match. Premium versus value, fresh versus ready meal, organic versus standard unless you asked. A fake "win" would burn trust faster than a missing row.

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.

04

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.

SAVINGS VOUCHER · NO. GRC-2026 The pipeline exists so you can forget it You write a list. We attach a store and a unit. See what that is worth on your weekly spend.
Do the maths →
05

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:

Pack maths. Shelf price divided by size should match the stated unit within a small rounding tolerance. If it does not, a person looks at it.
Impossible moves. Milk does not fall 80% overnight without a data error. Outliers get quarantined, not published as a "deal".
Staleness. If today's refresh missed a store, we do not silently reuse last Thursday and hope.
Name sanity. A matching model that glues "free range" to "value" because both say eggs gets overruled.

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.

06

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:

Not every SKU, not every town. We compare a large, useful catalogue nationally. In-store tags can still differ. If your local Asda has a different ticket, the local ticket wins in real life.
Not live to the second. Daily is the promise at launch. Promotions can change inside a day. We date-stamp so you can see the freshness.
Not a legal advice service. Unit-price law is the retailer's duty. We use it; we do not enforce it.
Not financed by the stores we rank. Groceria is free because discounted gift cards sit beside the list — you choose to use them. No store pays for a better rank.
HOW THE APP STAYS FREE Gift cards, not ads against your list We make money when you take a few extra pounds off a store you were already visiting. Rankings stay independent of that. Browse gift cards →
SAINSBURY'S £50 → £46.90
ASDA £50 → £45.75

What the pipeline is for:

WHAT WE PROMISE
THE RECEIPT · ISSUE Nº 03
PUBLIC PRICES ONLYYES
UNIT FIRSTYES
LOYALTY LABELLEDYES
STORES PAYING FOR RANKNO
REFRESH DAILY
8+ CHAINS AT LAUNCH · MORE COMING

Sources and further reading

THE PIPELINE IS READY · THE LIST IS YOURS Join early access and see the compared shop the week we launch

FREE FOREVER · IOS & ANDROID · LAUNCHING SOON
#behind-the-scenes #price-data #unit-pricing #uk-supermarkets
WRITTEN BY Priya Shah Head of Data at Groceria. Previously built catalogue-matching systems for UK retail media. Believes a comparison that needs a footnote in six-point type is not a comparison. More from Priya →
Read next All posts →
DOOR PRICE TRICKS Why the "cheap" item at the front is never the deal MAYA OKAFOR · 8 MIN £20/WK SAVING TIPS Five habits that quietly save £20 a week TOM WHITFIELD · 8 MIN −£13 PRODUCT Same trolley. Two very different totals. UNDER THE HOOD