Skip to main content
Upscrape 2.0 is here. Live platform data for agents, apps, and workflows. Upscrape 2.0 is here. REST API and MCP, one connection. Explore capabilities

ASDA API

Follow ASDA Rollbacks and multibuys by offer type, with the pack price and required quantity kept together.

Up to 100 free credits

Find the ASDA offer, then check the pack

Choose an offer type for promotion research or an exact category path for an assortment report.

Inspect a multibuy with the ASDA API

This request asks for active multibuy products in store 4565. The response keeps the ordinary pack amount beside the bundle terms.

Active multibuy check · ASDA store 4565 · cURL

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"
  }
}'

Active multibuy check · ASDA store 4565 · Python

import json
import os
import requests

payload = 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))

Active multibuy check · ASDA store 4565 · Node.js

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));

Look inside an ASDA offer response

The first tab shows multibuy terms. The other tabs show grocery search, one milk product and the category path used to browse Fresh Milk.

Multibuys asda.promotions.list

Request {"capability":"asda.promotions.list","input":{"active_only":true,"hits_per_page":5,"include_raw":false,"promotion_type":"multibuy","store_id":"4565"}}

5 returned rows. Full response available as JSON.

Multibuys
# Product , Name of the returned product or taxonomy node. Product ID , ASDA identifier; preserve it as text. CIN , Catalog item number, retained separately from the product ID. Brand , Brand supplied by the catalog; absent stays unknown. Pack , ASDA’s pack-size expression; keep it alongside unit prices. Pack price , Ordinary pack amount in the stated currency, before any separate multibuy calculation. Currency , Currency code for monetary values. Previous price , Previous price only when higher than the current amount; absence is not zero. Price label , Ordinary price state: List, Rollback or Dropped; multibuy terms are separate. Unit price , Original unit-price display, which can use pounds or pence. Unit amount , Unit amount expressed in pounds. Unit , Unit basis for the numeric amount, such as LT or KG. Catalog status , A means active; I means delisted. This is separate from stock. Store stock , Stock flag for the request’s store; absence is unknown. GTIN , Barcode-like value derived from the catalog image identifier where available; keep as text. Rating count , Number of ratings, not individual reviews. Rating , Average supplied when ratings exist. Category path , Product’s category hierarchy as returned. ASDA page , ASDA product page linked by the catalog. Multibuy terms , First multibuy description; all promotion entries remain in JSON. Deal type , Recognised bundle calculation type; unknown offer names may omit it. Quantity , Number required by the first recognised multibuy. Bundle amount , Total for the required quantity on a fixed-price deal. Pay for , Quantity paid for on a recognised quantity-for-quantity deal. Starts , Source offer start in UTC; inspect with observation time. Ends , Source offer end in UTC; inspect open_ended in JSON where present.
1 12 British Beef Meatballs 340g SKU100537679 9301558 Exceptional by ASDA 340g 4.97 GBP Not returned List £14.62/KG 14.61765 KG A Yes 5063717061479 1 5 Meat, Poultry & Fish > Meat & Poultry > Beef > Beef Mince & Meatballs https://www.asda.com/groceries/product/9301558 Any 3 for £12 fixed_price 3 12 Not returned 2025-12-25T00:00:00Z 2028-10-12T23:59:59Z
2 Mushroom Pilau 300g SKU100534500 9290615 Bom Bahia by ASDA 300G 3.5 GBP Not returned List £11.67/KG 11.66667 KG A Yes 5063717000584 1 5 Chilled Food > Ready Meals > Bom Bahia by ASDA > Bom Bahia by ASDA https://www.asda.com/groceries/product/9290615 Bom Bahia Dine In £12 Not returned Not returned Not returned Not returned 2026-05-18T00:00:00Z 2099-12-31T23:59:59Z
3 Chunky Funky Chocolate Bar 40g SKU100527700 9271039 KitKat 40g 0.84 GBP Not returned List £21.00/KG 21 KG A No 3800020401262 2 5 Food Cupboard > Chocolates & Sweets > Small Chocolate Bars & Bags > Small Chocolate Bars & Bags https://www.asda.com/groceries/product/9271039 Meal Deal Not returned Not returned Not returned Not returned 2025-09-17T00:00:00Z 2033-09-17T23:59:59Z
4 Fiery Chilli Jam 55g 1000383265069 9211052 ASDA 55G 0.5 GBP Not returned List £9.09/KG 9.09091 KG A Yes 5063089751565 2 5 Chilled Food > Pizza, Pasta & Garlic Bread > Fresh Pizza > Snacking & Sides https://www.asda.com/groceries/product/9211052 Medium Pizza Deal £7 Not returned Not returned Not returned Not returned 2026-04-25T00:00:00Z 2027-04-25T23:59:59Z
5 Vegetable Sushi 1000383176144 7704077 ASDA 67G 1.65 GBP Not returned List £24.63/KG 24.62687 KG A No 5063089222041 1 5 Chilled Food > Sandwiches, Snacks & Drinks > Lunch Ideas > Lunch Ideas https://www.asda.com/groceries/product/7704077 Meal Deal Not returned Not returned Not returned Not returned 2025-09-17T00:00:00Z 2033-09-17T23:59:59Z

