Sainsbury's Scraper — UK Groceries Full Catalogue & Prices
Pricing
from $5.00 / 1,000 result scrapeds
Sainsbury's Scraper — UK Groceries Full Catalogue & Prices
Scrape the full Sainsbury's UK groceries catalogue: 30,000+ products with prices, Nectar offers, EAN codes, unit prices, ratings and images. Walks the category tree for guaranteed completeness. No login, no cookies.
Pricing
from $5.00 / 1,000 result scrapeds
Rating
0.0
(0)
Developer
Studio Amba
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Sainsbury's Scraper
Scrape the full Sainsbury's UK groceries catalogue — product names, prices, Nectar offers, EAN codes, unit prices, ratings and images — straight from the official Sainsbury's Groceries Online API.
Why use this actor?
Sainsbury's is one of the "big four" UK supermarkets with 30,000+ products online. If you track grocery prices, build a price-comparison feed, monitor competitors, or feed a retail-analytics pipeline, this actor gives you the whole catalogue as clean structured JSON. It walks the full category tree rather than guessing at keywords, so you get guaranteed coverage — not just whatever a search box returns. No cookies, no login, no browser automation.
What you get
- Full catalogue coverage — walks all 18 top-level departments (with automatic drill-down if a category is too large), so nothing is silently missed.
- Accurate prices — current retail price plus the was-price and Nectar-member offer price when a promotion is active.
- Real identifiers — Sainsbury's
product_uidand EAN barcodes, so you can join against other datasets. - Deduplicated — products live in multiple categories; results are deduped by product ID.
- Certifiable completeness — the actor reads the API's authoritative per-category record counts, so a full run can be reconciled against Sainsbury's own totals.
How to scrape Sainsbury's data
- Add the actor to your Apify account.
- Set your Bright Data Web Unlocker API key (input field
brightDataApiKey, or theBRIGHT_DATA_API_KEYenvironment variable). This is required — Sainsbury's protects the whole site, including its JSON API, with Akamai Bot Manager, and Bright Data handles the unblocking server-side. - Choose a mode:
- Full catalogue — leave
searchQueryandcategoryIdempty and setmaxProductsto0. The actor fetches the category taxonomy and walks every department. - Single category — set
categoryIdto a numeric Sainsbury's category ID. - Keyword search — set
searchQuery(e.g.milk,coffee,wine).
- Full catalogue — leave
- Run it. Results stream into the dataset and can be exported as JSON, CSV, Excel, or pushed to your own API.
Input
| Field | Type | Required | Description |
|---|---|---|---|
searchQuery | String | No | Search products by keyword. Leave empty to walk the catalogue by category. |
categoryId | String | No | Restrict to one Sainsbury's category ID. Ignored when searchQuery is set. |
maxProducts | Integer | No | Max unique products. 0 = the full catalogue (default 20). |
brightDataApiKey | String | Yes | Bright Data Web Unlocker key (or BRIGHT_DATA_API_KEY env var). |
proxyConfiguration | Object | No | Kept for compatibility; unblocking is done by Bright Data. |
Output
Each result is a flat JSON object:
| Field | Type | Example |
|---|---|---|
name | String | "Sainsbury's British Semi Skimmed Milk 2.27L (4 pint)" |
brand | String | "Sainsbury's" |
price | Number | 1.75 |
currency | String | "GBP" |
originalPrice | Number | 9.00 |
pricePerUnit | String | "£0.77/ltr" |
discount | String | "Nectar: Buy 1 for 7.5" |
nectarPrice | Number | 7.50 |
ean | String | "0000000357937" |
productId | String | "357937" |
inStock | Boolean | true |
rating | Number | 4.6 |
reviewCount | Number | 1989 |
category | String | "Fresh milk" |
imageUrl | String | Full image URL |
url | String | Full product page URL |
scrapedAt | String | ISO 8601 timestamp |
Example output
{"name": "Sainsbury's British Semi Skimmed Milk 2.27L (4 pint)","brand": "Sainsbury's","price": 1.75,"currency": "GBP","pricePerUnit": "£0.77/ltr","ean": "0000000357937","productId": "357937","inStock": true,"rating": 4.6,"reviewCount": 1989,"category": "Fresh milk","imageUrl": "https://assets.sainsburys-groceries.co.uk/gol/357937/image.jpg","url": "https://www.sainsburys.co.uk/gol-ui/product/sainsburys-british-semi-skimmed-milk-2-27l-4-pint","scrapedAt": "2026-07-03T12:00:00.000Z"}
How it works
Sainsbury's Groceries Online is a client-side app that reads from a JSON API at /groceries-api/gol-services/product/v1/product. Akamai Bot Manager guards the whole domain, including that API, so plain HTTP is blocked. This actor routes every request through the Bright Data Web Unlocker, which solves the Akamai challenge server-side and returns the raw JSON. It first pulls the category taxonomy, then browses each category page by page (60 products per request), reading the API's own record counts to know when a category is complete. Products are deduplicated by their Sainsbury's product ID.
Cost estimate
A full-catalogue run is roughly 650 Bright Data requests (about 38,000 rows before dedup, ~30,000 unique products at 60 products per request). Keyword and single-category runs are far smaller. Because pricing scales with Bright Data usage, this actor runs on a premium per-result tier.
Limitations
- Requires a Bright Data Web Unlocker key — Sainsbury's Akamai protection can't be bypassed reliably any other way.
brandis a best-effort value derived from the product name (Sainsbury's does not expose a clean brand field on the listing API).- Nutrition, ingredients and full image galleries live on a separate per-product endpoint and are not included in the catalogue crawl.
- Data is scraped from the public website and may change without notice. Respect Sainsbury's terms of service and use responsibly.
Need this data on a schedule, or a custom version?
We run this scraper as a managed service for businesses: scheduled runs, deduplication, delta detection, and delivery to your inbox, Google Sheets, or API — maintenance included. We can also build a custom version with your exact fields and filters, or combine multiple sources into one feed.
See studioamba.dev/services or email hello@studioamba.dev for a free data sample. We maintain 300+ European web scrapers and answer within one business day.