Morrisons Scraper for Product, Price and Promotion Data

Morrisons Scraper
Solutions

How the work is delivered

Most requests to scrape Morrisons start narrow, and they should. Usually it is a named set of category branches, a competitor basket matched against your own SKUs, or the whole promotional surface. We scope to the question rather than the site, run at a polite rate, respect the paths Morrisons disallows in its robots.txt including /api/, and take only what an ordinary visitor is shown.

Output arrives as CSV, JSON, XLSX or a REST endpoint, at whatever cadence the question needs: daily for price and promotion series, weekly or monthly for range and attribute audits. Column schemas stay stable between runs, changed fields are flagged, and when Morrisons alters its markup we repair the crawler. Nothing is left for your team to maintain.

Fields we extract from Morrisons

A Morrisons scraper is only worth having if the grocery specific fields survive the trip. These are the ones we pull and normalise, one row per line:

  • Identifiers - the numeric product code from the URL, which matches the sku in the schema.org Product block, plus product name, brand, sub brand and the category path the item was found under.
  • Shelf price and unit price - Morrisons prints the comparison price with an Ordinarily prefix and a compact suffix such as /kg or /litre. The basis set is unusually wide: per kilo, per litre, per item, per 100g, per 100ml, per dozen, per wash, per dose, and the awkward ones - per kilo drained, per prepared kilo and per litre excluding bottle deposit. We keep the number and the basis in separate columns.
  • Promotion - the offer name exactly as written on the tile, such as Half Price, Save 1/3, a Buy 2 for multibuy, or the Unbeatable Price label, plus the offer id and its /offers/ URL so every line on the same deal can be grouped.
  • More Card Price - the loyalty price where it is published, its offer id, and the terms line More Card Exclusive Price. Registered Customers Only.
  • Reference price - the was price and which basis it uses. Morrisons labels three: Lowest price from 30 days before discount, Price before discount on fresh, and Lowest price since the introduction of the product on new lines. Treating them as one column corrupts a discount calculation.
  • Pack and weight - the size string, unit type, and for counter goods the Weighed item flag with its stated weight range and typical weight.
  • Shelf life - the LIFE badge, for example LIFE 1w+, and its expansion, 1 week typical product life including delivery day.
  • Availability - in stock, Out of stock, or the delisting message shown when a line has gone, captured per run with a timestamp.

Fields we extract from Morrisons
Grocery attributes beyond the price

Grocery attributes beyond the price

Product records carry a long tail of regulated and descriptive fields, and Morrisons names them plainly in its own markup. The nutrition block is titled Nutritional Data and carries values per 100g or per 100ml alongside per serving. Allergens is a field of its own, separate from the ingredients text, and the ingredients heading itself carries the warning that ingredients and allergens may be subject to change. Dietary flags show up twice: as tile badges reading Vegetarian, Vegan or Gluten Free, and again in a Dietary Information field.

Provenance is where Morrisons goes further than most grocers. Instead of a single origin field, the schema carries Country Of Origin plus separate slots for Country Of Birth, Country Of Rearing, Country Of Slaughter, Country Of Farming, Country Of Bottling, Country Of Packaging and Country Of Last Processing, with Fishing Area, Method Of Capture and Breed on meat and seafood. For a sourcing or compliance team that is the difference between knowing a joint is British and knowing where the animal was born, reared and slaughtered.

Market Street counter lines live in the same catalogue under their own branches, including Fresh From The Butcher, Fresh From The Fishmonger and Fresh From The Deli Counter. Many of them are weighed items, so the figure you capture is a typical price against a stated weight range rather than a fixed one, and it has to be stored that way to stay honest.

How groceries.morrisons.com is put together

Morrisons trades online at groceries.morrisons.com, a separate application from the corporate site at www.morrisons.com. Product pages follow the pattern /products/{slug}/{id}. That trailing number is the stable identifier: on the product page it is repeated as the sku value inside the schema.org Product block in the source. Marketing renames slugs; the number survives, so it is the key worth joining on.

Category pages sit under /categories/ with four to six path segments and a numeric category id, for example /categories/food-cupboard/tea-hot-drinks/tea/fruit-herbal-tea/fruit-tea/171812. Every category path exists a second time under /promotions/, listing only the lines in that branch currently on deal. Individual deals live at /offers/{slug}/{id}. All of it is published through the XML sitemap index at /sitemaps/sitemap_index.xml, which splits into products, categories, collections, promotions and recipes.

