Tesco UK Grocery Scraper avatar

Tesco UK Grocery Scraper

Under maintenance

Pricing

from $3.00 / 1,000 product results

Go to Apify Store
Tesco UK Grocery Scraper

Tesco UK Grocery Scraper

Under maintenance

Scrapes product listings from tesco.com/groceries — returns names, prices, unit prices, brands, Clubcard offers, and sizes for any search query.

Pricing

from $3.00 / 1,000 product results

Rating

5.0

(1)

Developer

Siddhant

Siddhant

Maintained by Community

Actor stats

0

Bookmarked

71

Total users

6

Monthly active users

2.1 days

Issues response

15 hours ago

Last modified

Share

Scrapes product listings from tesco.com/groceries — the UK's largest supermarket.

Proxy requirement

This Actor requires UK residential proxies. Tesco sits behind Akamai, which returns HTTP 403 to datacenter IPs, so datacenter proxies cannot scrape it. If residential is unavailable the Actor falls back to datacenter and says so in the log, but expect 403s.

Residential proxies are included on most Apify plans and bill by data traffic — roughly 0.9 MB per search page. If a run fails with

Proxy rejected the CONNECT tunnel with status code 590
, that is usually transient pool capacity: re-run it. Persistent 590s mean your account has no residential access, and the run will fail with an explanatory message rather than returning an empty dataset.

What it does

Search for any product and get structured data including:

  • Product name and brand
  • Price (£) and unit price (e.g. £0.62/litre)
  • Unit size (e.g. 400g, 2 pints, 6 pack)
  • Clubcard offers and promotions
  • Image URL and product page URL
  • Product ID (Tesco's internal ID)

Input

FieldTypeDescription
queriesstring[]Search terms (e.g. ["baked beans", "milk"])
maxResultsPerQueryintegerMax products per query (default: 20, max: 100)
debugNetworkbooleanRecord Tesco JSON response metadata and timings to the default key-value store for payload discovery
debugCaptureBodiesbooleanWhen debugNetwork is true, include truncated payload samples for useful JSON responses

Output

Each result is a JSON object:

{
"store": "tesco",
"query": "baked beans",
"name": "Heinz Beanz 415g",
"brand": "Heinz",
"price": 1.65,
"unitPrice": 0.4,
"unitPriceMeasure": "per 100g",
"unitSize": "415g",
"onOffer": true,
"offerDescription": "Clubcard Price: £1.25",
"imageUrl": "https://...",
"productUrl": "https://www.tesco.com/groceries/en-GB/products/...",
"productId": "123456789",
"scrapedAt": "2026-03-28T12:00:00.000Z"
}

Notes

  • Uses UK residential proxies to access Tesco (required due to Akamai bot protection)
  • Establishes a session on the Tesco homepage before searching, to pass bot detection
  • CSS class selectors use the gyT8MW_ prefix (Tesco's current naming convention) — may need updating if Tesco redeploys
  • With debugNetwork: true, the actor writes TESCO_DEBUG_<query> records to the default key-value store with timings, matched JSON endpoints, and useful payload summaries