Data quality
How complete and accurate our data is, one section per Actor, with known gaps stated plainly. Last updated: 13 October 2026.
How we measure
For UK grocery, barcode coverage, completeness and match accuracy are counted from the latest complete weekly snapshot (one row per product per retailer; week and date stated with each figure); run success is read from the canary runs' metadata. For the other Actors, barcode coverage is the share of rows in the sample stated with each figure that carry a barcode (EAN/GTIN), and completeness is the share of those rows that have a value for the field. Run success rate is the share of scheduled canary runs that succeeded over the stated number of days; a canary is a small smoke test, so it shows that a run can reach its sources, not that every field is complete. Where we checked matches by hand, the sample size and method are stated with the figure. Every figure comes from the snapshot files, run metadata, canaries or hand checks and is dated. None is estimated, and where we have no measurement the row is left out.
Freshness is not measured: run success is the platform status, and each run reads the source's live pages at its start time (scrapedAt); a retailer serving a stale page to everyone would not be detected.
UK grocery
UK Supermarket Price Scraper: Tesco, Sainsbury's, Asda and Aldi, with Morrisons opt-in.
Barcode (EAN/GTIN) coverage
| Retailer | Rows with a barcode |
|---|---|
| Tesco | 99.1% (of 23,352 rows) |
| Sainsbury's | 100.0% (of 26,511 rows) |
| Asda | 98.9% (of 20,196 rows) |
| Morrisons (opt-in) | None: Morrisons publishes no barcodes |
| Aldi | None: Aldi publishes no barcodes |
Cross-retailer match accuracy
| Measure | Result |
|---|---|
| Sample size | 4,251 pairs |
| Method | Every cross-retailer pair with an identical matchKey in the 4 October 2026 weekly snapshot (4,251 pairs). Pairs where both rows carry a barcode (4,225) are scored by whether the barcodes match: 4,124 agree (97.6%; a product listed under a second barcode counts as wrong). The 127 pairs a barcode cannot settle were read by hand on brand, name, pack size and price; counting those, 4,228 of 4,251 (99.5%). This measures exact-matchKey joins only, which find about 14.8% of the pairs a barcode proves are the same product. |
| Share correctly matched | 97.6% |
Run success rate
| Measure | Result |
|---|---|
| Window (days) | 19 |
| Canary runs in the window | 36 |
| Share of runs that succeeded | 100% |
Completeness per field
| Field | Share of rows |
|---|---|
| Shelf price | 100.0% |
| Unit price | 99.6% (Tesco 100.0%, Sainsbury's 100.0%, Asda 99.6%, Aldi 94.1%) |
| Pack size | 89.9% (Tesco 84.1%, Sainsbury's 86.9%, Asda 100.0%, Aldi 92.6%) |
| Stock status | 100.0% for Tesco, Sainsbury's and Asda; Aldi publishes none |
Known gaps
- Aldi publishes no barcodes and no stock status, and its products rarely share an exact name with another retailer's, so most Aldi rows can't be joined to other retailers automatically; compare them by unit price.
- Morrisons publishes no barcodes.
- Asda stock status is for Asda's default store only.
AU grocery
Australia Supermarket Price Scraper: Coles, Woolworths and Aldi Australia.
Barcode (EAN/GTIN) coverage
| Retailer | Rows with a barcode |
|---|---|
| Woolworths | 98.2% (7,066 of 7,194 rows) |
| Coles | Empty by default; nearly every row with colesProductDetails on |
| Aldi Australia | None: Aldi publishes no barcode |
Run success rate
| Measure | Result |
|---|---|
| Window (days) | 18 |
| Canary runs in the window | 18 |
| Share of runs that succeeded | 100% |
Completeness per field
| Field | Share of rows |
|---|---|
| Shelf price | 100% |
| Unit price | 99.9% (7,190 of 7,194) |
| Pack size | 100% |
| Stock status | 100% present, but every value is true: the listing shows only available products |
Known gaps
- Aldi publishes no stock status (
inStockis null). - Coles answers about 80 requests per run, so a run returns at most a few thousand Coles products (about 75 with barcode lookup on), not the whole range; the weekly Coles snapshot behind the AU index reads staples first.
- Woolworths prices are for the store Woolworths assigns to a logged-out session: usually 1101, sometimes a regional store, which changes the range (2 of 8 scheduled canary runs on 5–12 October 2026). Every row records its store in
storeId; the weekly snapshot and the AU index use store 1101 only. - Special Buys are returned by their own mode; the weekly Aldi snapshot behind the AU index covers the regular range only.
Hotels
Google Hotels Price Scraper: hotel search results and per-booking-site vendor rates.
Barcode (EAN/GTIN) coverage
Matched on Google's hotel id
A hotel is matched across searches and weeks by Google's own hotel id: an exact match on the id, with no fuzzy matching.
Run success rate
| Measure | Result |
|---|---|
| Window (days) | 14 |
| Canary runs in the window | 14 |
| Share of runs that succeeded | 92.9% (13 of 14) |
Completeness per field
| Field | Share of rows |
|---|---|
| Price | 100% (130 of 130 rows) |
Known gaps
bookingUrlis null by design.- Rate history covers only the tracked set: the top 20 hotels in each of 50 cities, two-night stays 2 and 6 weeks out.
- Street address is filled only in hotel lookups, not in search results.
Property
UK Property Listings: Rightmove, Zoopla and OnTheMarket.
Barcode (EAN/GTIN) coverage
| Portal | Rows with a UPRN |
|---|---|
| Zoopla (with details) | 47% (71 of 150) |
| Rightmove | None: the portal gives none |
| OnTheMarket | None: the portal gives none |
Sold-price matching
Land Registry sale matched to Rightmove's sold record (exact postcode, date and price): 143 of 149 (96%), June–July 2026 sales.
Run success rate
| Measure | Result |
|---|---|
| Window (days) | 18 |
| Canary runs in the window | 60 |
| Share of runs that succeeded | 100% (60 of 60) |
Completeness per field
| Field | Share of rows |
|---|---|
| Price | 100% (40 of 40) |
| Bedrooms | 98% (39 of 40; Rightmove 20 of 20, Zoopla 19 of 20) |
Known gaps
- Each portal limits a search to about 1,000 results, so a broad search returns a capped sample.
- On Zoopla, UPRN and EPC rating are often missing on new-homes listings.