Morrisons Scraper avatar

Morrisons Scraper

Pricing

from $2.50 / 1,000 products

Go to Apify Store
Morrisons Scraper

Morrisons Scraper

[💰 $2.5 / 1K] Extract Morrisons grocery products by keyword, category, or product URL — name, brand, price, unit price, size, offers, ratings, images, and availability. Optional customer reviews.

Pricing

from $2.50 / 1,000 products

Rating

0.0

(0)

Developer

SolidCode

SolidCode

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

12 days ago

Last modified

Share

Pull live grocery data from Morrisons — prices, unit prices, pack sizes, multibuy and "Price Match" offers, star ratings, availability, product images, and customer reviews — by keyword search, category page, or individual product URL. Built for retail and CPG analysts, price-comparison platforms, and FMCG brands who need to track Morrisons shelf prices and promotions at scale without building and maintaining their own data pipeline.

Why This Scraper?

  • Three ways to target products — keyword search (e.g. "baked beans"), a Morrisons category page URL, or a list of specific product URLs. Mix all three in one run.
  • Up to 300 products per search or category — captures the full Morrisons listing depth for any term or aisle in a single query, ad placements stripped out automatically.
  • Normalized unit pricing — every product carries a comparable unit price plus its measure (per kg, per litre, or per item), so you can compare value across pack sizes without manual maths.
  • Promotion and "Price Match" capture — detects whether a product is on offer, the offer wording (e.g. "Buy 3 for £10", "Price Match"), and the pre-offer "was" price when published.
  • Optional customer reviews — pull individual reviews per product with author, star rating, headline, full review text, and date, newest first.
  • Star rating plus review count — the summary overall rating and total number of ratings come on every product, even with reviews turned off.
  • Pack size and brand on every row — pack/size description (e.g. "4 x 410g") and brand name for clean catalog building and matching.
  • Direct product image and link — a full-resolution product image URL and a canonical Morrisons product URL for every result.
  • Availability flag — a true/false in-stock signal so you can filter out delisted or temporarily unavailable lines.

Use Cases

Price Intelligence

  • Track Morrisons prices for a basket of products on a recurring schedule
  • Compare unit prices (per kg, per litre, per item) across competing pack sizes
  • Benchmark Morrisons against other supermarkets in price-comparison tools
  • Detect price changes and "was/now" movements over time

Promotion Monitoring

  • Spot which products are on offer and capture the exact offer wording
  • Monitor "Price Match" lines and multibuy deals as they launch
  • Measure promotion frequency and depth by brand or category
  • Alert when a tracked product goes on or comes off offer

Product Catalog Building

  • Build a structured Morrisons catalog with name, brand, size, and image
  • Map products to category paths for taxonomy and assortment analysis
  • Keep an enriched product feed fresh for marketplaces and apps
  • Match Morrisons SKUs to your own product master by name and pack size

Brand & Review Analysis

  • Collect customer reviews to mine sentiment and recurring complaints
  • Track star ratings and review volume for your own and rival brands
  • Identify highly rated products in a category for merchandising
  • Measure review growth on newly launched lines

Competitive Research

  • Audit a competitor brand's full range across Morrisons categories
  • Track availability to detect range changes and delistings
  • Quantify shelf presence by brand within a category
  • Feed assortment and pricing data into market dashboards

Getting Started

The quickest way to start — one search term:

{
"searchQueries": ["baked beans"]
}

Search Multiple Terms with Reviews

{
"searchQueries": ["semi skimmed milk", "sourdough"],
"maxResultsPerInput": 100,
"includeReviews": true,
"maxReviewsPerProduct": 20
}

Scrape a Category and Specific Products

{
"categoryUrls": [
"https://groceries.morrisons.com/categories/fruit-veg/176738"
],
"productUrls": [
"https://groceries.morrisons.com/products/morrisons-bananas-loose/108001234"
],
"maxResultsPerInput": 0
}

Input Reference

What to Scrape

Provide at least one of these three. You can combine all of them in a single run.

