↑ ↓ to move ↵ to open
Asda API · Endpoint

Asda Promotions API

Choose Rollbacks, price drops or multibuys. Inspect the returned offer terms beside each product’s single-pack price.

  • 1–10 credits per call
  • Failed calls are free
  • Updated
  • asda.promotions.list
Response completed
{  "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        }      ]    }  ]}
Try it live, free
Input

What you send

The input object of the request, with every field the endpoint accepts.

  • Lists include delisted products unless you turn on the active-only option.
  • Up to 60 products come back a page, 24 by default, and pages start at 1. Keep the page size the same as you move through the pages.
FieldTypeRequiredWhat it doesExample
active_only boolean no Return only products ASDA lists as active (STATUS "A"). Default false keeps delisted products (STATUS "I") so listings are complete. Default: false. true
hits_per_page integer no Number of results per page. From 1 to 60. Default: 24. 5
include_raw boolean no Include ASDA's unprocessed Algolia response under raw (large: ~150 KB per 60 products). Set false for normalized fields only. Default: true. false
page integer no 1-based results page At least 1. Default: 1.
promotion_type string no Promotion class to return Allowed values: all, rollback, price_drop, multibuy. Default: all. multibuy
store_id string no Asda store id used for stock boosting and in_stock flags Default: 4565. 4565
Response

Fields it returns

What each record in the response holds, with the values from the sample above.

FieldTypeWhat it isExample
items[].offer string Ordinary price state: List, Rollback or Dropped; multibuy terms are separate. List
items[].product.name string Name of the returned product or taxonomy node. 12 British Beef Meatballs 340g
items[].promotions[].name string Any 3 for £12
items[].product.price number Ordinary pack amount in the stated currency, before any separate multibuy calculation. 4.97
items[].product object The product record. 22 fields
items[].product.avg_rating integer Average supplied when ratings exist. 5
items[].product.brand string Brand supplied by the catalog; absent stays unknown. Exceptional by ASDA
items[].product.category string Product’s category hierarchy as returned. Meat, Poultry & Fish > Meat & Poultry > Beef > Beef Mince & Mea…
items[].product.cin string Catalog item number, retained separately from the product ID. 9301558
items[].product.currency string Currency code for monetary values. GBP
items[].product.gtin string Barcode-like value read from the catalog image name where available; keep it as text. 5063717061479
items[].product.id string ASDA identifier; preserve it as text. SKU100537679
items[].product.image_id string ASDA's image ID for the product picture. 5063717061479
items[].product.image_url string Link to the product image. https://asdagroceries.scene7.com/is/image/asdagroceries/5063717…
items[].product.in_stock boolean Stock flag for the request’s store; absence is unknown. true
items[].product.offer string Ordinary price state: List, Rollback or Dropped; multibuy terms are separate. List
items[].product.pack_size string ASDA’s pack-size expression; keep it alongside unit prices. 340g
items[].product.price_per_uom string Original unit-price display, which can use pounds or pence. £14.62/KG
items[].product.price_per_uom_unit string Unit basis for the numeric amount, such as LT or KG. KG
items[].product.price_per_uom_value number Unit amount expressed in pounds. 14.62
items[].product.rating_count integer Number of ratings, not individual reviews. 1
items[].product.sales_type string How the product is sold, such as Each or by weight. Each
items[].product.status string A means active; I means delisted. This is separate from stock. A
items[].product.taxonomy object Where the product sits in ASDA's catalogue, from category down to shelf. 8 fields
items[].product.url string ASDA product page linked by the catalog. https://www.asda.com/groceries/product/9301558
items[].promotions array Offers on the product, such as Rollback or a multibuy. 1 records
items[].promotions[].deal object 3 fields
items[].promotions[].end_at string 2028-10-12T23:59:59Z
items[].promotions[].end_unix integer 1,855,007,999
items[].promotions[].id string 10000740328
items[].promotions[].start_at string 2025-12-25T00:00:00Z
items[].promotions[].start_unix integer 1,766,620,800
items[].promotions[].type integer ASDA's number for the kind of offer. 15
items array The products returned. 5 records
page object Page details for the results: size, totals and position. 5 fields
page.algolia_page integer The results page number in ASDA's own search, counted from 0. 0
page.hits_per_page integer How many products each page holds. 5
page.nb_hits integer How many products match in total. 5769
page.nb_pages integer How many pages of results there are in total. 1154
page.page integer Page details for the results: size, totals and position. 1
REST API · MCP server

Call it from your code, or ask your agent

Set UPSCRAPE_API_KEY to your key and copy a working request.

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"  }}'
In your AI agent Claude · Cursor · any MCP client
1Add the Upscrape MCP server
https://data.upscrape.com/mcp
2Ask for the data in plain words

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.

The agent finds the endpoint, shows you the price, and runs it with your credits.
Asda

More from the Asda API

Same data, other platforms

The same data from other platforms

Questions

Asda Promotions API FAQ

The short answers. The docs have the long ones.

Still have a question? Talk to the people who build the endpoints.
How much does the Asda Promotions API cost?

1–10 credits per successful call, shown before it runs. You buy credits once, and paid credits never expire.

What do I send?

Every input is optional; the input fields below list what each one does.

Do I need an Asda login?

No. It reads public Asda data; nothing runs on your account.

Can my AI agent call it?

Yes, over MCP: the agent finds asda.promotions.list, checks its price and runs it with the same credits as the REST API.

Get started

Your first Asda call is free.

Up to 100 free credits to start, no card needed.