Ocado Product Scraper
Pricing
from $1.60 / 1,000 results
Ocado Product Scraper
[π° $1.6 / 1K] Scrape grocery products from Ocado.com: name, brand, price, unit price, pack size, availability, ratings, review count, dietary icons, images and category path. Search by keyword or paste Ocado URLs.
Pricing
from $1.60 / 1,000 results
Rating
0.0
(0)
Developer
SolidCode
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Pull grocery product data from Ocado.com at scale β names, brands, prices, price-per-unit, pack sizes, stock status, aggregate star ratings, dietary badges, category breadcrumbs, and product images across the full UK Ocado catalogue. Search by plain keyword like "milk" or paste any Ocado search or category URL. Built for pricing analysts, grocery-tech teams, and market researchers who need clean, structured Ocado product data without hand-crafting search links or maintaining their own scraper.
Why This Scraper?
- Keyword search, not just URLs β type
milkororganic eggsand each term runs its own Ocado search. No hand-building?q=links the way URL-only tools force you to. - Six sort orders on demand β Recommended, Price lowβhigh, Price highβlow, Price per unit lowβhigh, Price per unit highβlow, and Customer rating, applied before collection.
- Normalized price-per-unit in GBP β every product carries a unit price with its measure (per litre, per kg, per 100g), converted from Ocado's raw pence (GBX) into clean pounds so you can compare value across pack sizes directly.
- Live promotions captured β current deal text per product ("Now Β£1.40, was Β£2.10", "Buy any 2 for Β£4", "Everyday Savers"), so you can flag every product on offer without a second lookup.
- Aggregate rating plus review count β average star rating and total number of customer reviews on every product row, ready for ranking and quality analysis.
- Dietary and attribute badges β the actual on-pack labels (e.g. Vegetarian, Vegan, Organic, Lactose Free, Freezable) captured as a list per product.
- Category breadcrumb trail β the full Ocado category path for every product, so you can group and segment the catalogue by aisle without guessing.
- Freshness signal built in β guaranteed minimum product life (e.g. "3 days", "1 week") for perishables, plus alcohol, newly-listed, and time-restricted flags.
- Primary image plus gallery β a main product image URL and a de-duplicated list of additional images for every item.
- Cost control per input β cap results per keyword or URL, or set unlimited, and keep a run going past a single failed input.
Use Cases
Pricing & Competitive Intelligence
- Track Ocado prices on staple products over time
- Compare price-per-unit across pack sizes and brands
- Monitor own-label vs. branded price gaps
- Benchmark a competitor's shelf against Ocado's catalogue
Market & Category Research
- Map an entire category by breadcrumb path
- Measure brand presence and assortment depth in an aisle
- Spot newly listed products with the new-item flag
- Analyse dietary-badge coverage (vegan, organic, gluten-free) across a category
Product & Assortment Analytics
- Build a structured product feed with images and pack sizes
- Rank products by average rating and review count
- Segment perishables by guaranteed product life
- Flag alcohol and time-restricted lines for compliance filtering
Data Enrichment & Integration
- Enrich an existing SKU catalogue with current Ocado pricing and stock
- Feed product data into dashboards and BI tools
- Power price-comparison and shopping-assistant apps
- Keep a nightly product feed in sync via scheduled runs
Getting Started
Search by Keyword
The simplest way to start β one keyword:
{"searchQueries": ["milk"],"maxResults": 100}
Multiple Keywords, Sorted by Value
{"searchQueries": ["organic eggs", "greek yogurt", "olive oil"],"sortBy": "pricePerAscending","maxResults": 200}
Paste Ocado URLs
Paste any Ocado search or category page URL β the scraper classifies each automatically:
{"startUrls": ["https://www.ocado.com/search?q=coffee","https://www.ocado.com/categories/fresh-chilled-food/dairy-eggs/9571f5bf-9a4c-48ff-be4b-9bdcfd080616"],"maxResults": 500,"ignoreUrlFailures": true}
Full-Featured Example
{"searchQueries": ["cheddar cheese"],"startUrls": ["https://www.ocado.com/search?q=butter"],"sortBy": "customerRating","maxResults": 0,"ignoreUrlFailures": true}
Input Reference
What to Scrape
| Parameter | Type | Default | Description |
|---|---|---|---|
searchQueries | string[] | ["milk"] | Keywords to search on Ocado, such as "milk" or "organic eggs". Each keyword runs its own search. Leave empty if you are pasting URLs. |
startUrls | string[] | [] | Paste Ocado search or category page URLs. A search URL's keyword and sort order are replayed; category URLs must be a leaf-category page. Leave empty if you are using keywords. |
Options
| Parameter | Type | Default | Description |
|---|---|---|---|
sortBy | select | Recommended (Ocado default) | Order products before they are collected: Recommended, Price: low to high, Price: high to low, Price per unit: low to high, Price per unit: high to low, or Customer rating: highest first. A sort inside a pasted URL takes priority. |
maxResults | integer | 100 | Maximum number of products to return per search keyword or URL. Set to 0 for unlimited. |
ignoreUrlFailures | boolean | true | Keep the run going if one keyword or URL fails, instead of stopping the whole run. |
Output
Every product is one flat row. Here is a representative result:
{"productId": "12345678","retailerProductId": "560291011","name": "Ocado British Semi Skimmed Milk","brand": "Ocado","promotions": ["Now Β£1.40, was Β£2.10"],"packSizeDescription": "2.27L (4 pints)","price": 1.45,"currency": "GBP","unitPrice": 0.64,"unitPriceMeasure": "PER_LITRE","available": true,"timeRestricted": false,"isAlcohol": false,"isNew": false,"mainImage": "https://www.ocado.com/productImages/560/56029101_0_640x640.jpg","images": ["https://www.ocado.com/productImages/560/56029101_1_640x640.jpg"],"attributeIcons": ["Vegetarian"],"averageRating": 4.7,"reviewCount": 328,"taxCodes": ["Zero rated"],"guaranteedProductLife": "5 days","categoryPath": ["Fresh & Chilled", "Milk", "Fresh Milk"],"url": "https://www.ocado.com/products/ocado-british-semi-skimmed-milk/560291011","searchQuery": "milk","sourceUrl": null,"scrapedAt": "2026-07-03T14:30:00+00:00"}
Core Fields
| Field | Type | Description |
|---|---|---|
productId | string | Ocado product identifier |
retailerProductId | string | Retailer/SKU product id used to build the product URL |
name | string | Full product name |
brand | string | Brand name |
promotions | string[] | Current deal/offer descriptions (e.g. "Now Β£1.40, was Β£2.10", "Buy any 2 for Β£4") β empty when the product has no offer |
packSizeDescription | string | Pack size text (e.g. "1 litre", "6 x 400g") |
url | string | Canonical product page URL |
Pricing
| Field | Type | Description |
|---|---|---|
price | number | Current product price |
currency | string | Currency code (GBP) |
unitPrice | number | Price per unit, normalized to GBP |
unitPriceMeasure | string | Unit for the unit price (e.g. PER_LITRE, PER_KG) |
available | boolean | Whether the product is currently in stock |
taxCodes | string[] | Tax code display names |
Ratings & Attributes
| Field | Type | Description |
|---|---|---|
averageRating | number | Aggregate customer star rating |
reviewCount | integer | Total number of customer reviews |
attributeIcons | string[] | Dietary / attribute badge labels (e.g. Vegetarian, Vegan, Organic) |
guaranteedProductLife | string | Guaranteed minimum product life (e.g. "5 days") |
categoryPath | string[] | Category breadcrumb trail |
Images & Flags
| Field | Type | Description |
|---|---|---|
mainImage | string | Primary product image URL |
images | string[] | Additional product image URLs |
isAlcohol | boolean | Alcoholic product flag |
isNew | boolean | Newly listed product flag |
timeRestricted | boolean | Product has a time-of-day purchase restriction |
Run Context
| Field | Type | Description |
|---|---|---|
searchQuery | string | Originating keyword (when from a search) |
sourceUrl | string | Originating listing URL (when from a URL) |
scrapedAt | string | ISO timestamp of extraction |
Tips for Best Results
- Start small β set
maxResultsto 10β50 on your first run to confirm the data matches your needs, then scale up. - Only leaf category pages list products β when pasting a category URL, use the deepest sub-category (e.g. "Fresh Milk", not "Dairy"). Top-level category pages return no products.
- Use
?q=search URLs β a pasted Ocado search URL replays its keyword and sort order. Ocado ignores non-standard keyword parameters, so stick to the standard search link. - Compare value with price-per-unit sort β sort by "Price per unit: low to high" to surface the best-value pack size across brands in one pass, since pack sizes vary widely.
- A URL's own sort wins β if a pasted URL already contains a sort, it overrides the
sortByinput for that URL. - Keep failures non-fatal β leave
ignoreUrlFailureson when running many keywords or URLs so one bad input never aborts the whole run. - Set
maxResultsto 0 for a full sweep β use unlimited only when you genuinely want the entire result set for a keyword or category.
Pricing
From $1.60 per 1,000 results β cleaner output and keyword search at a lower rate than URL-only alternatives. Bronze, Silver, and Gold subscribers pay progressively less; the table below shows total cost at each discount tier.
| Results | No discount | Bronze | Silver | Gold |
|---|---|---|---|---|
| 100 | $0.19 | $0.18 | $0.17 | $0.16 |
| 1,000 | $1.90 | $1.80 | $1.70 | $1.60 |
| 10,000 | $19.00 | $18.00 | $17.00 | $16.00 |
| 100,000 | $190.00 | $180.00 | $170.00 | $160.00 |
A "result" is any product row in the output dataset. No compute or time-based charges β you pay per result, plus a small fixed per-run start fee.
Integrations
Export data in JSON, CSV, Excel, XML, or RSS. Connect to 1,500+ apps via:
- Zapier / Make / n8n β Workflow automation
- Google Sheets β Direct spreadsheet export
- Slack / Email β Notifications on new results
- Webhooks β Trigger custom APIs on run completion
- Apify API β Full programmatic access
Legal & Ethical Use
This actor is designed for legitimate price monitoring, market research, and product analysis. Users are responsible for complying with applicable laws and Ocado's Terms of Service. Collect only publicly available product information, respect intellectual property, and do not use extracted data for any unlawful purpose.