ParameterTypeDefaultDescription
searchQueriesstring[]["baked beans"]Product keywords to search for on Morrisons, such as 'baked beans', 'semi skimmed milk', or 'sourdough'. Each query is scraped separately. Leave empty if you only use category or product URLs.
categoryUrlsstring[][]Morrisons category or browse page URLs (e.g. https://groceries.morrisons.com/categories/...). Every product listed under the category will be collected, up to the result limit.
productUrlsstring[][]Direct Morrisons product page URLs (e.g. https://groceries.morrisons.com/products/...). Use this to scrape a specific list of known products.

Options

ParameterTypeDefaultDescription
maxResultsPerInputinteger50Maximum number of products to collect for each search query and each category URL. Morrisons returns at most 300 products per search or category, so set 0 to collect all available products up to that limit. Product URLs are always scraped in full regardless of this limit.
includeReviewsbooleanfalseWhen enabled, collect individual customer reviews for each product (review text, rating, author, date). This visits each product page and increases run time and cost. When off, only the summary rating and rating count are returned.
maxReviewsPerProductinteger20Maximum number of customer reviews to collect per product. Only applies when 'Include Customer Reviews' is enabled. Set to 0 for all available reviews — note that best-selling products can have hundreds of reviews, which makes runs noticeably slower and more expensive. The default of 20 keeps runs fast and predictable.

Output

Each product is one row. Here's a representative result with reviews enabled:

{
"query": "baked beans",
"sourceUrl": null,
"name": "Heinz Beanz In Tomato Sauce",
"brand": "Heinz",
"productId": "108001234",
"price": 1.40,
"originalPrice": 1.75,
"unitPrice": 0.34,
"unitPriceMeasure": "per item",
"unitSize": "4 x 415g",
"onOffer": true,
"offerDescription": "Price Match",
"imageUrl": "https://groceries.morrisons.com/productImages/108/108001234_0_640x640.jpg",
"productUrl": "https://groceries.morrisons.com/products/heinz-beanz-in-tomato-sauce/108001234",
"categoryPath": ["Food Cupboard", "Tinned & Canned Food", "Baked Beans"],
"rating": 4.6,
"ratingCount": 512,
"available": true,
"attributes": ["Vegetarian", "Gluten Free"],
"reviews": [
{
"author": "Sarah M",
"rating": 5,
"title": "Family favourite",
"text": "Always the best beans, never buy anything else.",
"date": "2026-05-18"
}
],
"scrapedAt": "2026-06-02T14:30:00Z"
}

Core Fields

FieldTypeDescription
namestringFull product name
brandstringBrand name
productIdstringMorrisons product identifier
unitSizestringPack or size description (e.g. "4 x 415g")
availablebooleanWhether the product is currently in stock
attributesstring[]Product labels such as Vegetarian, Gluten Free, Vegan
categoryPathstring[]Category breadcrumb from department to sub-aisle
imageUrlstringFull-resolution product image URL
productUrlstringCanonical Morrisons product page URL
scrapedAtstringISO timestamp of data extraction

Pricing & Offers

FieldTypeDescription
pricenumberCurrent price in GBP
originalPricenumberPre-offer "was" price, when published
unitPricenumberComparable unit price in GBP
unitPriceMeasurestringUnit basis: "per kg", "per litre", or "per item"
onOfferbooleanWhether the product is currently on a promotion
offerDescriptionstringOffer wording (e.g. "Buy 3 for £10", "Price Match")

Ratings & Provenance

FieldTypeDescription
ratingnumberOverall average star rating
ratingCountnumberTotal number of ratings
querystringThe search keyword that produced this row (null for URL inputs)
sourceUrlstringThe category or product URL that produced this row (null for keyword searches)

Reviews

Populated only when includeReviews is enabled. reviews is an array of objects, each with these fields:

FieldTypeDescription
authorstringReviewer display name
ratingnumberStar rating the reviewer gave (1-5)
titlestringReview headline
textstringFull review text
datestringDate the review was posted

Tips for Best Results

  • Start small — set maxResultsPerInput to 20-50 on your first run to confirm the data matches your needs, then scale up.
  • Cap reviews on best-sellers — popular Morrisons products can have hundreds of reviews. Keep maxReviewsPerProduct at 20 (the default) for fast, predictable runs; only set it to 0 when you genuinely need every review.
  • Leave reviews off for pure price tracking — when you only need prices, unit prices, and offers, keep includeReviews off for the fastest, cheapest runs. The summary rating and ratingCount are always included anyway.
  • Compare on unit price, not shelf price — use unitPrice with unitPriceMeasure to compare value across different pack sizes instead of the headline price.
  • Use category URLs for whole-aisle audits — paste a category page URL to sweep up an entire aisle (up to 300 products) in one go, rather than guessing keywords.
  • Set maxResultsPerInput to 0 to go deep — when you want the complete listing for a term or category, set it to 0 and the run collects everything Morrisons returns, up to its 300-product ceiling.
  • Watch onOffer and originalPrice together — multibuy deals like "Buy 3 for £10" set onOffer and offerDescription but may have no single "was" price, so originalPrice can be null on those lines.

Pricing

From $2.50 per 1,000 products + $0.30 per 1,000 reviews. You're charged per product returned, plus per review collected when reviews are enabled — see the Pricing tab. No compute or time-based charges, just a small fixed per-run start fee. When reviews are turned off, you only ever pay the product rate.

Discount tiers apply automatically through Apify's loyalty tiers — Bronze, Silver, and Gold subscribers pay progressively less on both events:

Per 1,000No discountBronzeSilverGold
Products$3.00$2.80$2.65$2.50
Reviews$0.36$0.34$0.32$0.30

Example total cost (at the Gold rate)

What you runProductsReviews collectedTotal
1,000 products, no reviews1,0000$2.50
1,000 products × 20 reviews each1,00020,000$8.50
100 best-sellers × 200 reviews each10020,000$6.25

Reviews are returned embedded inside each product row, and you only pay for the reviews actually collected. Cap maxReviewsPerProduct on best-sellers — or leave includeReviews off entirely — to keep both runs and costs predictable.

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

This actor is designed for legitimate price intelligence, market research, and product catalog use. You are responsible for complying with applicable laws and Morrisons' Terms of Service. Collect only publicly available product information, do not use the data for spam or any illegal purpose, and handle any personal data in customer reviews responsibly and in line with privacy regulations.