Morrisons Scraper — Full UK Grocery Catalog & Prices avatar

Morrisons Scraper — Full UK Grocery Catalog & Prices

Pricing

Pay per usage

Go to Apify Store
Morrisons Scraper — Full UK Grocery Catalog & Prices

Morrisons Scraper — Full UK Grocery Catalog & Prices

Scrape the complete Morrisons UK groceries catalog: product names, brands, GBP prices, price per unit, categories, images, ratings, promotions and availability. Optional nutrition, ingredients and allergens. No login or cookies required.

Pricing

Pay per usage

Rating

0.0

(0)

Developer

Studio Amba

Studio Amba

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Categories

Share

Morrisons Scraper

Scrape the complete Morrisons UK groceries catalog — every product, with prices, categories, images, ratings and availability. No login, no cookies, no account required.

Morrisons (groceries.morrisons.com) runs on the Ocado Smart Platform. This actor talks directly to the site's public product API, so it returns clean structured data fast and reliably — not brittle HTML scraping.

Why use this actor?

Grocery buyers, price-comparison sites, market researchers and brand teams need a full, current view of what a major UK supermarket sells and at what price. This actor pulls the entire Morrisons catalog (around 30,000 products) in a single run, deduplicated across every department, so you get one clean product feed instead of a partial sample.

  • Complete catalog, provably. The actor walks every department and cross-checks its unique product count against the Morrisons product sitemap, so you can verify coverage rather than trust it.
  • No cookies, no login. The data comes from the site's open API. Nothing to authenticate, no session to keep alive.
  • GBP prices and price-per-unit. Every product carries its current sell price and a normalised unit price (per each, per kg, per litre, etc.).

How to scrape Morrisons data

  1. Add the actor to your Apify account.
  2. Leave every field on its default to pull a quick 100-product sample, or set Max products to 0 to scrape the complete catalog (~30,000 products).
  3. Optionally set a Category filter to scope the run to one department (for example Fruit & Veg or Beer, Wines & Spirits), or set a Search query (for example heinz baked beans) to search the catalog by keyword instead of browsing categories. Search query takes priority over the category filter.
  4. Optionally tick Fetch nutrition, ingredients & allergens for deeper per-product detail (slower — one extra request per product).
  5. Run the actor. Results stream into the dataset and can be exported as JSON, CSV, Excel or fed to an API.

The Morrisons API is open and needs no proxy, but a UK residential proxy is prefilled and recommended for large runs.

Input

FieldTypeRequiredDescription
maxProductsIntegerNoMax products to return. 0 = the complete catalog (~30,000). Default 100.
categoryStringNoLimit to one department or sub-category (e.g. Fruit & Veg) or a Morrisons categoryId. Empty = all departments. Ignored when searchQuery is set.
searchQueryStringNoSearch the catalog for a keyword (e.g. heinz baked beans) instead of browsing categories. Overrides category when set.
enrichDetailsBooleanNoFetch nutrition, ingredients, allergens and country of origin per product. Default false.
proxyConfigurationObjectNoProxy settings. GB residential prefilled. Optional for small runs.

Get the complete catalog

{
"maxProducts": 0,
"enrichDetails": false,
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"],
"apifyProxyCountry": "GB"
}
}

Search by keyword

{
"searchQuery": "heinz baked beans",
"maxProducts": 50
}

Output

Each result contains:

FieldTypeExample
nameString"Morrisons British Strawberries 350g"
brandString"Morrisons"
priceNumber2.49
currencyString"GBP"
pricePerUnitString"£7.11/kg"
productIdString"108413093"
urlStringFull product page URL
availabilityString"in stock"
inStockBooleantrue
categoryString"Cucumber"
categoriesArray["Fruit & Veg", "Salads", "Cucumber"]
imageUrlStringPrimary product image URL
imageUrlsArrayAll product image URLs
packSizeString"350g"
alcoholBooleanfalse
isNewBooleanfalse
promotionString"Price Match"
ratingNumber3.6
reviewCountNumber25
productDescriptionStringOnly when enrichment is enabled
ingredientsStringOnly when enrichment is enabled
nutritionStringOnly when enrichment is enabled
allergensStringOnly when enrichment is enabled
countryOfOriginStringOnly when enrichment is enabled
scrapedAtStringISO 8601 timestamp

Example output

{
"name": "Morrisons Whole Cucumber",
"brand": "Morrisons",
"price": 0.99,
"currency": "GBP",
"pricePerUnit": "£0.99/each",
"productId": "108413093",
"url": "https://groceries.morrisons.com/products/morrisons-whole-cucumber/108413093",
"availability": "in stock",
"inStock": true,
"category": "Cucumber",
"categories": ["Fruit & Veg", "Salads", "Cucumber"],
"imageUrl": "https://groceries.morrisons.com/images-v3/.../300x300.jpg",
"imageUrls": ["https://groceries.morrisons.com/images-v3/.../500x500.jpg"],
"packSize": null,
"alcohol": false,
"isNew": false,
"promotion": "Price Match",
"rating": 3.6,
"reviewCount": 25,
"scrapedAt": "2026-07-03T12:00:00.000Z"
}

Cost estimate

A full catalog run (around 30,000 products) needs roughly 200 listing requests and finishes in a couple of minutes of compute — the API returns 200 fully populated products per request. Enabling nutrition/ingredients enrichment adds one request per product, so a full enriched run is much heavier. For price and catalog data, leave enrichment off.

Completeness

The actor deduplicates products by their Morrisons product ID across every department, then compares the unique count to the Morrisons product sitemap and writes a COMPLETENESS_REPORT to the run's key-value store. That gives you a verifiable coverage figure for the run instead of an unprovable claim.

Limitations

  • No EAN / GTIN barcodes. Morrisons does not expose barcodes anywhere in its data — only its own numeric productId. If you need barcodes, this site can't supply them.
  • Prices are the online groceries prices. Morrisons runs a single national online price, but in-store prices can differ.
  • Promotions are captured as a description (e.g. "Price Match", "Buy 3 for £5") rather than an explicit was-price.
  • Data is scraped from the public website and may change without notice.
  • Respect the website'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.