Tesco Groceries Scraper — UK Products & Prices avatar

Tesco Groceries Scraper — UK Products & Prices

Pricing

from $5.00 / 1,000 result scrapeds

Go to Apify Store
Tesco Groceries Scraper — UK Products & Prices

Tesco Groceries Scraper — UK Products & Prices

Scrape the full Tesco UK groceries catalogue: product names, prices, Clubcard offers, price per unit, EAN codes, images, ratings and categories. Walks the department tree or a specific category. No login, no cookies.

Pricing

from $5.00 / 1,000 result scrapeds

Rating

0.0

(0)

Developer

Studio Amba

Studio Amba

Maintained by Community

Actor stats

0

Bookmarked

7

Total users

1

Monthly active users

5 hours ago

Last modified

Categories

Share

Tesco Groceries Scraper

Scrape Tesco's UK OWN grocery range: product names, prices, Clubcard offers, price per unit, EAN codes, images, ratings, stock and full category paths. Tesco's own range only, with third-party Marketplace sellers excluded. No login, no cookies.

Why use this actor?

Tesco is the UK's largest grocer, and its online range is one of the biggest price datasets in British retail. This actor gives you a clean, structured feed of Tesco's own grocery catalogue for price monitoring, competitor benchmarking, product matching, market research, or building a grocery price comparison. You get the same data the Tesco website shows shoppers, including Clubcard prices, without needing an account or a delivery slot.

Own range only, no Marketplace. Tesco now mixes third-party Marketplace items (sold and shipped by partners) into its listings, even inside grocery categories. This actor filters every listing to Tesco's own range at the source (productSource=Ghs) and additionally rejects any third-party record by type and seller field, so the output is 100% Tesco own-range with zero Marketplace contamination.

Complete past the 10,000 cap. Every Tesco listing is capped at 10,000 results, so a single broad crawl silently truncates large departments. This actor walks the category tree (superdepartment → department → aisle → shelf) and, whenever a node's own-range total hits the cap, descends into its child categories until every listing stays under 10,000. Products are deduped by Tesco product id (TPNC), and the run ends with a self-checking completeness assertion that compares the captured unique count against the authoritative own-range totals.

Tesco sits behind Akamai Bot Manager with hard IP-reputation blocking, so ordinary scrapers get an "Access Denied" before any product loads. This actor routes every request through the Bright Data Web Unlocker, which solves the Akamai challenge and returns the fully rendered page, so you get reliable results run after run.

How to scrape Tesco data

  1. Add this actor to your Apify account.
  2. Provide a Bright Data API key (field brightDataApiKey, stored as a secret) or set the BRIGHT_DATA_API_KEY environment variable. Tesco cannot be reached without it.
  3. Choose what to scrape:
    • Leave the input empty to walk the whole own grocery catalogue (all 10 grocery superdepartments).
    • Set searchQuery to scrape a keyword, e.g. milk or cheddar.
    • Set categoryUrl to scrape one category, e.g. food-cupboard/world-foods or a full https://www.tesco.com/shop/en-GB/browse/... URL.
    • Or paste a list of listing URLs into startUrls.
  4. Set maxProducts to cap the run (default 100, prefilled 20 for a quick test). Set it high, e.g. 40000, for a full-catalogue pull.
  5. Run the actor. Results stream to the dataset and can be exported as JSON, CSV, Excel or fed to an API.

The actor filters every listing to Tesco's own range, reads the authoritative own-range total, and paginates 48 products per page. Whenever a listing's own-range total hits Tesco's 10,000 cap, the actor drills into that category's children so no shelf is ever truncated. Set enumerateOnly: true to walk the tree and report the exact own-range catalogue size without scraping products, a cheap way to verify completeness before a full run.

Input