Product detail asda.product.detail.get

Request {"capability":"asda.product.detail.get","input":{"id":"20504","include_raw":false,"store_id":"4565"}}

1 returned rows. Full response available as JSON.

Product detail
# Product , Name of the returned product or taxonomy node. Product ID , ASDA identifier; preserve it as text. CIN , Catalog item number, retained separately from the product ID. Brand , Brand supplied by the catalog; absent stays unknown. Pack , ASDA’s pack-size expression; keep it alongside unit prices. Pack price , Ordinary pack amount in the stated currency, before any separate multibuy calculation. Currency , Currency code for monetary values. Previous price , Previous price only when higher than the current amount; absence is not zero. Price label , Ordinary price state: List, Rollback or Dropped; multibuy terms are separate. Unit price , Original unit-price display, which can use pounds or pence. Unit amount , Unit amount expressed in pounds. Unit , Unit basis for the numeric amount, such as LT or KG. Catalog status , A means active; I means delisted. This is separate from stock. Store stock , Stock flag for the request’s store; absence is unknown. GTIN , Barcode-like value derived from the catalog image identifier where available; keep as text. Rating count , Number of ratings, not individual reviews. Rating , Average supplied when ratings exist. Category path , Product’s category hierarchy as returned. ASDA page , ASDA product page linked by the catalog.
1 British Milk Semi Skimmed 4 Pints 20504 165468 ASDA 4 PINT 1.65 GBP Not returned List 72.6p/LT 0.72591 LT A Yes 20337087 1045 4.1694 Chilled Food > Milk, Butter, Cream & Eggs > Fresh Milk > Semi Skimmed Milk https://www.asda.com/groceries/product/165468

Fresh Milk aisle asda.category.products.list

Request {"capability":"asda.category.products.list","input":{"aisle":"Fresh Milk","category":"Chilled Food","department":"Milk, Butter, Cream & Eggs","hits_per_page":5,"include_raw":false}}

5 returned rows. Full response available as JSON.

