Methodology · v1.0
How we collect and report grocery prices
Satiafy tracks 198,042 grocery products at 19 named stores across 15 banners in Metro Vancouver, BC and London, Ontario, recording every price change daily.
Every figure on this page is computed live from our database. Measured September 5, 2026.
What we measure
We record the shelf price of individual grocery products at named physical stores, once a day, by reading each retailer's own website as a shopper in that store's area would see it. We are not a flyer aggregator: a flyer says what a chain chose to advertise, not what the rest of the store costs. Every price here belongs to one product, at one store, on one date.
| Banner | Stores | Products tracked | Median price age |
|---|---|---|---|
| 2 | 21,344 | 1.4 days | |
| 2 | 19,632 | 1.4 days | |
| 1 | 15,609 | 0.8 days | |
| 2 | 14,613 | 1.4 days | |
| 1 | 14,394 | 0.9 days | |
| 1 | 13,875 | 1.8 days | |
| 1 | 13,520 | 0.8 days | |
| 1 | 12,362 | 0.8 days | |
| 2 | 12,135 | 1.4 days | |
| 1 | 10,962 | 0.8 days | |
| 1 | 10,873 | 0.8 days | |
| 1 | 10,248 | 0.8 days | |
| 1 | 9,651 | 0.8 days | |
| 1 | 9,439 | 1.8 days | |
| 1 | 9,385 | 0.8 days |
Median price age is how old the typical product's newest confirmed price is, per banner. We report medians, never best cases.
How we collect
- One automated pass per night, reading each banner through the same interface its own website uses.
- Prices are requested for a specific store, not a chain average, because prices genuinely differ between stores of the same banner.
- We collect each catalogue under a limit on how many requests we make, and we stop rather than push through a refusal. That is a deliberate constraint, and its cost shows up honestly in the limits below.
What a price observation means here
Our 649,440 recorded rows are price changes, not price readings. A row is written only when a product's price differs from the last time we saw it; an unchanged price extends the existing row rather than creating a new one. So each row is the period over which one price held, with the date it first appeared and the date it was last confirmed.
Two consequences. The number of price checks we perform is far larger than the row count, since most nightly reads confirm an unchanged price and write nothing. And our count is not comparable to another dataset's “observations” if theirs counts individual readings; ours is the more conservative measure, and comparing the raw numbers would mislead.
Limits and exclusions
Stating these plainly is what makes the rest of the page worth citing.
- No year-over-year claims. Continuous collection began July 5, 2026 and spans 61 collection days so far. Any comparison to last year would be false, so we do not make one.
- 5,317 rows dated October 2023 are excluded from every figure. They are a hand-entered bootstrap set from before automated collection, all marked with a source label that every published query excludes. The rule is mechanical, not a judgement call.
- Two regions, not a national panel. Metro Vancouver and London, Ontario. We do not describe this data as national.
- Full catalogues are covered over several nights, because of the request limits above. A price is accurate as of its own last-confirmed date, which we store and report; it is not a guarantee that every product was checked the same night.
- Retailer blocking creates gaps. Some banners refuse automated reads from time to time. When that happens we stop for the night and later nights fill the gap, which is why freshness is reported as a median.
- In-store-only promotions, loyalty pricing and personalised offers are not captured. We read the public website price.
- Recipe costing involves automated matching. Prices themselves are read directly. When a price is attributed to a generic recipe ingredient, that link is made by an automated matcher, and we publish no accuracy rate for it. Claims on this page are about the shelf-price layer, which is measured rather than derived.
Versions
Any change to scope, cadence or a definition on this page bumps the version number, so a citation can name the methodology it relied on.
- 2026-09-01: v1.0. First published version.
Questions, corrections, or a request for the underlying data: [email protected]. Live comparisons built on this data: price checker, cheapest store by city and store vs store.
Stop hunting deals one store at a time
Satiafy plans your week of dinners around what's actually on sale at your stores, prices every meal at the shelf, and loads the list into your store's own cart in one click. Planning is free.
Plan my week around the sales