Tesco UK & Ireland Scraper - Prices, GTIN & Nutrition avatar

Tesco UK & Ireland Scraper - Prices, GTIN & Nutrition

Pricing

$2.00 / 1,000 products

Go to Apify Store
Tesco UK & Ireland Scraper - Prices, GTIN & Nutrition

Tesco UK & Ireland Scraper - Prices, GTIN & Nutrition

Scrape Tesco UK and Ireland groceries by category, keyword or URL. Get GTIN/EAN barcode, brand, price, unit price, Clubcard promotions, availability, category taxonomy, images, ratings, ingredients, allergens and nutrition. Export to JSON, CSV or Excel.

Pricing

$2.00 / 1,000 products

Rating

0.0

(0)

Developer

VulnV

VulnV

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

Tesco UK & Ireland Scraper

Extract Tesco groceries product data at scale - GTIN/EAN barcode, price, unit price, Clubcard promotions, availability, full category taxonomy, images, ratings and, from the product page, ingredients, allergens and nutrition - as clean, structured JSON.

Scrape by category, by search keyword, or by pasting Tesco URLs. Works on both tesco.com (UK) and tesco.ie (Ireland).

๐Ÿš€ How to use

  1. Click Try for free / Start.
  2. Choose a Region (UK or Ireland) and pick your Categories - or type a search keyword, or paste Tesco URLs (product, category or search pages).
  3. Set Max products (and Max pages per listing for big crawls).
  4. Run the Actor and download results as JSON, CSV, Excel, HTML or via API.

โœจ Features

  • ๐Ÿท๏ธ Barcode-grade identifiers - gtin (EAN/UPC barcode), plus Tesco's internal tpnb and tpnc product numbers, so records join cleanly onto your own catalogue.
  • ๐Ÿ’ท Complete pricing - shelf price, unit price (per kg / litre / each) and the Clubcard price parsed out of the offer, so loyalty pricing is a first-class field.
  • ๐ŸŽŸ๏ธ Promotions - the full offer text, a Clubcard flag and a promotion count, covering simple price cuts, multibuys and meal deals.
  • ๐Ÿ“ฆ Availability - stock status, whether the item is for sale, and the reason when it is not available.
  • ๐Ÿ—‚๏ธ Four-level taxonomy - super department, department, aisle and shelf, plus a ready-to-read categoryPath.
  • ๐Ÿฅ— Label data - description, pack size, ingredients, allergens, the nutrition table, kcal per 100 g/ml, storage advice and dietary icons (vegan, gluten free, and so on). Multipacks are handled per component.
  • ๐Ÿญ Brand on every record - including listing-only runs, so brand-share analysis needs no extra lookups.
  • โญ Ratings and reviews - average rating and total review count on every record, with the 10 most recent reviews available on request.
  • ๐Ÿ‡ฌ๐Ÿ‡ง๐Ÿ‡ฎ๐Ÿ‡ช Both stores - UK and Ireland, each with the right currency (GBP / EUR) and its own category set.
  • โšก Fast and efficient - a single request returns up to 1,000 products, so a 1,000-product price sweep is one request, not forty.

๐Ÿงญ Input

Provide at least one of categories, keyword or urls. Everything else is optional.

FieldTypeDescription
regionstringUK (tesco.com) or IE (tesco.ie). Default UK. Ignored for entries in urls, where the region comes from the URL.
categoriesarrayCategory slugs to scrape, e.g. fresh-food, bakery, drinks. Use all for every category in the selected region. Default ["fresh-food"].
keywordstringSearch the store for a term, e.g. oat milk.
urlsarrayTesco product, category or search URLs. Product URLs are fetched directly; listings are paginated.
maxItemsintegerStop after this many products across the whole run. Default 200.
maxPagesintegerListing pages to walk per category / search / listing URL. Each page holds up to 1,000 products. Default 1.
pageOffsetintegerFirst listing page to fetch, for resuming a large crawl. Default 1.
includeProductDetailsbooleanAdd description, pack size, ingredients, allergens, nutrition and storage. Fetched in batches, so it costs roughly one extra request per 15 products. Default true.
includeReviewsbooleanAdd the 10 most recent customer reviews per product. Default false.
onlyUniquebooleanDrop repeats when a product appears in more than one category or page. Default true.

The item budget is shared across your listing sources: asking for three categories and 300 products returns roughly 100 of each, rather than 300 of the first one.

Example input

{
"region": "UK",
"categories": ["fresh-food", "bakery"],
"maxItems": 400,
"maxPages": 2,
"includeProductDetails": true,
"includeReviews": false
}

A fast price-and-stock sweep - listing data only, no product pages:

{
"region": "UK",
"categories": ["all"],
"maxItems": 5000,
"maxPages": 25,
"includeProductDetails": false
}

๐Ÿ“ค Output

One record per product. Abridged example (a Clubcard-promoted item, with details on):

