Waitrose Scraper: Products, Prices, Offers & Barcodes
Pricing
from $3.20 / 1,000 products
Waitrose Scraper: Products, Prices, Offers & Barcodes
Scrape Waitrose (waitrose.com) products and prices: search, categories, offers and product URLs. Gets price, was price, unit price, offers with end dates, myWaitrose prices, barcodes (GTIN), ratings and stock. UK home connections. Failed lookups are free.
Pricing
from $3.20 / 1,000 products
Rating
0.0
(0)
Developer
Zaiq
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
6 days ago
Last modified
Categories
Share
Get products and prices from Waitrose (waitrose.com) as structured data: price, was price, unit price, every offer with its end date, myWaitrose member prices, barcodes (GTIN), size, stock, ratings, category and image. Search waitrose.com, read whole categories or offer groups, or look up products by URL or line number.
The Actor reads the same product data the Waitrose website loads for any visitor, through home (residential) internet connections in Great Britain. It does not log in and needs no account.
What it does
- Search waitrose.com for any words and return the products in the order Waitrose shows them.
- Categories: give a category page (or its ID) and every product in it is read, page by page, 96 at a time.
- Offers: every grocery product on offer (about 5,000), or one offer group: Half price, Multi-buy, Percentage off, Save a third, myWaitrose member offers. Offer pages such as Bakery offers work as category URLs too.
- Product lookups: product page URLs or Waitrose line numbers, 60 per request.
- One clean row per product: a product found by two searches is written and charged once.
- Barcodes: every barcode Waitrose lists for the product, plus the main EAN-13 picked out as
gtin. - Offers with dates: the offer text, its type (price cut, multi-buy, new lower price, introductory, member price), the end date, the offer price and how many you must buy.
- Unit prices normalised to a number and a unit (for example 1.11 per l), and pack sizes normalised to grams, millilitres or items.
- Stock: products Waitrose marks as sold out online come back as
out_of_stockwith Waitrose's wording. - Run summary in the key-value store (
RUN-SUMMARY): what each input found, products not found, why the run stopped, the UK connections used and the traffic.
Who uses it
- Price comparison and grocery apps that need Waitrose prices, unit prices and offers every day.
- Brands and suppliers tracking their products' shelf price, promotions and end dates at Waitrose.
- Analysts measuring how many products are on offer, how deep the cuts are and how long they last.
- Product data teams matching Waitrose products to other retailers by barcode.
Example
Runs on 4 October 2026, through UK home connections:
| Input | Result |
|---|---|
| Every grocery product on offer | 5,070 products in 80 seconds (53 requests). Every row has an offer end date: 3,356 price cuts, 1,261 multi-buys, 374 new lower prices, 79 introductory offers. 123 were sold out online. |
| Three searches (chocolate, milk, free range eggs), maximum 450 | 450 products in 10 seconds. 93 products found by two searches were written once. Barcode, unit price and rating on all 450. |
| Two category pages (Milk; Bakery offers) | 279 products in 7 seconds: all 177 milk products and all 102 bakery offers. |
| Half price offer group | 141 products, all with barcodes. |
| Six product references (URLs, line numbers, a made-up line number, two non-product entries) | 3 products; the unknown line number is listed in the run summary as not found; the two non-product entries are skipped with a warning. All free except the 3 products. |
Input
{"searchTerms": ["essential semi skimmed milk"],"categoryUrls": ["https://www.waitrose.com/ecom/shop/browse/groceries/fresh_and_chilled/milk_butter_and_eggs/milk"],"productUrls": ["053457"],"offers": "none","offersOnly": false,"maxItems": 100}
| Field | What it does |
|---|---|
searchTerms | Words to search for on waitrose.com. |
categoryUrls | Category pages (/ecom/shop/browse/groceries/...), offer pages (/ecom/shop/browse/offers/...?categoryId=...) or category IDs such as 301241. |
productUrls | Product page URLs or line numbers such as 053457. Up to 5,000. |
offers | none (default), all (every grocery product on offer), half-price, multi-buy, percentage-off, save-third or my-waitrose. |
offersOnly | Keep only products with an offer, a lower price than before or a member price. The other products are not charged. |
maxItems | Stop after this many products (default 100; 0 means no limit). |
proxyConfiguration | UK home connections (Apify Proxy, RESIDENTIAL, GB) by default. |
maxConcurrency | Inputs worked on at once (default 4). |
Output
One row per product. A row from the search above:
{"retailer": "Waitrose","productId": "053448-26749-26750","sku": "053448","gtin": "5000295012684","name": "Essential British Free Range Semi-Skimmed Milk 2 Pints","brand": "Waitrose Ltd","size": "1.136litre","quantity": 1136.0,"quantityUnit": "ml","packCount": null,"price": 1.25,"wasPrice": 1.3,"currency": "GBP","unitPrice": 1.11,"unitPriceUnit": "l","memberPrice": null,"memberPriceProgram": null,"memberPriceValidFrom": null,"memberPriceValidTo": null,"onOffer": true,"promotionText": "New Lower Price","promotionType": "new-lower-price","offerStartDate": null,"offerEndDate": "2026-12-08","promotions": [{"text": "New Lower Price", "type": "new-lower-price", "id": "554887", "validFrom": null,"validTo": "2026-12-08", "memberOnly": false, "requiredQuantity": null, "price": 1.25}],"available": true,"availability": "in_stock","availabilityText": null,"category": "Groceries > Fresh & Chilled > Milk, Butter & Eggs > Milk > Semi-Skimmed Milk > 2 Pints","categoryPath": ["Groceries", "Fresh & Chilled", "Milk, Butter & Eggs", "Milk", "Semi-Skimmed Milk", "2 Pints"],"imageUrl": "https://ecom-su-static-prod.wtrecom.com/images/products/4/LN_053448_BP_4.jpg","productUrl": "https://www.waitrose.com/ecom/products/essential-british-free-range-semi-skimmed-milk-2-pints/053448-26749-26750","rating": 4.42,"reviewCount": 616,"sponsored": false,"gtins": ["5000295012684", "0000001015317", "5000373711102", "5010989781123", "5000373713762", "5000169015315", "01015317"],"description": "Fresh pasteurised homogenised free range semi-skimmed milk.","sourceType": "search","source": "essential semi skimmed milk","position": 3,"scrapedAt": "2026-10-04T16:08:03Z","charged": true}
priceis what a shopper pays today without a loyalty card;wasPriceis the earlier price when Waitrose shows one.memberPriceis the myWaitrose price with its end date (myWaitrose offers are rare: one on 4 October 2026).quantityandquantityUnitdescribe the whole pack in grams, millilitres or items;unitPriceUnitiskg,l,100g,eachand so on.availabilityisin_stockorout_of_stock(Waitrose's "sold out online").positionis the product's place in the search, category or offer list it was found in.- The same fields are used by our other UK grocery scrapers (Ocado, ALDI UK, Lidl GB), so their data can be joined.
Use it from code, automations and AI agents
- API: run it and get the results in one call:
POST https://api.apify.com/v2/acts/zaiq~waitrose-scraper/run-sync-get-dataset-items?token=YOUR_TOKENwith the input as JSON. The API tab on this page has ready-made Python, JavaScript and cURL examples. - Python (
pip install apify-client):
from apify_client import ApifyClientclient = ApifyClient("YOUR_TOKEN")run = client.actor("zaiq/waitrose-scraper").call(run_input={'searchTerms': ['milk'], 'maxItems': 20})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item)
- No code: connect it to Google Sheets, Zapier, Make or n8n from the Integrations tab, schedule runs in Apify Console, and get a webhook when a run finishes.
- AI agents (MCP): add it as a tool to Claude, Cursor or any MCP client through Apify's MCP server:
https://mcp.apify.com?tools=zaiq/waitrose-scraper.
Pricing
$4.00 per 1,000 products (event product-scraped, $0.004 per product row). Apify platform usage is included.
You pay only for product rows with a price. Searches that find nothing, failed or blocked requests, products not found, products found again by a second input and products without a price cost nothing. Examples: the 20-product test input costs $0.08; all 5,070 grocery offers cost $20.28. Set a maximum cost per run in Apify and the Actor stops cleanly when it is reached.
Limits
- Prices are Waitrose's online prices for a shopper without a delivery address. Stock is the online "sold out" flag, not shelf stock in a branch.
- Waitrose shows myWaitrose member prices only on a few products at a time; when there are none,
memberPriceis empty. - The Actor reads what the website shows; if Waitrose changes its site, the Actor needs an update (the run summary shows which inputs failed, and failed inputs are free).
FAQ
Does it need a Waitrose account? No. It reads public product data without logging in.
Why UK home connections? They are what the website expects from shoppers. Each connection is checked to be in Great Britain by two IP-location services before it is used.
How do I track prices every day? Save your input as a task and schedule it in Apify. Join rows on productId or
gtin to see price and offer changes.
Is it legal? The Actor reads data the website shows to any visitor. Check Waitrose's terms and the law that applies to your use before you use the data.
This Actor is not affiliated with Waitrose & Partners.