Rossmann Scraper for Product, Price and Grundpreis Data

Rossmann Scraper
Solutions

How the work is delivered

Scope is a list of categories or a list of GTINs, a schedule, and a delivery target. We walk the /c/ category tree and the published sitemaps, page listings with only the parameters robots.txt allows, and resolve every item back to its /p/ GTIN so that affiliate and tracking parameters never create duplicate rows. Output is CSV, JSON, XLSX or an API endpoint, on the cadence you set: daily for pricing and availability, weekly or monthly for assortment. Markup changes are our problem rather than yours. When the storefront moves, we repair the extractor and the columns stay where they were, so the file you open on Monday has the same shape as last Monday's.

Fields a Rossmann scrape returns

Every row starts with the identifier. A product URL on rossmann.de is a long descriptive slug followed by /p/ and a thirteen-digit code, and that code is a GTIN. Archived URLs show babydream articles under codes beginning 4305615 and ISANA articles under codes beginning 4068134, which is how own-brand items cluster on the company's own GS1 prefix. The code in the path is the stable join key. The slug in front of it is not, because it carries the category name and moves when merchandising moves.

A standard Rossmann data extract carries:

  • Preis (selling price), parsed out of German number format, where the comma is the decimal separator and the currency symbol trails the figure.
  • Grundpreis (base price per unit), kept as three columns - numeric value, reference amount and unit - so per 100 ml, per litre, per 100 g, per kilogram and per-piece bases stay comparable instead of collapsing into one string.
  • Inhalt (pack size or content), normalised to a number and a unit, since the Grundpreis can only be checked against it.
  • Marke (brand), with a flag for whether that brand is a Rossmann own brand.
  • Verfügbarkeit (availability) as the shop states it, with the raw label kept beside the boolean.
  • GTIN taken from the /p/ path, plus any internal article number the page prints.
  • Category path as walked, together with the /c/ category code, for example olcat1_1 for Make-up and olcat1_4 for Lebensmittel.
  • Bewertungen (customer reviews): rating value and review count where an article carries them.
  • Inhaltsstoffe (ingredients) captured verbatim as text where the page prints them, with nothing added and nothing interpreted.
  • Any struck-through reference price shown next to the selling price, kept in its own column rather than folded into Preis.
  • Image URLs, canonical URL and the timestamp of the observation.

Collection covers public product and pricing data only. No customer data is touched.

Fields a Rossmann scrape returns
What Rossmann scraping has to solve: own brands

What Rossmann scraping has to solve: own brands

Own brands are the second reason this is not a routine retail scrape. The company site at unternehmen.rossmann.de, read on 4 September 2026, stated a portfolio of 27 Marken (brands) and over 6.000 Produkte (products), and named ISANA, Alterra, domol, babydream, facelle, sunozon, enerBiO and altapharma among them. Those articles are sold nowhere else, and their GTINs are issued under Rossmann's own prefix, so no shared product code exists to join on. A matching pipeline keyed on EAN will line up the Garnier and Pantene rows and drop every own-brand row on the floor - which is precisely the part of the catalogue a competitor most wants to read.

Own-brand rows have to be matched on attributes instead: Marke, the normalised Inhalt, the product form, the category path, and the Grundpreis unit basis. That yields like against like, a 300 ml own-brand item set against a 300 ml branded one at the same base unit, rather than a code join that fails silently. We build the normalisation into the extract, so the columns arrive ready to match instead of arriving as free text. The shop also publishes a brand index at /de/Marken/c/brands, which gives the crawl a clean entry point for separating own brands from third-party brands.

Rossmann is a drugstore and not a pharmacy, and one of the listed own brands is named altapharma. We record the fields a page prints and nothing else. We do not describe, classify or infer what any article is for.

Rossmann in data terms

Rossmann is a German Drogeriemarkt, a drugstore chain, running a large store estate in Germany and further European markets alongside an online shop at rossmann.de. The shop carries cosmetics, hair and body care, household and cleaning goods, baby articles, food and drink, and seasonal lines that arrive and disappear on a calendar.

The storefront is a JavaScript application. A plain HTTP request to rossmann.de on 4 September 2026 returned an HTML document titled Client Challenge that asks for JavaScript and loads its assets from a path beginning with /_fs-ch-. Wayback Machine captures of product URLs from 21 April 2025 and 10 November 2025 contain that same challenge document rather than product markup, so the archive is no shortcut either. Any Rossmann scraper has to render pages the way a browser does and run at a pace the site can absorb.

