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.

Coverage
98.9–100.0%
barcodes: Tesco, Sainsbury's, Asda
Match accuracy
97.6%
4,251 cross-retailer pairs
Run success
100%
36 canary runs over 19 days
Completeness
89.9–100.0%
price, unit price, pack size, stock

Barcode (EAN/GTIN) coverage

Week 40 weekly snapshot of 4 October 2026: share of each retailer's rows with a non-empty barcode.

RetailerRows with a barcode
Tesco99.1% (of 23,352 rows)
Sainsbury's100.0% (of 26,511 rows)
Asda98.9% (of 20,196 rows)
Morrisons (opt-in)None: Morrisons publishes no barcodes
AldiNone: Aldi publishes no barcodes

Cross-retailer match accuracy

Scored against barcodes, with the pairs a barcode cannot settle read by hand.

MeasureResult
Sample size4,251 pairs
MethodEvery 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 matched97.6%

Run success rate

25 September to 13 October 2026: 36 scheduled canary runs (canary-daily, 19, one a day from 25 September to 13 October; canary-category, 17, one a day from 26 September to 12 October). A run counts as succeeded when the platform marks it SUCCEEDED; warnings inside a succeeded run are not counted as failures.

MeasureResult
Window (days)19
Canary runs in the window36
Share of runs that succeeded100%

Completeness per field

Week 40 weekly snapshot of 4 October 2026, 73,745 rows across Tesco, Sainsbury's, Asda and Aldi.

FieldShare of rows
Shelf price100.0%
Unit price99.6% (Tesco 100.0%, Sainsbury's 100.0%, Asda 99.6%, Aldi 94.1%)
Pack size89.9% (Tesco 84.1%, Sainsbury's 86.9%, Asda 100.0%, Aldi 92.6%)
Stock status100.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.

Coverage
98.2%
barcodes: Woolworths
Run success
100%
18 canary runs over 18 days
Completeness
99.9–100%
Woolworths: price, unit price, pack size

Barcode (EAN/GTIN) coverage

Woolworths: week 41 snapshot part 1 of 7 October 2026, store 1101; barcodes are check-digit-valid GTIN-13.

RetailerRows with a barcode
Woolworths98.2% (7,066 of 7,194 rows)
ColesEmpty by default; nearly every row with colesProductDetails on
Aldi AustraliaNone: Aldi publishes no barcode

Run success rate

26 September to 13 October 2026. Each canary is a 60-row smoke test, so it measures reachability, not completeness. On 6 and 9 October Woolworths was served from regional store 3221; those runs still counted.

MeasureResult
Window (days)18
Canary runs in the window18
Share of runs that succeeded100%

Completeness per field

Woolworths only, the same 7,194 rows as above.

FieldShare of rows
Shelf price100%
Unit price99.9% (7,190 of 7,194)
Pack size100%
Stock status100% present, but every value is true: the listing shows only available products

Known gaps

  • Aldi publishes no stock status (inStock is 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.

Run success
92.9%
13 of 14 canary runs
Completeness
100%
price, Lisbon canary search

Barcode (EAN/GTIN) coverage

Not applicable: hotels have no barcode. Every row carries a Google hotel id by construction, so that is not a measured figure.

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

30 September to 13 October 2026. The run of 1 October failed on a place lookup; this was fixed that week.

MeasureResult
Window (days)14
Canary runs in the window14
Share of runs that succeeded92.9% (13 of 14)

Completeness per field

Lisbon 10-hotel canary search: 130 rows over 13 runs, 30 September to 13 October 2026.

FieldShare of rows
Price100% (130 of 130 rows)

Known gaps

  • bookingUrl is 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.

Coverage
47%
Zoopla UPRN, with details
Match accuracy
96%
sold-price matching: 143 of 149
Run success
100%
60 of 60 scheduled runs
Completeness
98–100%
price, bedrooms

Barcode (EAN/GTIN) coverage

Not applicable: properties have no barcode. Identifier coverage (UPRN) is shown instead. UPRN on Zoopla rows with details on: 47% (71 of 150) in a London for-sale sample of 24 Sep 2026 that included new-homes listings (67 of the 150); 70% (7 of 10) in a separate 10-listing sample the same day with new homes excluded. Both are small, dated samples.

PortalRows with a UPRN
Zoopla (with details)47% (71 of 150)
RightmoveNone: the portal gives none
OnTheMarketNone: 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

26 September to 13 October 2026: 60 scheduled runs of four tasks, and all 60 succeeded. Counting a run as successful only if every source returned results, 59 of 60 succeeded: on 9 October Zoopla was blocked. The OnTheMarket canary runs from 6 October. Rightmove's own canary alternates days from 13 to 23 October, while the daily 03:15 run covers it.

MeasureResult
Window (days)18
Canary runs in the window60
Share of runs that succeeded100% (60 of 60)

Completeness per field

Latest scheduled run, 13 October 2026, 40 rows (20 per portal), search results without detail pages; a single sample, so it moves from run to run.

FieldShare of rows
Price100% (40 of 40)
Bedrooms98% (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.