Breuninger Scraper — German Luxury Department Store Prices avatar

Breuninger Scraper — German Luxury Department Store Prices

Pricing

from $5.00 / 1,000 result scrapeds

Go to Apify Store
Breuninger Scraper — German Luxury Department Store Prices

Breuninger Scraper — German Luxury Department Store Prices

Scrape product data from breuninger.com, Germany's #1 upscale multi-brand department store. Extract names, brands, prices, stock status and images from Breuninger's fashion, beauty and home catalogue via a simple search query, no login required.

Pricing

from $5.00 / 1,000 result scrapeds

Rating

0.0

(0)

Developer

Studio Amba

Studio Amba

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

1

Monthly active users

a month ago

Last modified

Categories

Share

Breuninger Scraper

Pull product data from breuninger.com, Germany's #1 upscale multi-brand department store. This scraper reads Breuninger's own search results and product pages directly, so it returns clean, structured data -- brand, price, stock, colour, category, images -- without a browser and without touching any third-party aggregator.

How to scrape Breuninger data

Give the actor a German search term and it walks Breuninger's own search-results pages, collects the matching products, then opens each product's page to pull the authoritative price, stock status and category data. There's nothing else to configure -- no category URLs to hunt down, no cookies, no login.

Under the hood, breuninger.com is a server-rendered storefront with no public API -- each search-results page embeds product tiles directly in the HTML, and each product page carries a full schema.org/Product structured-data block with the exact price, currency and availability the site itself uses for Google. This actor reads that structured data instead of scraping visual markup, which makes it far less likely to break when Breuninger redesigns its page templates.

Breuninger's WAF (myracloud) does not challenge plain requests -- no residential proxy, no browser rendering, no warm-up session needed. If you don't provide any input, it defaults to searching for "kleid" (German for "dress") as a demo.

A note on colour variants

Different colours of the same style show up as separate product tiles on Breuninger's own search page, each with its own product URL and its own variant id. This actor treats each colour as its own result row (productId is unique per colour, sku is the shared style number), matching what you'd see browsing the site yourself.

A note on referencePrice

Some listings show a second, smaller price labelled "Bestpreis" next to the current price. That's the EU Omnibus-directive reference price -- the lowest price Breuninger showed in the last 30 days, a legal disclosure requirement, not a "was more expensive" struck-through price. It can be lower than the current price. This actor keeps it in a separate referencePrice field rather than mislabeling it as originalPrice.

Input

FieldTypeDescription
searchQuerystringSearch term, in German (e.g. "kleid", "jacke", "tasche")
startUrlsarrayBreuninger URLs to scrape directly: product pages, search pages or category pages. See below
maxResultsintegerCap on number of products returned (default: 60, max: 500)
fetchDetailsbooleanAdd a details object with material, care, sizes and more. Off by default. Costs no extra requests
proxyConfigurationobjectApify proxy settings. Breuninger's WAF does not challenge plain HTTP, so the default automatic Apify proxy is sufficient

Scraping from a URL

startUrls takes three kinds of Breuninger URL and works out which is which:

  • A product page, e.g. https://www.breuninger.com/de/marken/polo-ralph-lauren/hemdblusenkleid-aus-cord/1003214230/p/. Add ?variant=<id> to get one specific colour; without it you get the colour Breuninger shows by default.
  • A category page, e.g. https://www.breuninger.com/de/damen/bekleidung/kleider/. Paginated automatically, and any filters you left in the URL are kept.
  • A search page, e.g. https://www.breuninger.com/de/search/?q=kleid.

You can mix all three in one run. maxResults still caps the total. If you pass startUrls and leave searchQuery empty, only your URLs are scraped -- the default search is not added on top.

Product detail mode

Turn on fetchDetails to get a details object on every product with the material, the care instructions, the feature bullets, every size with its own stock state, the other colours of the style, and all product images.

On this actor detail mode is free: the attributes sit in the product page's own data, and this actor already fetches that page for every result. Turning it on does not add requests, run time or cost.

What you get back

FieldTypeExample
namestring"LUISA CERANO Kleid"
brandstring"LUISA CERANO"
pricenumber399.95
referencePricenumber | null329.99 (EU reference price, see note above -- often absent)
currencystring"EUR"
skustring"1003159803" (style number, shared across colours)
productIdstring"1003159803-a8f0821c6462469da0b260f1ff300050" (unique per colour)
inStockboolean | nulltrue (null only if the source gives no availability signal)
colorstring | null"BRAUN / ORANGE / SCHWARZ"
urlstringFull product page URL for this exact colour
imageUrlstring | nullPrimary product image
categorystring | null"Kleider von LUISA CERANO"
categoriesarray | nullFull breadcrumb path, e.g. ["Damen Bekleidung", "Damen Kleider", "Kleider von LUISA CERANO"]
descriptionstring | nullPlain-text product description
detailsobject | nullDetail attributes, present only when fetchDetails is on (see below)
scrapedAtstringISO timestamp
searchQuerystringThe search term used to find this product (input echo)

