Morrisons Groceries Scraper - Prices & Nutrition avatar

Morrisons Groceries Scraper - Prices & Nutrition

Pricing

$2.50 / 1,000 products

Go to Apify Store
Morrisons Groceries Scraper - Prices & Nutrition

Morrisons Groceries Scraper - Prices & Nutrition

Scrape Morrisons groceries by category or URL. Get price, was-price, unit price, offers, size, availability, category taxonomy, images, ratings, ingredients, allergens and nutrition. Export to JSON, CSV or Excel.

Pricing

$2.50 / 1,000 products

Rating

0.0

(0)

Developer

VulnV

VulnV

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

Morrisons Groceries Scraper

Extract Morrisons grocery product data at scale - price, was-price, unit price, offers, size, availability, full category taxonomy, images and ratings, plus ingredients, allergens and nutrition from each product page - as clean, structured JSON.

Scrape by category name or by pasting Morrisons URLs.

🚀 How to use

  1. Click Try for free / Start.
  2. Type the categories you want (e.g. Breakfast Cereal, Fresh Fruit) - or paste Morrisons URLs.
  3. Set Max products, and Max sub-categories if you named a broad department.
  4. Run the Actor and download results as JSON, CSV, Excel, HTML or via API.

✨ Features

  • 💷 Full pricing - current price, the was-price on markdowns, and unit price (per kg / litre / each), so you can see the discount, not just the shelf price.
  • 🎟️ Offers - the offer wording Morrisons displays, plus a flag and a count.
  • 📦 Availability and size - stock status and pack size on every record.
  • 🗂️ Category taxonomy - the product's full path (department → aisle → shelf), plus the category it was found under.
  • 🥗 Back-of-pack label data - ingredients, allergens, the nutrition table, kcal per 100 g/ml, storage, dietary information, country of origin and manufacturer.
  • ⚠️ Allergens, properly - Morrisons emphasises allergens inside the ingredient list, so the Actor captures those highlighted terms as well as the printed allergen statement.
  • Ratings - average rating (as a number) and review count.
  • 🌳 Automatic category expansion - name a whole department and the Actor walks its sub-categories for you.

🧭 Input

Provide at least one of categories or urls.

FieldTypeDescription
categoriesarrayCategory names as shown on the site, e.g. Breakfast Cereal. Slugs like breakfast-cereal work too. A broad department is expanded into its sub-categories.
urlsarrayMorrisons category or product URLs.
maxItemsintegerStop after this many products across the run. Default 200.
maxCategoriesintegerHow many sub-categories to walk per named department. Default 25.
includeProductDetailsbooleanOpen each product page for ingredients, allergens and nutrition. One extra request per product. Default true.
onlyUniquebooleanDrop repeats across categories. Default true.

Example input

{
"categories": ["Breakfast Cereal", "Biscuits"],
"maxItems": 500,
"maxCategories": 25,
"includeProductDetails": true
}

A fast price-and-stock sweep across a whole department:

{
"categories": ["Food Cupboard"],
"maxItems": 5000,
"maxCategories": 200,
"includeProductDetails": false
}

📤 Output

One record per product. Abridged example (a marked-down item, with details on):

