Methodology · v1.1
How we collect and report grocery prices
Satiafy tracks 199,116 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 October 20, 2026.
What we measure
We record the listed price of individual grocery products at named stores, once a day, from prices the retailers publish for that store. 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 | Since last confirmed (median) |
|---|---|---|---|
| 2 | 21,611 | 1.4 days | |
| 2 | 20,482 | 1.1 days | |
| 1 | 15,920 | 19 hours | |
| 2 | 14,580 | 1.1 days | |
| 1 | 13,893 | 19 hours | |
| 1 | 13,560 | 19 hours | |
| 1 | 13,395 | 17 hours | |
| 1 | 12,605 | 19 hours | |
| 2 | 11,779 | 1.1 days | |
| 1 | 11,623 | 19 hours | |
| 1 | 11,485 | 19 hours | |
| 1 | 10,737 | 19 hours | |
| 1 | 9,538 | 19 hours | |
| 1 | 9,263 | 19 hours | |
| 1 | 8,645 | 19 hours |
The time since the typical product's price was last confirmed, per banner, at the moment these figures were computed. Banners we can cover in one daily pass sit under a day; banners covered over several passes sit at one to three days. We report medians, never best cases.
How we collect
- One pass per day, from the prices each retailer publishes.
- Prices are recorded for a specific store, not a chain average, because prices genuinely differ between stores of the same banner.
- Not every product is confirmed every day. Each price carries the date it was last confirmed, and that date is what every figure on this site reports.
What a price observation means here
Our 1,049,796 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 daily 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 106 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.
- Some catalogues are covered over several days. 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 day, which is why freshness is reported as a median.
- In-store-only promotions, loyalty pricing and personalised offers are not captured. We record the price published to everyone.
- 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.
- 2026-09-07: v1.1. Collection described at the level of what is recorded, not how; freshness shown in hours where under a day.
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