Tesco Groceries Scraper avatar

Tesco Groceries Scraper

Pricing

from $1.50 / 1,000 products

Go to Apify Store
Tesco Groceries Scraper

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

Andrej Kiva

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

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 searchUS weekly adEU leafletsUS grocery
Tesco Groceries Scraper ◄── you are hereAldi Weekly Ad ScraperLidl Weekly Offers ScraperWalmart 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

FieldRequiredDescription
queriesOne of queries or startUrlsSearch terms such as milk
startUrlsOne of queries or startUrlsTesco UK search or category URLs
maxItemsNoStop after this many products. Default 24, maximum 1000
maxPagesNoPages per keyword or URL. Default 1. About 24 products per page
clubcardOnlyNoKeep only rows with a Clubcard promotion

Input example

{
"queries": ["oat milk"],
"maxItems": 24,
"maxPages": 1
}

Output

FieldDescription
titleProduct name
brandBrand
priceShelf price
unitPricePrice per unit
unitOfMeasureUnit, such as litre or kg
currencyGBP
clubcardOfferTrue when a Clubcard promotion is present
promotionTextPromotion description
gtinBarcode when the listing includes one
inStockAvailable for sale
ratingAverage rating
reviewCountNumber of reviews
priceMatchCompetitor names marked as a price match
productUrlProduct page URL
superDepartment, department, aisle, shelfCategory 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 clubcardOnly and 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 os
from apify_client import ApifyClient
client = 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().items
print(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.

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.