Search runs at /search?q= and pulls further results through a Show more control rather than numbered pages. The sort menu is telling: alongside total price it offers Price per: Low to High and Life: Long to short. Morrisons treats unit price and remaining shelf life as first class sort keys, a fair guide to how the catalogue is meant to be read.

One deployment detail matters first. The storefront sits behind Amazon CloudFront with a geographic restriction, so groceries.morrisons.com answers a UK visitor and returns a 403 to clients in regions the distribution does not serve. www.morrisons.com does not. In practice the job has to run from where the storefront is served.

Get a Quote
dev_w
25

Developers

customers
500+

Customers worldwide

pages
1 500 000 000+

Pages extracted

stime
15000+

Hours saved for our clients

Plans

Airplane

€199 / one-time

setup fee - included

Data limits100,000
Frequencyone-time
Run timeup to 5 days
Data storing7 days

Helicopter

€169 / mo

setup fee €499

Data limits250,000
Frequencymonthly
Run timeup to 5 days
Data storing14 days

Glasses

€229 / mo

setup fee €499

Data limits1,000,000
Frequencyweekly
Run timeup to 5 days
Data storing30 days

DNA

€549 / mo

setup fee €799

Data limits3,000,000
Frequency3 times daily
Run timesame day
Data storing90 days

What Morrisons scraping actually answers

Grocery pricing only becomes comparable once you divide by the pack. Two own label pasta lines can sit within pennies of each other on the shelf and be far apart per kilo, and that gap is where range and margin decisions get made. Because Morrisons prints the comparison price on every tile, a Morrisons scraper that preserves the Ordinarily figure and its basis hands you a table you can sort by cost per unit instead of by pack size.

The second question is which price a shopper really pays. Since More Card Prices arrived, a Morrisons price series has two lines rather than one: the shelf price everyone sees and the lower price a registered customer gets. Follow only the first and you overstate what Morrisons charges its regulars. Follow only the second and you understate it. We record both, with the offer id attached, so you can measure how much of the range is sitting behind the card at any point in the cycle.

Third is the promotion clock. Multibuys, price cuts and Unbeatable Price lines rotate on their own schedules, and a weekly crawl will miss short deals outright. Daily capture with the offer id attached lets you reconstruct when a deal opened, how long it ran, and which lines moved together. The same series exposes range gaps: a line that stops appearing in its category branch but stays in the sitemap is behaving differently from one that has been withdrawn.

Related Case Studies

The Entire Iherb Supplements Catalog, Captured End-to-End in 3 Days

The Entire Iherb Supplements Catalog, Captured End-to-End in 3 Days

Scraping supplement products from iHerb.com with full details, including descriptions and packaging variations.

Learn More about The Entire Iherb Supplements Catalog, Captured End-to-End in 3 Days
The Lowest Allegro Prices from 150K Eans Collected

The Lowest Allegro Prices from 150K Eans Collected

Daily scraping of lowest prices for 150K products on Allegro.pl to support marketplace pricing and margin optimization.

Learn More about The Lowest Allegro Prices from 150K Eans Collected
Ralph Lauren Monitoring on Amazon, 8 Markets Scanned Into One Clean Dataset

Ralph Lauren Monitoring on Amazon, 8 Markets Scanned Into One Clean Dataset

Regular monitoring of Ralph Lauren clothing, footwear, and accessories sold across Amazon subdomains: AE, DE, ES, FR, IT, NL, PL, UK.

Learn More about Ralph Lauren Monitoring on Amazon, 8 Markets Scanned Into One Clean Dataset
Our Blog

Reads Our Latest News & Blog

Learn how to use web scraping to solve data problems for your organization

6 E-Commerce Sites Like eBay to Scrape in 2026

6 E-Commerce Sites Like eBay to Scrape in 2026

If you sell online, run a marketplace, or advise e-commerce clients, you already know why eBay matters: it’s one of the few places where big retailers compete side by side with thousands of small merchants and private sellers.

Top 8 E-commerce Websites to Scrape in 2026 (From Amazon to 1688)

Top 8 E-commerce Websites to Scrape in 2026 (From Amazon to 1688)