{
"productId": "295673143",
"tpnc": "295673143",
"tpnb": "83149536",
"gtin": "05054775188239",
"title": "Tesco Sweet Peppers 500G",
"brand": "TESCO",
"url": "https://www.tesco.com/groceries/en-GB/products/295673143",
"region": "UK",
"currency": "GBP",
"price": 2.1,
"priceText": "ยฃ2.10",
"unitPrice": 4.2,
"unitOfMeasure": "kg",
"unitPriceText": "ยฃ4.20/kg",
"clubcardPrice": 1.75,
"onPromotion": true,
"isClubcardPrice": true,
"promotionCount": 1,
"promotionText": "ยฃ1.75 Clubcard Price",
"status": "AvailableForSale",
"isAvailable": true,
"isForSale": true,
"isNew": false,
"superDepartment": "Fresh Food",
"department": "Fresh Fruit & Vegetables",
"aisle": "Fresh Salad & Prepared Vegetables",
"shelf": "Peppers",
"categoryPath": "Fresh Food > Fresh Fruit & Vegetables > Fresh Salad & Prepared Vegetables > Peppers",
"imageUrl": "https://digitalcontent.api.tesco.com/v2/media/ghs/...jpeg",
"imageCount": 1,
"images": ["https://digitalcontent.api.tesco.com/v2/media/ghs/...jpeg"],
"averageRating": 4.5,
"reviewCount": 147,
"packSize": "500G",
"description": "Sweet peppers.",
"ingredients": "Pepper",
"allergensText": "",
"nutritionText": "Typical Values: 100g contains; Energy: 107kJ / 25kcal; Fat: 0.2g; Saturates: 0.1g; Sugars: 4.4g; Salt: <0.01g",
"energyKcalPer100": 25,
"storage": "Keep refrigerated.",
"foodIcons": ["Suitable for Vegetarians"],
"nutritionTable": [
{ "name": "Energy", "value1": "107kJ / 25kcal", "value2": "91kJ / 22kcal" }
],
"detailSections": [
{ "name": "", "ingredients": ["Pepper"], "nutrition": [] }
],
"productType": "SingleProduct",
"isMarketplace": false,
"bulkBuyLimit": 99,
"searchTerm": "",
"sourceUrl": "https://www.tesco.com/groceries/en-GB/shop/fresh-food/all",
"scrapedAt": "2026-07-26T11:36:12+00:00"
}

The flat fields are what the dataset table and CSV/Excel exports show. nutritionTable, detailSections, images and reviews are nested for programmatic use - detailSections carries the per-component label data for multipacks, where one product has several ingredient lists and nutrition tables.

Dataset views

  • Products - price, promotion, availability and taxonomy for every product.
  • Ingredients & nutrition - the label data, when includeProductDetails is on.
  • Reviews - per-product reviews, when includeReviews is on.

๐Ÿ’ก Use cases

  • Grocery price monitoring - track shelf and Clubcard prices across categories daily.
  • Competitor and market analysis - compare pricing and range between UK and Ireland.
  • Product catalogue enrichment - match by gtin and pull in images, descriptions and nutrition.
  • Food and nutrition research - ingredients, allergens and nutrition tables at scale.
  • Availability and range tracking - detect delistings, new lines and out-of-stock items.

๐Ÿ“‹ Notes and limits

  • Reviews come from the product page, which publishes the 10 most recent reviews per product. The overall rating and total review count are always included, whether or not includeReviews is on.
  • includeProductDetails adds roughly one request per 15 products. For the largest price sweeps you can still turn it off: listing data alone carries price, unit price, promotions, availability, taxonomy, brand, image and rating.
  • Fields that Tesco does not publish for a product come back empty - not every item has ingredients, allergens or a nutrition table.
  • Clubcard prices are read from the offer as Tesco advertises it. Basket-level offers (multibuys such as "Any 2 for ยฃ5", and meal deals) leave clubcardPrice empty on purpose, because the advertised figure is a basket total rather than this product's price.
  • Very deep pagination on a broad category is bounded by Tesco's own result total, reported in the run log as the products available for each listing.

๐Ÿ’ณ Pricing

This Actor is monetized pay-per-event: you pay a flat rate per product returned, and nothing else.

  • No Actor start fee - runs that return nothing cost nothing.
  • No platform usage charges - Apify compute is included in the per-product rate.
  • No plan tiers - the same rate whether you are on Free or Business.

Free-plan users can try it with a capped sample per run. See the Pricing tab on the Actor's page for the current rate.

โ“ FAQ

Is scraping Tesco data legal? The Actor collects only publicly available product information published on Tesco's storefront. It reads no personal data and needs no login. As with any scraping, use the data responsibly and in line with applicable laws and the site's terms.

Is this an official Tesco product? No. This is an unofficial Actor and is not affiliated with, endorsed by, or sponsored by Tesco. "Tesco" and "Clubcard" are trademarks of their respective owners.

Can I get barcodes? Yes - gtin is the product's EAN/UPC barcode, and every record also carries Tesco's tpnb and tpnc numbers.

How do I get the Clubcard price? The clubcardPrice field holds the per-unit Clubcard price where Tesco advertises one, with isClubcardPrice flagging it and promotionText giving the full offer wording. Basket-level offers (multibuys such as "Any 2 for ยฃ5", and meal deals) intentionally leave clubcardPrice empty, because the advertised figure is a basket total rather than this product's price - read promotionText for those.

How do I scrape a whole category? Set maxPages high enough to cover it - each page holds up to 1,000 products, and the run log reports how many products the category holds. For a full store sweep, use categories: ["all"] with includeProductDetails off.

How do I test cheaply? Set maxItems to a small number, e.g. 5.

Can I resume a large crawl? Yes - use pageOffset to start from the page where a previous run stopped.

๐Ÿ› ๏ธ Our Other Scrapers

Explore our full suite of scraping tools to power your data needs:

๐Ÿ“ฌ Need help or have a feature request? Contact us at support@vulnv.com or visit our Apify profile.