Waitrose APIwaitrose.ae ↗
Retrieve product details, EAN-13 barcodes, prices, ingredients, and availability from the Waitrose UAE online grocery catalogue via two endpoints.
What is the Waitrose API?
The Waitrose UAE API provides access to grocery product data across two endpoints: get_product and search_by_barcode. Each response includes up to 10 structured fields — name, brand, price in AED, EAN-13 barcode, storage instructions, stock status, image URL, and category hierarchy. Use get_product to fetch a specific item by its product slug, or search_by_barcode to look up any item in the Waitrose UAE catalogue by its 13-digit barcode.
curl -X GET 'https://api.parse.bot/scraper/5f2e5321-3f95-4f0b-bf50-bb58ff0fb4ac/get_product?product_slug=kelloggs-crunchy-nut-chocolate-clusters-400g_60054' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace waitrose-ae-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""Walkthrough: Waitrose UAE SDK — look up products by slug or barcode."""
from parse_apis.Waitrose_UAE_API import Waitrose, ProductNotFound
client = Waitrose()
# Look up a product by barcode
try:
product = client.products.search_by_barcode(barcode="5059319022437")
print(product.name, product.brand, product.price, product.currency)
print(product.barcode, product.categories)
except ProductNotFound as e:
print(f"Product not found: {e.product_slug}")
# Fetch a product by its URL slug
try:
detail = client.products.get(product_slug="kelloggs-crunchy-nut-chocolate-clusters-400g_60054")
print(detail.name, detail.ingredients)
print(detail.in_stock, detail.storage)
except ProductNotFound as e:
print(f"Product not found: {e.product_slug}")
print("exercised: products.search_by_barcode, products.get")
Retrieve full product details including name, price, barcode (EAN-13), brand, ingredients, allergy advice, storage instructions, and availability. The product slug is the URL path segment from the product page (e.g. 'kelloggs-crunchy-nut-chocolate-clusters-400g_60054').
| Param | Type | Description |
|---|---|---|
| product_slugrequired | string | Product URL slug including the numeric ID suffix (e.g. 'kelloggs-crunchy-nut-chocolate-clusters-400g_60054'). Found in product page URLs at waitrose.ae/en/products/<slug>/. |
{
"type": "object",
"fields": {
"url": "string — canonical product page URL",
"name": "string — product display name",
"brand": "string — product brand name",
"price": "number — price in the listed currency",
"barcode": "string — EAN-13 barcode number",
"storage": "string — storage instructions",
"currency": "string — ISO currency code (e.g. AED)",
"in_stock": "boolean — whether the product is currently in stock",
"image_url": "string — URL to the product image",
"categories": "array of category names from broadest to narrowest",
"product_id": "string — internal Waitrose product ID",
"description": "string — short product description",
"ingredients": "string — full ingredients list",
"allergy_advice": "string — allergy information"
},
"sample": {
"data": {
"url": "https://www.waitrose.ae/en/products/kelloggs-crunchy-nut-chocolate-clusters-400g_60054/",
"name": "Kellogg's crunchy nut chocolate clusters 400g",
"brand": "Kellogg's",
"price": 42.25,
"barcode": "5059319022437",
"storage": "Store in a cool, dry place.",
"currency": "AED",
"in_stock": true,
"image_url": "https://prod-waitrose.azureedge.net/media/cache/03/92/0392eac917de4d0028d439d5d16e1ed4.jpg",
"categories": [
"Food Cupboard",
"Cereals",
"Everyday"
],
"product_id": "60054",
"description": "Crunchy nut clusters chocolate cereal brings crunch to breakfast with peanut and honey clusters and chocolate curls. Deliciously chocolatey and nutty, with no artificial colours or flavours.",
"ingredients": "Whole oats, sugar, milk chocolate curls (12%) (sugar, cocoa mass, cocoa butter, whole milk powder, skimmed milk powder, emulsifier {soy lecithin}, natural vanilla flavouring), wheat flour, maize, vegetable oils (sunflower, certified sustainable palm oil), roasted peanuts (4%), invert sugar syrup, honey (1%), glucose syrup, salt, barley malt extract, antioxidants (ascorbyl palmitate, alpha tocopherol), skimmed milk powder, soy lecithin.",
"allergy_advice": "Contains oats, milk, wheat, soy, barley, peanuts. May contain gluten from other cereals."
},
"status": "success"
}
}About the Waitrose API
Endpoints
The API exposes two endpoints. get_product accepts a product_slug — the URL path segment from a Waitrose UAE product page, including its numeric ID suffix (e.g. kelloggs-crunchy-nut-chocolate-clusters-400g_60054) — and returns the full product record. search_by_barcode accepts a 13-digit EAN-13 barcode string and resolves it to the matching product in the Waitrose UAE catalogue, returning the same field set or an error if no match exists.
Response Fields
Both endpoints return an identical response shape: url (canonical product page URL), name, brand, price (numeric, in the currency indicated by currency, typically AED), barcode (EAN-13 string), storage (storage instructions as printed on pack), in_stock (boolean), image_url, and categories (an ordered array from broadest to narrowest, e.g. ["Food Cupboard", "Breakfast Cereals", "Granola & Clusters"]).
Coverage and Scope
The API covers products listed on the Waitrose UAE (waitrose.ae) storefront. Prices and stock status reflect the UAE regional catalogue, which differs from the UK Waitrose range. The barcode field returns the EAN-13 code as it appears on the product, making this useful for cross-referencing against external product databases or POS systems. The categories array preserves the site's own taxonomy rather than a normalised third-party classification.
The Waitrose API is a managed, monitored endpoint for waitrose.ae — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when waitrose.ae changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official waitrose.ae API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Build a barcode-scanning grocery app that resolves EAN-13 codes to Waitrose UAE product details and prices.
- Monitor price changes for specific Waitrose UAE products using the
priceandcurrencyfields fromget_product. - Track stock availability (
in_stock) for high-demand items across the Waitrose UAE catalogue. - Enrich an internal product database with brand, ingredients, and storage instructions by looking up known barcodes.
- Map Waitrose UAE product taxonomy using the
categoriesarray to build category-level browsing or reporting. - Sync Waitrose UAE product images and names into a comparison shopping feed using
image_urlandname.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Waitrose UAE offer an official developer API?+
What does `search_by_barcode` return if the barcode is not in the Waitrose UAE catalogue?+
Does the API return customer reviews or nutritional information?+
Can I retrieve a list of all products in a category or search by keyword?+
How current is the price and stock data returned?+
in_stock values reflect the state of the Waitrose UAE product page at the time the request is made. There is no caching layer that would cause these fields to lag by a fixed interval, but Waitrose UAE may update pricing or availability on their own schedule independently of API calls.