Fresh Milk aisle
# Product , Name of the returned product or taxonomy node. Product ID , ASDA identifier; preserve it as text. CIN , Catalog item number, retained separately from the product ID. Brand , Brand supplied by the catalog; absent stays unknown. Pack , ASDA’s pack-size expression; keep it alongside unit prices. Pack price , Ordinary pack amount in the stated currency, before any separate multibuy calculation. Currency , Currency code for monetary values. Previous price , Previous price only when higher than the current amount; absence is not zero. Price label , Ordinary price state: List, Rollback or Dropped; multibuy terms are separate. Unit price , Original unit-price display, which can use pounds or pence. Unit amount , Unit amount expressed in pounds. Unit , Unit basis for the numeric amount, such as LT or KG. Catalog status , A means active; I means delisted. This is separate from stock. Store stock , Stock flag for the request’s store; absence is unknown. GTIN , Barcode-like value derived from the catalog image identifier where available; keep as text. Rating count , Number of ratings, not individual reviews. Rating , Average supplied when ratings exist. Category path , Product’s category hierarchy as returned. ASDA page , ASDA product page linked by the catalog.
1 Organic Fresh Whole Milk 3.52 Pints/2L 12970572 1767599 Dale Farm 2L 2.34 GBP Not returned List £1.17/LT 1.17 LT A No 5000245006640 1 5 Chilled Food > Milk, Butter, Cream & Eggs > Fresh Milk > Whole Milk https://www.asda.com/groceries/product/1767599
2 Organic Semi-Skimmed 1 Litre 1000361202367 7306256 Graham's 1L 1.62 GBP Not returned List £1.62/LT 1.62 LT A No 5025840001050 5 5 Chilled Food > Milk, Butter, Cream & Eggs > Fresh Milk > Semi Skimmed Milk https://www.asda.com/groceries/product/7306256
3 Cornish Whole Milk 1 Litre 910000456050 3660004 Trewithen Dairy 1L 1.52 GBP Not returned List £1.52/LT 1.52 LT I No 5027756001124 3 5 Chilled Food > Milk, Butter, Cream & Eggs > Fresh Milk > Whole Milk https://www.asda.com/groceries/product/3660004
4 Cornish Semi-Skimmed Milk 2 Litres 910000455787 3660002 Trewithen Dairy 2L 2.28 GBP Not returned List £1.14/LT 1.14 LT I No 5027756002145 3 5 Chilled Food > Milk, Butter, Cream & Eggs > Fresh Milk > Semi Skimmed Milk https://www.asda.com/groceries/product/3660002
5 Organic Fresh Semi-Skimmed Milk 3.52 Pints/2L 12970570 1767595 Dale Farm 2L 2.34 GBP Not returned List £1.17/LT 1.17 LT A No 5000245006664 1 5 Chilled Food > Milk, Butter, Cream & Eggs > Fresh Milk > Semi Skimmed Milk https://www.asda.com/groceries/product/1767595

Department path asda.categories.list

Request {"capability":"asda.categories.list","input":{"category":"Chilled Food","department":"Milk, Butter, Cream & Eggs","depth":2,"include_raw":false,"store_id":"4565"}}

1 returned rows. Full response available as JSON.

Department path
# Department , Name of the returned product or taxonomy node. Category ID , ASDA identifier; preserve it as text. Category path , Exact taxonomy path for choosing category and department inputs. Depth , Level of this node in the category hierarchy. Catalog count , Count reported for the category, not a stock count.
1 Milk, Butter, Cream & Eggs 1215339432024 Chilled Food > Milk, Butter, Cream & Eggs 2 837

Image data


        

An ASDA discount needs its conditions

These distinctions keep a promotion report from overstating savings or availability.

  • A multibuy can still say “List”

    ASDA’s ordinary offer label describes the pack price. Multibuy conditions live separately, so a List label does not rule out a quantity offer.

  • Calculate savings at the required quantity

    For a fixed-price multibuy, compare the bundle amount with the cost of buying that quantity at the pack price. Preserve the original offer wording.

  • Read dates before using a promotion

    Keep offer start and end times beside the observation. An open-ended marker represents an unspecified end; a missing date does not establish an expiry.

  • Active status and stock answer different questions

    The catalog status says whether a listing is active or delisted. The store-specific stock flag can be false even for an active listing.

  • A store ID adds stock context

    Pass the same store ID throughout a comparison. A missing stock flag stays unknown; it does not establish that a product is unavailable.

  • Pence and pounds need one comparison unit

    ASDA’s unit-price text can use pence or pounds. The numeric unit-price value uses pounds; keep its litre, kilogram or item basis beside it.

  • Browse with the returned category names

    Category, department and aisle inputs follow the returned names. An aisle needs its department, and a department needs its category.

  • A product lookup is a catalog record

    Detail adds published nation prices and catalog flags where supplied. It does not provide a full ingredient panel, individual reviews or a shopper’s basket.

Have your agent explain an ASDA offer

Ask for the quantity condition as well as the apparent saving. The prompts below use the same requests as the examples.

Prompt

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.

Prompt

Using Upscrape, request five ASDA Rollback products. Show pack size, current price and any higher previous price. Keep the catalog status and store context in the report; do not manufacture a saving when the previous amount is absent.

Prompt

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.

Prompt

Using Upscrape, inspect Milk, Butter, Cream & Eggs under Chilled Food at depth 2, then collect five Fresh Milk aisle products. Preserve the category path and product identifiers so the report can be repeated.

Prompt

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.

Step-by-step setup for

Gives your agent ASDA’s offer rules, category inputs and stock context. Save it as asda-data/SKILL.md in your agent’s skills folder.