{
"productId": "112986628",
"name": "Kellogg's Rice Krispies Breakfast Cereal",
"brand": "Kelloggs",
"size": "660g",
"url": "https://groceries.morrisons.com/products/kellogg-s-rice-krispies-breakfast-cereal/112986628",
"currency": "GBP",
"price": 3.85,
"priceText": "£3.85",
"wasPrice": 4.35,
"unitPrice": 5.83,
"unitOfMeasure": "kg",
"unitPriceText": "£5.83/kg",
"onPromotion": true,
"promotionCount": 1,
"promotionText": "Now £3.85, Was £4.35",
"available": true,
"isNew": false,
"category": "Breakfast Cereal",
"categoryPath": "Food Cupboard > Breakfast Cereal > Everyday Family Cereals > Classic Cereal",
"imageUrl": "https://groceries.morrisons.com/images-v3/.../500x500.jpg",
"imageCount": 2,
"averageRating": 4.8,
"reviewCount": 16,
"ingredients": "Rice Flour, Sugar, Barley Malt Extract, Wheat Gluten, Salt, Niacin, Iron, Vitamin B6, Riboflavin, Thiamin, Folic Acid, Vitamin D, Vitamin B12",
"allergens": "Contains Barley, May Contain Cereals Containing Gluten, May Contain Soya, Contains Wheat",
"highlightedAllergens": ["Barley", "Wheat"],
"nutritionText": "Energy: 1649 kJ; Energy: 389 kcal; Fat: 1.2 g; Carbohydrate: 86 g",
"energyKcalPer100": 389,
"storage": "Best before: see top. Store in a cool, dry place.",
"manufacturer": "UK: Kellogg Marketing and Sales Company (UK) Limited, ...",
"nutritionTable": [
{ "name": "Energy", "/100g": "1649 kJ", "/30g": "495 kJ" },
{ "name": "Fat", "/100g": "1.2 g", "/30g": "0.4 g", "%RI*": "1 %" }
],
"scrapedAt": "2026-07-26T18:20:00+00:00"
}

The flat fields are what the dataset table and CSV/Excel exports show; nutritionTable, images and highlightedAllergens are nested for programmatic use.

Dataset views

  • Products - price, offers, availability and taxonomy for every product.
  • Ingredients & nutrition - the label data, when includeProductDetails is on.

💡 Use cases

  • Grocery price monitoring - track prices and markdowns across categories daily.
  • Competitor analysis - compare range and pricing against other supermarkets.
  • Product catalogue enrichment - pull images, sizes, descriptions and nutrition.
  • Food and nutrition research - ingredients, allergens and nutrition at scale.
  • Availability tracking - spot delistings, new lines and out-of-stock items.

📋 Notes and limits

  • Naming a broad department walks its sub-categories. Morrisons serves only the first page of any one category to anonymous visitors, so the Actor covers a department by walking its sub-categories instead, where a single page usually holds everything. Raise maxCategories to widen the sweep.
  • Product URLs return label data but no price. A Morrisons product page publishes the back-of-pack panel but not a machine-readable price, so products reached directly by URL come back with ingredients, allergens and nutrition, and price left empty rather than guessed. Scrape by category to get pricing.
  • Allergens are taken from the printed statement where Morrisons publishes one, and otherwise from the allergens it emphasises inside the ingredient list (highlightedAllergens). Not every product publishes either.
  • Fields Morrisons does not publish for a product come back empty - not every item has ingredients or a nutrition table.
  • includeProductDetails costs one extra request per product. Turn it off for the largest price sweeps; listing data alone still carries price, was-price, unit price, offers, availability, size, taxonomy, image and rating.

💳 Pricing

This Actor is monetized pay-per-event: a flat rate per product returned, and nothing else - no Actor start fee and no platform usage charges. Free-plan users can try it with a capped sample per run. See the Pricing tab for the current rate.

❓ FAQ

Is scraping Morrisons data legal? The Actor collects only publicly available product information published on Morrisons' storefront. It reads no personal data and needs no login. As with any scraping, use the data responsibly and in line with applicable laws and the site's terms.

Is this an official Morrisons product? No. This is an unofficial Actor and is not affiliated with, endorsed by, or sponsored by Morrisons. "Morrisons" is a trademark of its respective owner.

How do I scrape a whole department? Name it (e.g. Food Cupboard) and raise maxCategories - the Actor expands it into sub-categories automatically. Turn includeProductDetails off for the widest sweeps.

Why did I get fewer products than the category says it holds? Morrisons serves one page per category to anonymous visitors. The Actor reports both numbers in the run log ("300 listed, 49 on this page") and covers the rest by walking sub-categories.

How do I test cheaply? Set maxItems to a small number, e.g. 5.

🛠️ Our Other Scrapers

Explore our full suite of scraping tools to power your data needs:

📬 Need help or have a feature request? Contact us at support@vulnv.com or visit our Apify profile.