Asda Groceries Scraper avatar

Asda Groceries Scraper

Pricing

Pay per event

Go to Apify Store
Asda Groceries Scraper

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

Stas Persiianenko

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

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?

FieldMeaning
querySearch term that first produced the record
productIdStable ASDA catalog/CIN product ID
internalIdSecondary internal product identifier when exposed
nameProduct name
brandProduct brand
packSizePack-size label
priceCurrent price in GBP for the selected zone
priceZoneEN, NI, SC, or WA
unitPriceNumeric price per unit when exposed
unitPriceFormattedSource label such as 77.0p/LT
offerSource offer label, such as List or Dropped
onPromotionNormalized promotion flag
availableStore availability, or null without applicable store data
categoryTop-level grocery category
departmentPrimary grocery department
aislePrimary aisle
shelfPrimary shelf
imageUrlASDA image URL when exposed
productUrlCanonical ASDA product URL
ratingAverage customer rating when exposed
ratingCountNumber of ratings when exposed
scrapedAtCollection 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

  1. Open the Actor input page.
  2. Add one to twenty product searches, such as milk, bread, or Heinz baked beans.
  3. Set the maximum number of unique products.
  4. Select the ASDA regional price zone.
  5. Optionally add a numeric ASDA store ID for availability.
  6. Click Start.
  7. 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.

ValueRegion
ENEngland
NINorthern Ireland
SCScotland
WAWales

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 start event per run;
  • one item event for each unique product saved.

The current start event is $0.005 per run. Item prices decrease by Apify plan tier:

TierPrice 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:

  1. choose stable search terms for a category or brand;
  2. keep priceZone constant between runs;
  3. export productId, price, unitPriceFormatted, onPromotion, and taxonomy fields;
  4. compare records by productId and collection date;
  5. 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 ApifyClient
client = 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().items
print(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.
  • maxItems is 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.

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.