Asda Promotions API
Choose Rollbacks, price drops or multibuys.
Sendstore_idoractive_onlyorhits_per_page
Returnsnameidcinbrandpack_sizeprice
Follow ASDA Rollbacks and multibuys by offer type, with the pack price and required quantity kept together.
| # | Price label |
|---|---|
| 1 | List |
| 2 | List |
| 3 | List |
| 4 | List |
| 5 | List |
| # | Product | Product ID | CIN | Brand | Pack | Pack price | Currency | Previous price | Price label | Unit price |
|---|---|---|---|---|---|---|---|---|---|---|
| 1 | British Milk Semi Skimmed 2 Pints | 23423 | 538241 | ASDA | 2 PINT | 1.2 | GBP | Dropped | £1.06/LT | |
| 2 | British Whole Milk 2 Pints | 23421 | 538239 | ASDA | 2 PINT | 1.2 | GBP | Dropped | £1.06/LT | |
| 3 | British Milk Skimmed 2 Pints | 23422 | 538240 | ASDA | 2 PINT | 1.2 | GBP | Dropped | £1.06/LT | |
| 4 | Arla Filtered Fresh Semi Skimmed Milk 1L Fresher for Longer | 32088739 | 2041527 | Cravendale | 1L | 1.64 | GBP | Dropped | £1.64/LT | |
| 5 | Long Life Semi Skimmed Milk 6 x 1 Litre | 910000392661 | 3516819 | ASDA | 6X1L | 6 | GBP | 6.14 | Dropped | £1.00/LT |
| # | Product | Product ID | CIN | Brand | Pack | Pack price | Currency | Price label | Unit price | Unit amount |
|---|---|---|---|---|---|---|---|---|---|---|
| 1 | Organic Fresh Whole Milk 3.52 Pints/2L | 12970572 | 1767599 | Dale Farm | 2L | 2.34 | GBP | List | £1.17/LT | 1.17 |
| 2 | Organic Semi-Skimmed 1 Litre | 1000361202367 | 7306256 | Graham's | 1L | 1.62 | GBP | List | £1.62/LT | 1.62 |
| 3 | Cornish Whole Milk 1 Litre | 910000456050 | 3660004 | Trewithen Dairy | 1L | 1.52 | GBP | List | £1.52/LT | 1.52 |
| 4 | Cornish Semi-Skimmed Milk 2 Litres | 910000455787 | 3660002 | Trewithen Dairy | 2L | 2.28 | GBP | List | £1.14/LT | 1.14 |
| 5 | Organic Fresh Semi-Skimmed Milk 3.52 Pints/2L | 12970570 | 1767595 | Dale Farm | 2L | 2.34 | GBP | List | £1.17/LT | 1.17 |
What each one takes and what it returns. Open one for a real response, every input and every field.
Choose Rollbacks, price drops or multibuys.
Sendstore_idoractive_onlyorhits_per_page
Returnsnameidcinbrandpack_sizeprice
Send a product ID or CIN to read its catalog record, including published nation prices where supplied.
Sendid
Returnsnameidcinbrandpack_sizeprice
Enter a product or ingredient name and retain pack sizes when comparing the results.
Sendquery
Returnsnameidcinbrandpack_sizeprice
Read category paths and counts.
Sendstore_idorcategoryordepartment
Returnsnameidpathdepthproduct_countcategories
Copy category, department and aisle names from the category tree, then page through the matching products.
Sendcategory
Returnsnameidcinbrandpack_sizeprice
Price, promotion, stock and range checks on Asda's online grocery catalog.
Follow pack prices, Rollbacks and multibuys for the products you sell and the ones you compete with.
PromotionsProduct detailProducts searchPut competing packs side by side on the same price per litre, kilogram or item.
Products searchCategory productsSee whether your tracked products show as in stock at the Asda store you choose.
Product detailProducts searchCollect every product in a department or aisle to spot new listings, delistings and range changes.
CategoriesCategory productsEvery endpoint shows its price in credits before it runs. You buy credits once, with no subscription.
Credit packs| Per call | Endpoints |
|---|---|
| 1 credit | Product detail |
| 1–10 credits | PromotionsProducts searchCategory products |
| 5 credits | Categories |
One request shape for every Asda endpoint: the endpoint ID and its input. No SDK needed.
curl --request POST \ --url https://data.upscrape.com/execute \ --header "Authorization: Bearer $UPSCRAPE_API_KEY" \ --header "Content-Type: application/json" \ --header "Prefer: wait=30" \ --data '{ "capability": "asda.promotions.list", "input": { "active_only": true, "hits_per_page": 5, "include_raw": false, "promotion_type": "multibuy", "store_id": "4565" }}'
import jsonimport osimport requestspayload = json.loads(r'''{ "capability": "asda.promotions.list", "input": { "active_only": true, "hits_per_page": 5, "include_raw": false, "promotion_type": "multibuy", "store_id": "4565" }}''')response = requests.post( "https://data.upscrape.com/execute", headers={ "Authorization": f"Bearer {os.environ['UPSCRAPE_API_KEY']}", "Content-Type": "application/json", "Prefer": "wait=30", }, json=payload,)response.raise_for_status()print(json.dumps(response.json(), indent=2))
const response = await fetch("https://data.upscrape.com/execute", { method: "POST", headers: { "Authorization": `Bearer ${process.env.UPSCRAPE_API_KEY}`, "Content-Type": "application/json", "Prefer": "wait=30", }, body: JSON.stringify({ "capability": "asda.promotions.list", "input": { "active_only": true, "hits_per_page": 5, "include_raw": false, "promotion_type": "multibuy", "store_id": "4565" }}),});if (!response.ok) { throw new Error(`Upscrape request failed: ${response.status}`);}console.log(JSON.stringify(await response.json(), null, 2));
{ "page": { "algolia_page": 0, "hits_per_page": 5, "nb_hits": 5769, "nb_pages": 1154, "page": 1 }, "items": [ { "offer": "List", "product": { "name": "12 British Beef Meatballs 340g", "price": 4.97, "avg_rating": 5, "brand": "Exceptional by ASDA", "category": "Meat, Poultry & Fish > Meat & Poultry > Beef > Beef Mince & Meatballs", "cin": "9301558", "currency": "GBP", "gtin": "5063717061479", "id": "SKU100537679", "image_id": "5063717061479", "image_url": "https://asdagroceries.scene7.com/is/image/asdagroceries/5063717061479", "in_stock": true, "offer": "List", "pack_size": "340g", "price_per_uom": "£14.62/KG", "price_per_uom_unit": "KG", "price_per_uom_value": 14.61765, "rating_count": 1, "sales_type": "Each", "status": "A", "url": "https://www.asda.com/groceries/product/9301558", "taxonomy": { "AISLE_ID": "910000975528", "AISLE_NAME": "Beef", "CAT_ID": "1215135760597", "CAT_NAME": "Meat, Poultry & Fish", "DEPT_ID": "910000975206", "DEPT_NAME": "Meat & Poultry", "SHELF_ID": "910000977267", "SHELF_NAME": "Beef Mince & Meatballs" } }, "promotions": [ { "name": "Any 3 for £12", "end_at": "2028-10-12T23:59:59Z", "end_unix": 1855007999, "id": "10000740328", "start_at": "2025-12-25T00:00:00Z", "start_unix": 1766620800, "type": 15, "deal": { "price": 12, "kind": "fixed_price", "quantity": 3 } } ] }, { "offer": "List", "product": { "name": "Mushroom Pilau 300g", "price": 3.5, "avg_rating": 5, "brand": "Bom Bahia by ASDA", "category": "Chilled Food > Ready Meals > Bom Bahia by ASDA > Bom Bahia by ASDA", "cin": "9290615", "currency": "GBP", "gtin": "5063717000584", "id": "SKU100534500", "image_id": "5063717000584_T1", "image_url": "https://asdagroceries.scene7.com/is/image/asdagroceries/5063717000584_T1", "in_stock": true, "offer": "List", "pack_size": "300G", "price_per_uom": "£11.67/KG", "price_per_uom_unit": "KG", "price_per_uom_value": 11.66667, "rating_count": 1, "sales_type": "Each", "status": "A", "url": "https://www.asda.com/groceries/product/9290615", "taxonomy": { "AISLE_ID": "1215686355601", "AISLE_NAME": "Bom Bahia by ASDA", "CAT_ID": "1215660378320", "CAT_NAME": "Chilled Food", "DEPT_ID": "910000975205", "DEPT_NAME": "Ready Meals", "SHELF_ID": "1215686355602", "SHELF_NAME": "Bom Bahia by ASDA" } }, "promotions": [ { "name": "Bom Bahia Dine In £12", "end_at": "2099-12-31T23:59:59Z", "end_unix": 4102444799, "id": "10000991462", "open_ended": true, "start_at": "2026-05-18T00:00:00Z", "start_unix": 1779062400, "type": 12 } ] } ]}
https://data.upscrape.com/mcp
Using Upscrape, request five active ASDA multibuy products for store 4565. Show each pack price beside its required quantity and bundle terms. Keep the original offer text and dates; do not treat the bundle total as a single-pack price.
Using Upscrape, look up ASDA product 20504 for store 4565. Show its pack amount, unit basis and the EN, NI, SC and WA price entries where supplied. Keep dietary flags separate from ingredients; no ingredient panel is supplied here.
Using Upscrape, search ASDA for milk in store 4565 with five results. Compare matching litre-based unit prices, retaining pack sizes and product IDs. Leave missing stock flags unknown.
The short answers. The docs have the long ones.
This is Upscrape’s ASDA grocery data API. Your Upscrape key accesses the product, category and offer operations shown here. It does not sign in to an ASDA shopping account. Use the working request examples and reference to evaluate the data your integration will receive.
Yes. Choose rollback, price drop or multibuy as the promotion type, or all of them together with Rollbacks first.
No. The product price remains the ordinary pack amount. A recognised quantity offer can also contain a bundle price or a pay-for quantity. Keep both values and the original description. A named offer without structured deal terms needs interpretation rather than an invented numeric discount.
Send a store ID for stock; these endpoints do not turn a postcode into a store. Without one, requests use store 4565. The in-stock flag is for that store, and a missing flag means unknown. It does not confirm a delivery slot or that checkout will accept the order.
Detail is a catalog record with dietary flags and published price information where supplied. It does not include a full ingredient or nutrition panel, nor individual review text. A rating average and count may be present. Keep missing attributes unknown, and check the JSON example against the fields your report needs.
These endpoints read the catalog as it is now. They do not place orders, read Rewards balances or supply a price history. Save repeated results with the time of each run to build your own, keeping the product identifier, store and offer terms together so comparisons stay meaningful.
Promotions, product detail, products search, categories and category products. Each is its own endpoint with a published input schema, and the response is JSON.
Asda endpoints cost from 1 credit per successful call, each priced before it runs. You buy credits once, with no subscription, and paid credits never expire. New accounts get free credits to try it.
Up to 100 free credits to start, no card needed.