details (when fetchDetails is on)

FieldTypeExample
materialstring | null"100% Baumwolle"
careInstructionsarray | null["30°C Buntwäsche", "Mäßig heiß bügeln"]
featuresarray | null["Lange Ärmel", "Weiter Schnitt", "Perlmuttknöpfe"]
specialAttributesobject | null{"Material:": ["Cord"]}
sizesarray | null[{"name": "36", "inStock": true}, {"name": "38", "inStock": false}]
availableSizesarray | null["30", "32", "34"] -- just the sizes in stock
colorOptionsarray | null["DUNKELBRAUN / ECRU", "COGNAC", "DUNKELBLAU"]
imagesarray | nullEvery image for this colour, not just the primary one
webcodestring | null"3214230" -- the code Breuninger's own staff search by
articleNumberstring | nullInternal article id for this colour
isPartnerArticleboolean | nulltrue when a marketplace partner sells it, not Breuninger
stockMessagestring | null"nur noch 1x verfügbar"
isFromPriceboolean | nulltrue when price is an "ab" price because sizes are priced differently

A note on prices

price is the price of the exact colour the URL points at, read from the product page's own data.

That matters on Breuninger because some styles are also offered by marketplace partners at their own, usually higher, price, and the page's structured data lists every one of those offers together. Picking the wrong one returns another seller's price for a different size. This actor keys the price to the article you actually asked for.

Where sizes of the same item are priced differently, Breuninger shows an "ab" (from) price, and that is what you get. details.isFromPrice tells you when that is the case.

Sample output

{
"name": "MRS & HUGS Kleid mit Volants",
"brand": "MRS & HUGS",
"price": 139.99,
"referencePrice": null,
"currency": "EUR",
"sku": "1003138094",
"productId": "1003138094-84f4bbf2f8904d7abd895159adb91052",
"inStock": true,
"color": "DUNKELBRAUN / WEISS",
"url": "https://www.breuninger.com/de/marken/mrs-hugs/kleid-mit-volants/1003138094/p/?variant=84f4bbf2f8904d7abd895159adb91052",
"imageUrl": "https://cms.brnstc.de/product_images/1122x1536_retina/cpne/media/images/product/26/5/100313809415000_0_1780012800000.jpg",
"category": "Kleider von MRS & HUGS",
"categories": ["Damen Bekleidung", "Damen Kleider", "Kleider von MRS & HUGS"],
"description": "MRS & HUGS Kleid mit Volants für Damen in dunkelbraun / weiss",
"details": null,
"scrapedAt": "2026-09-12T14:14:49.586Z",
"searchQuery": "kleid"
}

Use cases

  • Price monitoring -- track Breuninger's prices over time on the brands and categories you sell against or compete with.
  • Assortment research -- Breuninger carries hundreds of premium and luxury brands across fashion, beauty and home; see exactly what it stocks and at what price points.
  • Stock and availability tracking -- inStock gives a live read on which items are still sellable, sourced straight from the product page's own structured data.
  • Colour-variant coverage -- since colours are separate rows, you can see exactly which colourways of a style Breuninger currently lists.
  • Market comparison -- as Germany's leading upscale multi-brand department store, Breuninger is a useful benchmark against other European luxury and department-store retailers.

Coverage

v1 covers Breuninger's German storefront (www.breuninger.com/de/, EUR pricing) via keyword search. Breuninger runs a single national storefront -- there is no separate Austrian or Swiss site.

Performance and cost

The scraper fetches one search-results page per ~90 products plus one product-detail page per result, so a 60-product run typically completes in well under a minute. This actor charges $0.01 per run (start fee) plus $0.005 per result -- a 100-product run costs about $0.51. Your run's usage cost only settles after the run reports SUCCEEDED -- checking cost mid-run will undercount it.

Limitations

  • Keyword search only, matching Breuninger's own on-site search. It does not accept direct category or product URLs.
  • Product names are Breuninger's own listing titles, which are typically brand + generic garment type (e.g. "Kleid" = dress) rather than descriptive marketing copy -- use color and category alongside name to tell similar listings apart.
  • referencePrice is only populated when Breuninger shows a "Bestpreis" line on that listing -- most products don't have one.
  • Ratings/reviews are not included: Breuninger renders them client-side only, with no server-side structured data to read.
  • v1 targets the German storefront (EUR) only.

If you're covering European luxury and department-store retail more broadly, also check out:

Support

Found an issue or need a different search behavior covered? Open an issue on this actor's Apify Store page and we'll take a look.