↑ ↓ to move ↵ to open
Ocado API · Endpoint

Ocado Promotions API

Browse products and offers in the public Ocado promotions collection with published price and deal information.

  • 8 credits per call
  • Failed calls are free
  • Updated
  • ocado.promotions.list
Response completed
{  "returned": 1,  "items": [    {      "name": "Heinz Seriously Good Mayonnaise",      "available": true,      "brand": "Heinz",      "gtin": null,      "image": "https://www.ocado.com/images-v3/eafa5127-d256-497b-9609-4869092accd6/5b2deb8b-9c84-41bd-9c1f-64b44b062514/300x300.jpg",      "pack_size": "775g",      "retailer_product_id": "313624011",      "url": "https://www.ocado.com/products/heinz-seriously-good-mayonnaise/313624011",      "price": {        "amount": 3.95,        "currency": "GBP"      },      "unit_price": {        "amount": 5.1,        "currency": "GBP",        "unit": "per_kg"      },      "member_prices": [],      "promotions": [        {          "buy_quantity": 2,          "description": "Buy any 2 for £6",          "end": null,          "id": "2aec5721-2c25-4ebf-8aa7-3b2c77002ea0",          "start": null,          "type": "multibuy",          "for_price": {            "amount": 6.0,            "currency": "GBP"          }        }      ]    }  ],  "promotions": [    {      "buy_quantity": 2,      "description": "Buy any 2 for £6",      "end": null,      "id": "2aec5721-2c25-4ebf-8aa7-3b2c77002ea0",      "start": null,      "type": "multibuy",      "for_price": {        "amount": 6.0,        "currency": "GBP"      }    }  ]}
Try it live, free
Response

Fields it returns

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

FieldTypeExample
items[].name string Heinz Seriously Good Mayonnaise
items[].price object 2 fields
items[].available boolean true
items[].brand string Heinz
items[].gtin null null
items[].image string https://www.ocado.com/images-v3/eafa5127-d256-497b-9609-4869092…
items[].member_prices array empty in this sample
items[].pack_size string 775g
items[].price.amount number 3.95
items[].price.currency string GBP
items[].promotions array 1 records
items[].promotions[].buy_quantity integer 2
items[].promotions[].description string Buy any 2 for £6
items[].promotions[].end null null
items[].promotions[].for_price object 2 fields
items[].promotions[].id string 2aec5721-2c25-4ebf-8aa7-3b2c77002ea0
items[].promotions[].start null null
items[].promotions[].type string multibuy
items[].retailer_product_id string 313624011
items[].unit_price object 3 fields
items[].unit_price.amount number 5.1
items[].unit_price.currency string GBP
items[].unit_price.unit string per_kg
items[].url string https://www.ocado.com/products/heinz-seriously-good-mayonnaise/…
items array 1 records
promotions array 1 records
promotions[].buy_quantity integer 2
promotions[].description string Buy any 2 for £6
promotions[].end null null
promotions[].for_price object 2 fields
promotions[].for_price.amount number 6.0
promotions[].for_price.currency string GBP
promotions[].id string 2aec5721-2c25-4ebf-8aa7-3b2c77002ea0
promotions[].start null null
promotions[].type string multibuy
returned integer 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": "ocado.promotions.list",  "input": {}}'
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

With Upscrape, get the Ocado promotions. Tell me what it costs before you run it, then show the results as a table.

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

More from the Ocado API

Same data, other platforms

The same data from other platforms

Questions

Ocado 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 Ocado Promotions API cost?

8 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 Ocado login?

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

Can my AI agent call it?

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

Get started

Your first Ocado call is free.

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