Tesco Groceries Scraper
Pricing
from $1.50 / 1,000 products
Tesco Groceries Scraper
Scrape Tesco UK grocery search and category pages. Export price, unit price, Clubcard offers, GTIN, brand, rating, and category. HTTP, no browser.
Pricing
from $1.50 / 1,000 products
Rating
0.0
(0)
Developer
Andrej Kiva
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Tesco UK grocery prices, unit prices, Clubcard offers, and GTIN from search and category pages. Independent tool, not affiliated with Tesco.
Pull a search or a category listing when you need shelf price, unit price, a Clubcard flag, barcode, brand, and rating in one row. Paste keywords or listing URLs. Each dataset row is one product. This is a Tesco scraper and a Tesco API alternative for Python, Node.js, and MCP.
| UK grocery search | US weekly ad | EU leaflets | US grocery |
|---|---|---|---|
| Tesco Groceries Scraper ◄── you are here | Aldi Weekly Ad Scraper | Lidl Weekly Offers Scraper | Walmart Scraper |
When to use
- Snapshot Tesco UK shelf prices for a keyword or a category
- Flag Clubcard promotions next to the regular shelf price
- Match products by GTIN, brand, and category path
Use a grocery circular Actor when you need a weekly ad rather than the live Tesco shelf.
Key features
- Search keywords and category or search URLs
- Price, unit price, currency, stock flag
- Clubcard promotion text and a Clubcard boolean
- GTIN, brand, rating, review count
- Department path: super department, department, aisle, shelf
- Competitor price-match names when the listing includes them
- HTTP fetch, 256 MB, no browser
Input
| Field | Required | Description |
|---|---|---|
queries | One of queries or startUrls | Search terms such as milk |
startUrls | One of queries or startUrls | Tesco UK search or category URLs |
maxItems | No | Stop after this many products. Default 24, maximum 1000 |
maxPages | No | Pages per keyword or URL. Default 1. About 24 products per page |
clubcardOnly | No | Keep only rows with a Clubcard promotion |
Input example
{"queries": ["oat milk"],"maxItems": 24,"maxPages": 1}
Output
| Field | Description |
|---|---|
title | Product name |
brand | Brand |
price | Shelf price |
unitPrice | Price per unit |
unitOfMeasure | Unit, such as litre or kg |
currency | GBP |
clubcardOffer | True when a Clubcard promotion is present |
promotionText | Promotion description |
gtin | Barcode when the listing includes one |
inStock | Available for sale |
rating | Average rating |
reviewCount | Number of reviews |
priceMatch | Competitor names marked as a price match |
productUrl | Product page URL |
superDepartment, department, aisle, shelf | Category path |
Output example
{"source": "tesco.com","productId": "252207537","title": "Tesco British Semi Skimmed Milk 1.13L, 2 Pints","brand": "TESCO","gtin": "05000436338826","price": 1.2,"unitPrice": 1.06,"unitOfMeasure": "litre","currency": "GBP","inStock": true,"clubcardOffer": false,"promotionText": null,"priceMatch": ["ALDI"],"rating": 4.3,"reviewCount": 286,"superDepartment": "Drinks","department": "Milk & Milkshakes","aisle": "Milk","shelf": "Semi-Skimmed Milk","productUrl": "https://www.tesco.com/shop/en-GB/products/252207537","query": "milk"}
Use cases
- Price check — export shelf and unit price for one keyword
- Clubcard watch — turn on
clubcardOnlyand keep the promotion text - Catalog match — join GTIN and brand to another grocery file
Integration examples
Replace APIFY_TOKEN with your Apify token. The Actor name is crawloop/tesco-scraper.
Node.js
import { ApifyClient } from "apify-client";const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor("crawloop/tesco-scraper").call({queries: ["oat milk"],maxItems: 24,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
Python
import osfrom apify_client import ApifyClientclient = ApifyClient(os.environ["APIFY_TOKEN"])run = client.actor("crawloop/tesco-scraper").call(run_input={"queries": ["oat milk"],"maxItems": 24,})items = client.dataset(run["defaultDatasetId"]).list_items().itemsprint(items)
cURL
curl "https://api.apify.com/v2/acts/crawloop~tesco-scraper/runs?token=$APIFY_TOKEN" \-H "Content-Type: application/json" \-d "{\"queries\":[\"oat milk\"],\"maxItems\":24}"
MCP and AI assistants
Use this Actor from AI tools via Apify MCP. Connect your Apify account, then call this Actor by its Store name.
Example prompts:
- "Run Tesco Groceries Scraper for oat milk and return title, price, unit price, and GTIN as JSON"
- "Scrape Tesco search for cheddar with clubcardOnly and list the promotion text"
- "Pull 24 Tesco milk rows, then run Aldi Weekly Ad Scraper for ZIP 60174 and compare milk prices"
Suite next step
After Tesco UK shelf prices, run Aldi Weekly Ad Scraper for a US weekly circular, or Walmart Scraper for ZIP-local US grocery prices.
Related Actors
- Tesco Groceries Scraper ◄── you are here
- Aldi Weekly Ad Scraper — ALDI US weekly ad and ALDI Finds
- Lidl Weekly Offers Scraper — Lidl weekly leaflets
- Walmart Scraper — ZIP-local Walmart prices
- DoorDash Menu Scraper — chain menu items
FAQ
Does this open a single product page for nutrition and ingredients?
No. It reads the search and category listing: price, unit price, Clubcard text, GTIN, brand, rating, and category path.
What if the keyword matches nothing?
The run finishes with an empty dataset. Other keywords in the same input still run.
How many products are on a page?
About 24. Raise maxPages when you need more than one page. maxItems caps the combined rows.