Sainsbury's Scraper — UK Groceries Full Catalogue & Prices avatar

Sainsbury's Scraper — UK Groceries Full Catalogue & Prices

Pricing

from $5.00 / 1,000 result scrapeds

Go to Apify Store
Sainsbury's Scraper — UK Groceries Full Catalogue & Prices

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

Studio Amba

Maintained by Community

Actor 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_uid and 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

  1. Add the actor to your Apify account.
  2. Set your Bright Data Web Unlocker API key (input field brightDataApiKey, or the BRIGHT_DATA_API_KEY environment 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.
  3. Choose a mode:
    • Full catalogue — leave searchQuery and categoryId empty and set maxProducts to 0. The actor fetches the category taxonomy and walks every department.
    • Single category — set categoryId to a numeric Sainsbury's category ID.
    • Keyword search — set searchQuery (e.g. milk, coffee, wine).
  4. Run it. Results stream into the dataset and can be exported as JSON, CSV, Excel, or pushed to your own API.

Input

FieldTypeRequiredDescription
searchQueryStringNoSearch products by keyword. Leave empty to walk the catalogue by category.
categoryIdStringNoRestrict to one Sainsbury's category ID. Ignored when searchQuery is set.
maxProductsIntegerNoMax unique products. 0 = the full catalogue (default 20).
brightDataApiKeyStringYesBright Data Web Unlocker key (or BRIGHT_DATA_API_KEY env var).
proxyConfigurationObjectNoKept for compatibility; unblocking is done by Bright Data.

Output

Each result is a flat JSON object:

FieldTypeExample
nameString"Sainsbury's British Semi Skimmed Milk 2.27L (4 pint)"
brandString"Sainsbury's"
priceNumber1.75
currencyString"GBP"
originalPriceNumber9.00
pricePerUnitString"£0.77/ltr"
discountString"Nectar: Buy 1 for 7.5"
nectarPriceNumber7.50
eanString"0000000357937"
productIdString"357937"
inStockBooleantrue
ratingNumber4.6
reviewCountNumber1989
categoryString"Fresh milk"
imageUrlStringFull image URL
urlStringFull product page URL
scrapedAtStringISO 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.
  • brand is 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.