E-commerce teams do not just need “some” competitor data anymore. They need a continuous stream of real prices, discounts, stock levels, reviews, and seller behavior from the platforms that actually shape their markets.

How to Scrape Amazon Data: Benefits, Challenges & Best Practices

How to Scrape Amazon Data: Benefits, Challenges & Best Practices

Amazon provides valuable information gathered in one place: products, reviews, ratings, exclusive offers, news, etc. So scraping data from Amazon will help solve the problems of the time-consuming process of extracting data from e-commerce.

scrapeit logo

Working with ScrapeIt

ScrapeIt is a managed web scraping agency. We build the crawler, run it on your schedule, monitor it, and fix it when the site moves. What you receive is data on a timetable, not a repository to look after.

We are independent of Morrisons and claim no partnership or affiliation with the company. We gather publicly visible information only, and where something cannot be collected we say so plainly rather than promising a workaround.

FAQ

Does Morrisons have a public API for product and price data?

Not a public one. Morrisons publishes no developer portal and no documented product API, and the robots.txt at groceries.morrisons.com explicitly disallows /api/ as an internal path. Two things are sometimes mistaken for an API and are different in kind. Morrisons runs an affiliate programme through performance networks, which pays commission on referral links and tags URLs with affiliate parameters; it does not hand over a product feed. Separately there is a supplier portal at supplier.morrisons.com for trading partners, which is access controlled and not open to buyers or analysts. If you need Morrisons data as a structured feed, it has to be assembled from the public storefront.

Can you get More Card prices, or only the shelf price?

Both, with a caveat worth understanding. A logged out visitor browsing a category does not see the More Card price on the product tile. It is published elsewhere: the deal itself lives under /offers/ with a slug ending in more-card-price and an id carrying a BUL- prefix, and that page shows the member price together with the terms More Card Exclusive Price. Registered Customers Only. We read the shelf price where the item is listed and reconcile the member price from the offer surface, so each row carries both figures and the offer id that ties them together.

Do Morrisons prices and availability change by postcode?

Yes, and it shapes how a job is scoped. Morrisons serves an empty category with the message that there are no products in that category for your location, and warns in the trolley that prices and promotions are different for a different location. Live availability and delivery slots sit behind login altogether. We fix the delivery location for a run and stamp it onto every row, so a series stays comparable with itself over time instead of quietly mixing locations. If you need several regions, we treat each as its own series.

How often should Morrisons price data be refreshed?

It depends on the field. Price and promotion move fastest: multibuys and price cuts rotate weekly or quicker, and the Unbeatable Prices commitment Morrisons announced on 24 August 2026 covers a set of weekly essentials priced against other major grocers, so those lines are reviewed on their own rhythm. Daily is the normal cadence for a price series. Nutrition, ingredients, allergens and origin change rarely, so a weekly or monthly attribute pass is enough. Range turns over seasonally, heavily around Christmas and summer, and listings and delistings are caught best by diffing the product sitemap each day.

How do you handle products sold by weight at the counters?

Morrisons flags them as a Weighed item and states the price as a typical figure against a weight range, because the final charge depends on the piece that gets picked. We keep the flag, the range and the typical price as separate fields rather than flattening them into a single number that would be wrong for most orders. This matters most on Market Street lines, where comparing a counter cut against a pre-packed equivalent only works per kilo, never per pack.

How does it Work?

Step 1 - Make a Request

You share your needs, expectations, and desired timeframe. We’ll suggest the best solution based on your request and budget.

Step 2 - Configuring Custom Web Crawlers

Our specialists configure the crawlers and extract a sample dataset for your review before proceeding with the full-scale extraction.

Step 3 - Collect and Deliver

Once you approve the sample, we launch the project and start full data collection. We gather, filter, and structure the data for easy use, delivering it on time in your preferred format.

Step 4 - Maintain and Support

Our team manages ongoing processes, monitors website changes, and supports all data extraction cycles. We can also help integrate data into your systems or create dashboards to simplify analysis.

Request a Quote

Tell us more about you and your project information.
Which sites, which fields, how often. A couple of lines is enough.

We reply within 1 business day. No obligation.

scrapiet

Scrapeit Sp. z o.o.
10/208 Legionowa str., 15-099, Bialystok, Poland
NIP: 5423457175
REGON: 523384582