Asda Groceries Scraper
Pricing
Pay per event
Asda Groceries Scraper
Search ASDA UK groceries and export product IDs, brands, pack sizes, regional prices, unit prices, promotions, taxonomy, ratings, images, source URLs, and optional store availability.
Pricing
Pay per event
Rating
0.0
(0)
Developer
Stas Persiianenko
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Search ASDA groceries and export structured product, price, unit-price, pack-size, promotion, taxonomy, rating, image, and source records.
The Actor reads ASDA's public grocery catalog search rather than challenged storefront HTML. It is designed for repeatable assortment and price analysis across England, Northern Ireland, Scotland, and Wales.
What does Asda Groceries Scraper do?
Provide one or more grocery search terms and the Actor returns normalized products from ASDA UK.
Each result can include:
- ASDA product and internal IDs;
- product name and brand;
- current regional price in GBP;
- numeric and formatted unit price;
- pack size;
- source offer label and normalized promotion flag;
- grocery category, department, aisle, and shelf;
- image and canonical product URLs;
- rating and rating count;
- store-specific availability when you supply an ASDA store ID.
The default dataset is ready for JSON, CSV, Excel, API, webhook, or data-warehouse workflows.
Who is this ASDA grocery data for?
Grocery price analysts
Build a consistent product and price feed for recurring basket comparisons.
FMCG and retail teams
Track branded assortment, pack sizes, shelf placement, and promotion signals.
Marketplace and comparison products
Populate structured records with stable product IDs, source URLs, and regional prices.
Data engineers
Schedule searches and send typed rows into spreadsheets, databases, or BI pipelines.
Why use this Actor?
- HTTP-first extraction: no browser is launched for every page.
- Regional pricing: select England, Northern Ireland, Scotland, or Wales.
- Useful taxonomy: preserve category, department, aisle, and shelf context.
- Stable deduplication: duplicate products across search terms are saved once by ASDA product ID.
- Bounded runs: choose a maximum from 1 to 5,000 products.
- Explicit failure behavior: upstream authentication or response-shape changes fail the run instead of producing a misleading empty success.
What ASDA product data is extracted?
| Field | Meaning |
|---|---|
query | Search term that first produced the record |
productId | Stable ASDA catalog/CIN product ID |
internalId | Secondary internal product identifier when exposed |
name | Product name |
brand | Product brand |
packSize | Pack-size label |
price | Current price in GBP for the selected zone |
priceZone | EN, NI, SC, or WA |
unitPrice | Numeric price per unit when exposed |
unitPriceFormatted | Source label such as 77.0p/LT |
offer | Source offer label, such as List or Dropped |
onPromotion | Normalized promotion flag |
available | Store availability, or null without applicable store data |
category | Top-level grocery category |
department | Primary grocery department |
aisle | Primary aisle |
shelf | Primary shelf |
imageUrl | ASDA image URL when exposed |
productUrl | Canonical ASDA product URL |
rating | Average customer rating when exposed |
ratingCount | Number of ratings when exposed |
scrapedAt | Collection timestamp in ISO 8601 format |
Fields that ASDA does not expose for a product are returned as null; they are not guessed.
How to scrape ASDA groceries
- Open the Actor input page.
- Add one to twenty product searches, such as
milk,bread, orHeinz baked beans. - Set the maximum number of unique products.
- Select the ASDA regional price zone.
- Optionally add a numeric ASDA store ID for availability.
- Click Start.
- Open the ASDA products dataset view or export the results.
A first run with the prefilled milk search normally returns useful data in seconds.
Input reference
queries
Required array of 1–20 strings.
Each search must contain 2–100 characters. Results from all searches are deduplicated by product ID.
["milk", "bread", "eggs"]
maxItems
Maximum unique products saved across all searches.
- minimum:
1 - maximum:
5000 - default:
20
priceZone
Regional ASDA price set.
| Value | Region |
|---|---|
EN | England |
NI | Northern Ireland |
SC | Scotland |
WA | Wales |
storeId
Optional 3–8 digit ASDA store ID.
When the catalog exposes stock for that store, available is true for positive stock and false for zero stock. Without a matching store entry, available remains null.
Example input
{"queries": ["milk", "bread", "eggs"],"maxItems": 30,"priceZone": "EN"}
For a brand-specific check:
{"queries": ["Heinz baked beans"],"maxItems": 25,"priceZone": "EN"}
Example output
The following shape comes from the current public catalog route:
{"query": "milk","productId": "165468","internalId": "20504","name": "British Milk Semi Skimmed 4 Pints","brand": "ASDA","packSize": "4 PINT","price": 1.75,"currency": "GBP","priceZone": "EN","unitPrice": 0.76991,"unitPriceFormatted": "77.0p/LT","offer": "List","onPromotion": false,"available": null,"storeId": null,"category": "Chilled Food","department": "Milk, Butter, Cream & Eggs","aisle": "Fresh Milk","shelf": "Semi Skimmed Milk","imageUrl": "https://ui.assets-asda.com/dm/asdagroceries/20337087","productUrl": "https://www.asda.com/groceries/product/british-milk-semi-skimmed-4-pints/165468","rating": 4.1768,"ratingCount": 1041,"scrapedAt": "2026-08-18T06:12:51.362Z"}
Prices, offers, stock, ratings, and assortment can change between runs.
How much does it cost to scrape ASDA grocery products?
The Actor uses pay-per-event pricing:
- one
startevent per run; - one
itemevent for each unique product saved.
The current start event is $0.005 per run. Item prices decrease by Apify plan tier:
| Tier | Price per product |
|---|---|
| FREE | $0.002668 |
| BRONZE | $0.002320 |
| SILVER | $0.0018096 |
| GOLD | $0.001392 |
| PLATINUM | $0.000928 |
| DIAMOND | $0.0006496 |
At the FREE tier, 100 saved products cost about $0.27 including the start event. A 1,000-product run costs about $2.67. Platform usage limits and any account-level charges are shown by Apify before and during the run.
You are charged only for normalized products accepted for output. Duplicate or malformed source records are not item events.
Monitoring ASDA prices and assortment
Use an Apify schedule to rerun the same input daily or weekly.
A practical workflow is:
- choose stable search terms for a category or brand;
- keep
priceZoneconstant between runs; - export
productId,price,unitPriceFormatted,onPromotion, and taxonomy fields; - compare records by
productIdand collection date; - alert on new products, removed products, or changed price values.
The Actor returns current observations. It does not calculate historical changes inside a single run.
Spreadsheet and data-pipeline integrations
Google Sheets
Use an Apify integration or export the default dataset as CSV or XLSX.
Webhooks
Attach a run-succeeded webhook and pass the default dataset ID to your processing service.
Database loading
Read JSON rows from the dataset API and upsert by productId plus priceZone.
BI dashboards
Schedule the Actor and ingest dated snapshots into BigQuery, Snowflake, PostgreSQL, or another warehouse.
Run with the Apify API
Replace YOUR_APIFY_TOKEN with your token.
cURL
curl -X POST \"https://api.apify.com/v2/acts/automation-lab~asda-grocery-products-prices/runs?token=YOUR_APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"queries":["milk","bread"],"maxItems":50,"priceZone":"EN"}'
JavaScript
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('automation-lab/asda-grocery-products-prices').call({queries: ['milk', 'bread'],maxItems: 50,priceZone: 'EN',});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
Python
from apify_client import ApifyClientclient = ApifyClient("YOUR_APIFY_TOKEN")run = client.actor("automation-lab/asda-grocery-products-prices").call(run_input={"queries": ["milk", "bread"],"maxItems": 50,"priceZone": "EN",})items = client.dataset(run["defaultDatasetId"]).list_items().itemsprint(items)
Use with MCP and AI agents
Claude Code setup
claude mcp add --transport http apify \"https://mcp.apify.com?tools=automation-lab/asda-grocery-products-prices"
Claude Desktop setup
Add this HTTP server to your Claude Desktop MCP configuration:
{"mcpServers": {"apify": {"url": "https://mcp.apify.com?tools=automation-lab/asda-grocery-products-prices"}}}
Cursor setup
Add the same apify server URL under Cursor Settings → MCP.
VS Code setup
Add the same apify HTTP server to the MCP servers section in your VS Code workspace or user configuration.
Example prompts:
- “Search ASDA for milk, bread, and eggs and return 50 current England price records.”
- “Export Heinz baked beans sold by ASDA with pack size, unit price, and promotion state.”
- “Collect 100 gluten-free ASDA products for my weekly assortment snapshot.”
Limits and source behavior
- The Actor searches groceries, not ASDA George clothing or general merchandise.
- Results follow the public catalog's current ranking and field availability.
maxItemsis a total cap across all queries, not a per-query cap.- Products matching several queries are emitted once.
- Availability is meaningful only when a valid store ID maps to source stock data.
- A search with no matches succeeds with zero items.
- A blocked, unauthorized, or malformed catalog response fails the run visibly.
- The public storefront search configuration can change; a future key or schema rotation may require an Actor update.
Troubleshooting
Why did my run return fewer products than maxItems?
The search may expose fewer unique products, or several queries may overlap. maxItems is a ceiling, not a guaranteed count.
Why is available null?
No store ID was supplied, the ID was not present in that product's stock map, or ASDA did not expose store stock for the item.
Why does a product have a null price?
ASDA may expose the product without a price for the selected region. The Actor preserves that absence rather than copying another region's value.
Why did the run fail instead of returning an empty dataset?
A catalog authentication or response-shape error is not a real no-result search. Failing visibly prevents monitoring systems from treating an upstream break as an empty assortment.
Responsible use and legality
This Actor collects publicly exposed product catalog data. You are responsible for using it lawfully and in accordance with applicable terms, database rights, competition rules, privacy law, and your contractual obligations.
Use conservative schedules, request only data needed for your purpose, and do not use results to mislead consumers. Product data can change; verify critical decisions against the current source.
This Actor is not affiliated with or endorsed by ASDA. ASDA and related marks belong to their respective owners.
Related Actors
For Canadian grocery assortment and competitor-price workflows, see Superstore & No Frills Grocery Prices.
FAQ
Does this scrape every ASDA product automatically?
No. It searches the public catalog using your terms and stops at maxItems. Use distinct, relevant queries for broader coverage.
Can I choose a UK region?
Yes. Select England, Northern Ireland, Scotland, or Wales with priceZone.
Can I target a specific store?
Yes, when you know its numeric ASDA store ID. The Actor reports availability only where the source exposes stock for that store.
Does it download product images?
No. It returns image URLs, avoiding unnecessary transfer and storage cost.
Does it track history?
It returns current snapshots. Schedule repeated runs and compare rows externally by productId and date.
Can I export CSV or Excel?
Yes. Use the dataset export controls or API formats provided by Apify.
Is a proxy required?
No. The implemented public catalog route works directly and does not use residential proxy transfer.