↑ ↓ to move ↵ to open
Morrisons API · Endpoint

Morrisons Promotion Detail API

Get an offer from its ID or URL, with the products in it.

  • 1 credit per call
  • Failed calls are free
  • Updated
  • morrisons.promotion.detail.get
Response completed
{  "promotion": {    "description": "BBQ Burger Bundle for £10",    "long_description": "Buy all items for £10. Order by 07/09/2026, offer subject to availability. Maximum 20 promotional items per customer.",    "presentation_mode": "DEFAULT",    "promotion_id": "6820a0fa-47cb-4d0d-867f-b7e029adc935",    "promotion_page_type": "BUNDLE",    "retailer_promotion_id": "1010595828",    "url": "https://groceries.morrisons.com/offers/bbq-burger-bundle-for-10/1010595828",    "active_period": {      "activeFrom": "2026-07-19T23:00:00Z",      "activeTo": "2026-09-07T23:00:00Z"    },    "breadcrumbs": [],    "groups": [      {        "quantity": 1,        "reward": {          "offer": "£10.00",          "type": "OFFER"        },        "products": [          "dc1cb091-8e98-4145-b603-9a064008039c"        ]      },      {        "quantity": 1,        "reward": {          "offer": "£10.00",          "type": "OFFER"        },        "products": [          "702fe59d-abda-454a-81a8-3147e881c41c"        ]      }    ]  },  "items": [    {      "name": "Morrisons Squeezy Burger Relish (310g)",      "available": true,      "brand": "Morrisons",      "product_id": "dc1cb091-8e98-4145-b603-9a064008039c",      "retailer_product_id": "105213678",      "url": "https://groceries.morrisons.com/products/morrisons-squeezy-burger-relish-310g/105213678",      "price": {        "current": {          "amount": "1.75",          "currency": "GBP"        },        "unit": {          "label": "fop.price.per.kg",          "current": {            "amount": "5.65",            "currency": "GBP"          }        }      },      "rating": {        "count": 9,        "overall": "3.4"      }    },    {      "name": "Morrisons Sliced White Rolls 6 Pack",      "available": true,      "brand": "Morrisons",      "product_id": "702fe59d-abda-454a-81a8-3147e881c41c",      "retailer_product_id": "105694619",      "url": "https://groceries.morrisons.com/products/morrisons-sliced-white-rolls-6-pack/105694619",      "price": {        "current": {          "amount": "0.95",          "currency": "GBP"        },        "unit": {          "label": "fop.price.per.each",          "current": {            "amount": "15.8",            "currency": "GBX"          }        }      },      "rating": {        "count": 69,        "overall": "2.4"      }    }  ]}
Try it live, free
Input

What you send

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

FieldTypeRequiredWhat it doesExample
promotion_id string one of The offer's number, from its Morrisons offer page. 1010595828
url string one of The offer's Morrisons page, as an alternative to the number.
Response

Fields it returns

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

FieldTypeWhat it isExample
items[].name string The offer or product name. Morrisons Squeezy Burger Relish (310g)
items[].brand string The product's brand. Morrisons
items[].rating.overall string The average star rating. 3.4
items[].available boolean Whether the product can be ordered now. true
items[].price object The product's price. 2 fields
items[].rating object The product's rating. 2 fields
items[].price.current object The price now, with its currency. 2 fields
items[].price.unit object The price per unit, such as per kilogram. 2 fields
items[].product_id string Morrisons' ID for the product; the product endpoint takes it. dc1cb091-8e98-4145-b603-9a064008039c
items[].rating.count integer How many ratings the product has. 9
items[].retailer_product_id string Morrisons' shop number for the product. 105213678
items[].url string The page on Morrisons' site. https://groceries.morrisons.com/products/morrisons-squeezy-burg…
items array The products. 6 records
promotion object The offer. 10 fields
promotion.active_period object When the offer runs. 2 fields
promotion.active_period.activeFrom string When the offer starts. 2026-07-19T23:00:00Z
promotion.active_period.activeTo string When the offer ends. 2026-09-07T23:00:00Z
promotion.breadcrumbs array The category path above the page. empty in this sample
promotion.description string The product description. BBQ Burger Bundle for £10
promotion.groups array The product groups the offer covers. 6 records
promotion.groups[].products array dc1cb091-8e98-4145-b603-9a064008039c
promotion.groups[].quantity integer 1
promotion.groups[].reward object 2 fields
promotion.long_description string The offer terms as Morrisons words them. Buy all items for £10. Order by 07/09/2026, offer subject to av…
promotion.presentation_mode string DEFAULT
promotion.promotion_id string Morrisons' ID for the offer; the offer endpoint takes it. 6820a0fa-47cb-4d0d-867f-b7e029adc935
promotion.promotion_page_type string The kind of offer, such as a bundle. BUNDLE
promotion.retailer_promotion_id string Morrisons' shop number for the offer. 1010595828
promotion.url string The page on Morrisons' site. https://groceries.morrisons.com/offers/bbq-burger-bundle-for-10…
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": "morrisons.promotion.detail.get",  "input": {    "promotion_id": "1010595828"  }}'
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

Use Upscrape to open Morrisons offer 1010595828 and list what is in it, what it costs and when it ends.

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

More from the Morrisons API

Questions

Morrisons Promotion Detail 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 Morrisons Promotion Detail API cost?

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

What do I send?

Send promotion_id or url. The input fields below list every option with its type and limits.

Do I need a Morrisons login?

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

Can my AI agent call it?

Yes, over MCP: the agent finds morrisons.promotion.detail.get, checks its price and runs it with the same credits as the REST API.

Get started

Your first Morrisons call is free.

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