Questions behind an ASDA promotion report

Start with the decision your pricing or category team needs to make.

Is this a pack discount or a multibuy?

Trade-marketing teams separate the ordinary price from the offer’s required quantity before describing a saving.

Which products are on Rollback?

Promotion analysts request Rollbacks directly, then retain product IDs and pack sizes for their next comparison.

What is the comparable price per litre?

Pricing teams use the numeric unit amount and its unit to compare milk packs of different sizes.

Does this offer refer to an active product?

Category analysts check the catalog status and use active-only requests when building a report of current listings.

What does the stock flag say for our store?

Retail analysts keep the chosen store ID beside the returned flag, leaving missing stock information unknown.

Which aisle should this report cover?

Assortment teams read the relevant department’s category path before collecting its product pages.

How did our tracked pack change?

Brand teams save repeated product-ID observations and compare the pack amount and offer terms with their own earlier records.

Does the national price table need a separate column?

Data teams preserve the returned EN, NI, SC and WA entries instead of assuming one observed amount applies everywhere.

Plan an ASDA collection with the right inputs

Check the offer rules, store context and page limits before collecting more products.

Is this ASDA’s own developer API?

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. ASDA API reference

Can I request Rollbacks separately from multibuys?

Yes. Select rollback, price_drop or multibuy in promotion_type. The all option combines those groups, with Rollbacks appearing first. A multibuy’s terms are separate from the ordinary offer label, so inspect the promotions entries even when the product’s offer value is List. ASDA API reference

Does a multibuy amount replace the single-pack price?

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. ASDA API reference

Can the API check stock by postcode?

Use a store ID for stock context; these operations do not resolve a postcode to a store. Requests default to store 4565 when store_id is absent. The returned in_stock flag belongs to that context, and an omitted flag means unknown. It does not confirm a delivery slot or checkout eligibility. ASDA API reference

Why do some results include delisted products?

Listings include catalog records with both active and delisted status by default. Set active_only to true on search, category products or promotions to keep active records. The main example uses that filter. An active product can still be out of stock for the store you selected. ASDA API reference

Can I request just one department’s categories?

Yes. Supply category and department names and set depth to the level you need. The example requests Milk, Butter, Cream & Eggs under Chilled Food at depth 2. Use returned paths for product browsing; a department input requires its category, and an aisle input requires its department. ASDA API reference

How many products can an ASDA request return?

Search, category products and promotions accept hits_per_page up to 60, with a default of 24. Page numbers begin at 1. Keep the page size fixed when advancing and inspect the returned page counts. A paginated collection records observations made at different times, rather than a frozen catalog. ASDA API reference

Which identifier should I use for product detail?

Product detail accepts an ASDA product ID or CIN, another catalog identifier, in id. Numeric values can match either; an exact product-ID match takes precedence. SKU-prefixed IDs match the product ID. Retain both returned identifiers as text so later observations can be joined without relying on names. ASDA API reference

Does product detail include nutrition and reviews?

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. ASDA API reference

Are the unit prices ready to compare?

The numeric unit-price amount is expressed in pounds, while the display text can use pounds or pence. Compare amounts only when their units match, such as litre with litre. Keep pack size and the original display string too; the ordinary unit price does not automatically describe a multibuy. ASDA API reference

Can I use the ASDA API with Python or MCP?

Yes. The request panel includes Python, cURL and Node.js examples for the same REST operation. Supported agent clients can connect through Upscrape MCP. Use the downloadable skill to preserve offer conditions and store IDs, and give your agent a collection limit before asking it to page through results. ASDA API reference

How do I try it and check the cost?

Eligible new accounts receive up to 100 free credits, and failed requests are not charged. Each operation card shows its current catalog price. List quotes depend on the requested page size. Begin with a small offer or search request, then inspect the data before planning a larger collection. ASDA API reference

Can it place an order or return earlier prices?

These operations read catalog observations. They do not place orders, access Rewards balances or supply a historical price dataset. Save repeated results with their collection times to build your own history, keeping the product identifier, store context and offer conditions together so comparisons remain meaningful. ASDA API reference

Check the terms behind your next ASDA comparison

Try the ASDA API on one offer type and inspect the pack price beside its quantity condition. Eligible new accounts receive up to 100 free credits.