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

32

Total users

3

Monthly active users

10 days 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. Bright Data Web Unlocker access is built in and included in the per-result price.

How to scrape Tesco data

  1. Add this actor to your Apify account.
  2. 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.
  3. 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.
  4. 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)NoOptional. Your own Bright Data Web Unlocker API key. Leave empty to use the built-in access.
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"
clubcardPriceNumber or null2.50
clubcardPromotionString or null"£2.50 Clubcard Price"
clubcardPricePerUnitString or null"£0.50/each"
promoValidFromString or null"2026-09-15T23:00:00Z" (ISO 8601 UTC)
promoValidUntilString or null"2026-10-06T23:00:00Z" (ISO 8601 UTC)
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",
"clubcardPrice": 2.50,
"clubcardPromotion": "£2.50 Clubcard Price",
"clubcardPricePerUnit": "£0.50/each",
"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.).
  • clubcardPrice is the price of one item with a Clubcard, as a number. It is null when Tesco shows no Clubcard price for one item.
  • clubcardPromotion is the Clubcard offer text exactly as Tesco shows it. Multi-buy deals like "Any 3 for £5 Clubcard Price" only appear here, never in clubcardPrice.
  • clubcardPricePerUnit is the unit price at the Clubcard price, for example "£1.58/litre". It is null when there is no single-item Clubcard price.
  • 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

  • Tesco's Akamai protection needs a Web Unlocker. Access is built in, so no Bright Data account is needed.
  • 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.

Compare prices across UK grocers

The UK Grocery Price Matrix runs this scraper alongside Sainsbury's, Asda, Morrisons, Waitrose and Aldi UK, matches products by EAN barcode, and returns one row per product per retailer with the cheapest one flagged.

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.