robots.txt, read on 4 September 2026, sets out the crawlable shape. For the default user agent it disallows /de/cart, /de/checkout, /de/my-account, /de/search/*, the terms and privacy paths, and every URL carrying a query string, with narrow exceptions for the listing parameters q=:relevance:, page, pageSize and pageIndex. The same file names ClaudeBot and Claude-Web and disallows them from the whole site. Two sitemaps are published: a shop sitemap index, and a separate sitemap for the store directory under /de/filialen/. Store pages form their own crawlable tree, separate from the shop catalogue. Whether per-store stock is exposed to an anonymous client is something we confirm in scoping rather than assume.

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

Why the Grundpreis is the point

The commercial reason to scrape Rossmann is comparability. Drugstore goods sell in many pack sizes, and the shelf figure on its own settles very little: a 200 ml bottle at one price and a 400 ml bottle at another are not two points on the same axis. The Grundpreis is the axis. German price indication rules require a base price per unit next to the selling price, so Rossmann publishes, for free, the single number that puts a 200 ml pack and a 400 ml pack on comparable footing - and every other German retailer publishes it for the same reason. A Rossmann price feed that carries Preis but not Grundpreis cannot answer the question buyers are actually asking.

Around that sits the ordinary work. Teams track Rossmann prices over time on a fixed basket, watch which lines move onto the campaign pages, measure assortment overlap against dm, Müller and the grocery chains, and feed a repricing or category review with numbers rather than screenshots. Brand owners use it the other way round, to see how their own articles are listed, priced and stocked, and what the own-brand item sitting beside them on the same category page costs per 100 ml.

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

About ScrapeIt

ScrapeIt is a managed web scraping agency. We are not a library and not a self-serve tool: we build the crawler, run it on your schedule, monitor it and repair it when a site changes. You receive data, not code to maintain. Work is scoped per project and a sample is delivered before sign-off, so you can check the Grundpreis parsing and the own-brand flags against the live pages yourself. We have no affiliation with Rossmann.

FAQ

Does Rossmann have a public API for product data?

No public product API is documented for the rossmann.de shop. Rossmann does run an affiliate programme through an affiliate network, and publishers accepted into it receive a product list under that programme's own terms, but that is a commercial partner channel with its own conditions rather than an open developer API, and we are not an intermediary for it. For anyone outside that channel, the practical route to Rossmann data is a crawl of the public storefront. That is what we build and run.

Can you scrape the Grundpreis and not just the price?

Yes, and we treat it as a primary field rather than a nice-to-have. Grundpreis arrives as three columns - value, reference amount and unit - so a row on a per 100 ml basis and a row on a per litre basis can be compared without re-parsing strings downstream. Inhalt (pack size) is normalised to number and unit alongside it, which lets you check the Grundpreis against the pack and flag pages where the two disagree.

How do you handle Rossmann own brands like ISANA and domol?

Own-brand articles carry GTINs issued under Rossmann's own prefix, so they have no matching code at any other retailer. We flag each row as own brand or third-party brand, and we normalise the attributes a code join cannot replace: Marke, Inhalt as number and unit, category path, and the Grundpreis unit basis. Your matching pipeline then has something to work with instead of a null EAN join.

What does a plain HTTP client get from rossmann.de?

A challenge document. On 4 September 2026 a request to rossmann.de returned HTML titled Client Challenge that requires JavaScript and loads its assets from a /_fs-ch- path, and Wayback Machine captures of product URLs from April and November 2025 hold the same document. So curl plus a regular expression will not produce Rossmann price data. We render pages the way a browser does, keep request rates modest, and honour robots.txt, which for the default user agent disallows the cart, checkout, account and search paths and every URL with a query string apart from the listing parameters.

How often can you refresh Rossmann prices?

Daily is the usual cadence for price and availability, and it fits how the shop behaves: campaign surfaces such as the Angebote, Rabatt and Ausverkauf paths rotate, online-exclusive lines sit on their own campaign path, and seasonal ranges come and go - archived URLs show separate Adventskalender articles for the 2024 and the 2025 season. Assortment runs that walk the whole category tree usually sit on a weekly or monthly schedule. We set the frequency per category rather than running everything at one rate.

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