Tesco Products Scraper
Pricing
Pay per usage
Tesco Products Scraper
Harvest Tesco product data fast: prices, ratings, availability, and descriptions. Built for price monitoring, market research, and competitive intelligence. Perfect for retail analytics and e-commerce insights at scale.
Pricing
Pay per usage
Rating
0.0
(0)
Developer
Shahid Irfan
Actor stats
0
Bookmarked
3
Total users
2
Monthly active users
3 days ago
Last modified
Categories
Share
Extract Tesco grocery listing results in a clean, analysis-ready dataset. Start from Tesco search, category, and tag-style listing URLs to collect product titles, pricing details, promotions, ratings, and category placement at scale.
Features
- URL-driven runs - Use one Tesco groceries listing URL as input.
- Rich product coverage - Collect pricing, unit pricing, rating, promotions, and product identifiers.
- Flexible Tesco URL support - Accepts search, category, and tag-style listing URL patterns.
- Internal URL normalization - Non-search listing URLs are converted internally to equivalent Tesco search queries for stable extraction.
- Pagination support - Crawls multiple pages from the provided URL.
- Clean dataset output - Automatically omits empty and null-like values from records.
- Automation friendly - Works well with scheduled runs and downstream integrations.
Use Cases
Price Monitoring
Track product prices and unit prices for recurring queries such as staples, seasonal categories, or branded items.
Promotion Intelligence
Capture promotion texts to monitor discount activity and identify offer frequency trends.
Catalog Research
Build structured datasets for brand-level and aisle-level visibility analysis.
Retail Analytics Pipelines
Export normalized product data to BI tools, data warehouses, or custom reporting systems.
Input Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
url | String | Yes | https://www.tesco.com/groceries/en-GB/search?query=milk&inputType=free+text | Tesco groceries listing URL (search/category/tag-style page). |
results_wanted | Integer | No | 20 | Maximum number of products to save. |
max_pages | Integer | No | 10 | Maximum number of pages to request from the provided URL. |
proxyConfiguration | Object | No | { "useApifyProxy": true } | Proxy setup for reliability on larger runs. |
Output Data
Each dataset item can include:
| Field | Type | Description |
|---|---|---|
product_id | String | Tesco product identifier |
title | String | Product title |
brand | String | Brand name |
product_url | String | Product page URL |
image_url | String | Product image URL |
price | Number | Current product price |
unit_price | Number | Unit price |
unit_of_measure | String | Unit for unit price |
is_for_sale | Boolean | Sale availability flag |
status | String | Product status text |
is_sponsored | Boolean | Whether result is sponsored |
sponsored_ad_id | String | Sponsored identifier when present |
promotion_texts | Array | Promotion text values |
department | String | Department name |
aisle | String | Aisle name |
shelf | String | Shelf name |
review_count | Integer | Number of reviews |
rating | Number | Average rating |
gtin | String | GTIN code |
tpnb | String | Tesco internal product number |
tpnc | String | Tesco internal product code |
base_product_id | String | Base product identifier |
search_term | String | Resolved search term |
page | Integer | Results page number |
scraped_at | String | ISO timestamp |
Note: Empty fields are omitted, so records do not include null-like values.
Usage Examples
Search URL
{"url": "https://www.tesco.com/groceries/en-GB/search?query=milk&inputType=free+text","results_wanted": 20,"max_pages": 3}
Category URL
{"url": "https://www.tesco.com/groceries/en-GB/shop/fresh-food/all","results_wanted": 50,"max_pages": 5}
Tag-Style Listing URL
{"url": "https://www.tesco.com/groceries/en-GB/shop/vegan/all","results_wanted": 40,"max_pages": 4}
Proxy-Backed Run for Higher Reliability
{"url": "https://www.tesco.com/groceries/en-GB/search?query=chocolate&inputType=free+text","results_wanted": 80,"max_pages": 8,"proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"]}}
Sample Output
{"product_id": "257264875","title": "Cravendale Filtered Fresh Semi Skimmed Milk 2L Fresher for Longer","brand": "CRAVENDALE","product_url": "https://www.tesco.com/groceries/en-GB/products/257264875","image_url": "https://digitalcontent.api.tesco.com/v2/media/ghs/abc123/product.jpeg?h=225&w=225","price": 2.5,"unit_price": 1.25,"unit_of_measure": "litre","is_for_sale": true,"status": "AvailableForSale","is_sponsored": true,"promotion_texts": ["Any 2 for £4 Clubcard Price - Selected Dairy Products 2 Litre"],"department": "Milk, Butter & Eggs","aisle": "Milk","shelf": "Filtered Milk","review_count": 208,"rating": 4.7,"gtin": "05000181034448","tpnb": "54705015","tpnc": "257264875","base_product_id": "54705015","search_term": "milk","page": 1,"scraped_at": "2026-03-26T11:18:12.190Z"}
Tips For Best Results
Start Small
Use results_wanted: 20 for quick checks, then scale to larger runs.
Use Stable Queries
Keep query wording consistent when building historical trend datasets.
Use Proxy Configuration for Larger Runs
Enable proxy settings for higher reliability and smoother pagination.
Use Listing URLs
Use URLs that show a product list under https://www.tesco.com/groceries/en-GB/ such as search, category, and tag-style pages.
Category and Tag URLs
When you provide category or tag-style listing URLs, the actor internally derives a search term and fetches products via Tesco search endpoints for better reliability.
Integrations
- Google Sheets - Share product snapshots with non-technical teams.
- Airtable - Build searchable product trackers.
- Webhooks - Trigger custom workflows after each run.
- Make - Connect with no-code automations.
- Zapier - Push updates into existing business tools.
Export formats: JSON, CSV, Excel, XML.
Frequently Asked Questions
How many products can I collect?
You can collect as many as available for the query, limited by results_wanted and max_pages.
Which Tesco URL types are supported?
Any Tesco groceries listing URL under /groceries/en-GB/ that returns product lists, including search pages, category pages, and tag-style shop pages.
Can I start from page 2 or beyond?
Yes. Pass a URL that already includes a page parameter. The actor continues pagination from that point.
Why do some records have fewer fields?
Some products do not expose every attribute in all categories. The actor keeps only fields that have real values.
Is the output suitable for analysis?
Yes. The actor writes clean, structured records with consistent key naming and no null-like dataset values.
Can I schedule this actor?
Yes. You can schedule recurring runs in Apify for daily or hourly tracking.
Support
For issues and feature requests, use the Apify Console issue and support channels.
Resources:
Legal Notice
This actor is intended for legitimate data collection and analytics use cases. You are responsible for complying with website terms and applicable laws in your jurisdiction.