Sainsbury's UK Grocery Scraper
Pricing
from $3.00 / 1,000 product results
Go to Apify Store
Sainsbury's UK Grocery Scraper
Scrapes product listings from sainsburys.co.uk — returns names, prices, unit prices, brands, and sizes for any search query.
Pricing
from $3.00 / 1,000 product results
Rating
5.0
(1)
Developer
Siddhant
Maintained by CommunityActor stats
1
Bookmarked
75
Total users
15
Monthly active users
65 days
Issues response
14 days ago
Last modified
Categories
Share
Scrape product listings from sainsburys.co.uk by search query. Returns structured data for every product found — including name, brand, price, unit price, size, offer status, and direct product URL.
Features
- Search for any product by keyword (e.g. "beans", "semi skimmed milk", "pasta")
- Multiple queries in a single run
- Extracts prices with multiple fallback strategies for reliability
- Unit pricing with normalised measures (per kg, per litre, etc.)
- Brand detection including Sainsbury's own-brand labels (by Sainsbury's, Taste the Difference)
- Nectar offer and promotional deal detection
- Configurable result limit per query
Input
| Field | Type | Description | Default |
|---|---|---|---|
queries | string[] | List of search queries | required |
maxResultsPerQuery | integer | Max products per query (1-100) | 20 |
Example input
{"queries": ["baked beans", "whole milk", "sourdough"],"maxResultsPerQuery": 10}
Output
Each result in the dataset contains:
| Field | Type | Description |
|---|---|---|
store | string | Always "sainsburys" |
query | string | The search query that produced this result |
name | string | Product name |
brand | string | Brand name (e.g. "Sainsbury's", "Heinz") |
price | number | Current price in GBP |
unitPrice | number | Price per unit (e.g. per kg, per litre) |
unitPriceMeasure | string | Unit measure (e.g. "per kg", "per litre") |
unitSize | string | Product size (e.g. "400g", "1 litre") |
onOffer | boolean | Whether the product has a Nectar or promotional offer |
offerDescription | string | Offer details (e.g. Nectar price text) |
imageUrl | string | Product image URL |
productUrl | string | Direct link to product page on sainsburys.co.uk |
scrapedAt | string | ISO 8601 timestamp |
Example output
{"store": "sainsburys","query": "beans","name": "Sainsbury's Baked Beans 4x415g","brand": "Sainsbury's","price": 1.65,"unitPrice": 0.99,"unitPriceMeasure": "per kg","unitSize": "4x415g","onOffer": false,"offerDescription": null,"imageUrl": "https://assets.sainsburys-groceries.co.uk/gol/...","productUrl": "https://www.sainsburys.co.uk/gol-ui/product/sainsburys-baked-beans-4x415g","scrapedAt": "2026-03-28T10:00:00.000Z"}
Use cases
- Price monitoring — track Sainsbury's prices over time and detect drops
- Basket comparison — compare grocery costs across UK supermarkets
- Market research — analyse competitive pricing and product ranges
- Deal alerts — build notifications for Nectar deals and promotions
- Shopping apps — power product search and comparison features
Notes
- Sainsbury's uses
data-testidattributes and.pt__costclass selectors — these may change when the site redeploys - The scraper uses multiple fallback strategies for price extraction to handle inconsistent DOM rendering
- Brand is inferred from the product name; own-brand detection covers "by Sainsbury's" and "Taste the Difference" ranges