FieldTypeRequiredDescription
brightDataApiKeyString (secret)Yes*Bright Data Web Unlocker API key. *Falls back to BRIGHT_DATA_API_KEY env var.
searchQueryStringNoSearch Tesco groceries by keyword
categoryUrlStringNoA Tesco category URL or slug to scrape
startUrlsArrayNoOne or more Tesco listing URLs
maxProductsIntegerNoMaximum products to return (default 100)
enumerateOnlyBooleanNoWalk the tree and report the authoritative own-range catalogue size without scraping products
proxyConfigurationObjectNoProxy settings for auxiliary requests

If no category, search or URLs are given, the actor scrapes every grocery superdepartment (own range only).

searchQuery takes product keywords, not barcodes. Tesco's own site search returns no results for a bare EAN/GTIN (verified Aug 2026: 5000157024671 gives "No matches" on tesco.com itself), so an EAN as searchQuery returns 0 items. Search by name instead — every result carries its ean field, so you can match by barcode on your side after scraping.

Output

Each result contains:

FieldTypeExample
nameString"Tesco Pink Lady Apples 5 Pack"
brandString"Tesco"
priceNumber2.90
currencyString"GBP"
pricePerUnitString"£0.58/each"
discountString"£2.50 Clubcard Price"
eanString"00000003249833"
skuString"77091643" (Tesco TPNB)
productIdString"284477542" (Tesco TPNC)
inStockBooleantrue
ratingNumber4.5
reviewCountInteger190
imageUrlStringPrimary product image URL
categoryString"Fresh Food > Fresh Fruit > Apples & Pears > Pink & Red Apples"
urlStringFull product page URL
scrapedAtStringISO 8601 timestamp

Example output

{
"name": "Tesco Pink Lady Apples 5 Pack",
"brand": "Tesco",
"price": 2.90,
"currency": "GBP",
"pricePerUnit": "£0.58/each",
"discount": "£2.50 Clubcard Price",
"ean": "00000003249833",
"sku": "77091643",
"productId": "284477542",
"inStock": true,
"rating": 2.9,
"reviewCount": 190,
"imageUrl": "https://digitalcontent.api.tesco.com/v2/media/ghs/...jpeg",
"category": "Fresh Food > Fresh Fruit > Apples & Pears > Pink & Red Apples",
"url": "https://www.tesco.com/groceries/en-GB/products/284477542",
"scrapedAt": "2026-07-03T14:51:02.015Z"
}

Prices and stock

  • Prices are in GBP and reflect the standard Tesco online shelf price.
  • discount carries the Clubcard price or promotion text when an offer is active.
  • pricePerUnit gives the comparable unit price (per kg, per litre, per each, etc.).
  • Stock and availability can vary by delivery postcode. This actor uses Tesco's default national online context, which is the right baseline for catalogue and price data.

Cost estimate

Each Tesco listing page returns 48 products. Tesco's own grocery range is roughly 29,000 products, so a full own-range pull needs roughly 600-700 page fetches through the Bright Data Web Unlocker. For everyday use, scraping a single category or a search term is fast and cheap. Use maxProducts to control the size and cost of each run, or enumerateOnly to check the exact catalogue size first.

Limitations

  • A Bright Data Web Unlocker API key is required. Tesco's Akamai protection cannot be bypassed without it.
  • Output is Tesco's own range only. Third-party Marketplace items are intentionally excluded.
  • Brand is only populated for detectable own-brand lines; the Tesco listing data does not expose a brand field for every product.
  • Tesco caps very broad listings at 10,000 results per view. The actor handles this automatically by drilling the category tree so no shelf is truncated; the full grocery own range is well under this cap per shelf.
  • Clubcard prices are time-boxed promotions and change frequently.
  • Data is scraped from the public website and may change without notice. Respect Tesco's terms of service and use responsibly.

How to scrape Tesco data on a schedule

We run this scraper as a managed service for businesses: scheduled runs, deduplication, delta detection, and delivery to your inbox, Google Sheets, or API, maintenance included. We can also build a custom version with your exact fields and filters, or combine multiple grocery sources into one feed.

See studioamba.dev/services or email hello@studioamba.dev for a free data sample. We maintain 300+ European web scrapers and answer within one business day.