Douglas Beauty Products, Prices & Reviews Scraper
Pricing
from $1.50 / 1,000 product results
Douglas Beauty Products, Prices & Reviews Scraper
Scrape douglas.de beauty and perfumery products. Returns name, brand, price with original/was price and discount, unit price, size variants, availability, gallery, ratings, reviews, ingredients and spec table. Keyword, category, brand browse plus URL input.
Pricing
from $1.50 / 1,000 product results
Rating
0.0
(0)
Developer
Abot API
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
3
Monthly active users
3 days ago
Last modified
Categories
Share
Douglas DE Beauty & Perfumery Scraper
Scrape products from douglas.de, Douglas, Europe's leading beauty, perfumery and cosmetics retailer (German flagship, EUR pricing). The actor returns rich per-product records: identity, full price with the original/was price and discount, unit price, size variants, availability, image gallery, ratings, reviews, and product detail (ingredients, how-to-use, spec table).
What you get (per product)
| Field | Example |
|---|---|
title | TOM FORD Soleil Neige Eau de Parfum |
brand | TOM FORD |
id / sku / ean | 5011956034 / 1269078 / 0888066177962 |
url | https://www.douglas.de/de/p/5011956034?variant=1269078 |
price | {current: 76.99, original: 115.0, currency: "EUR", discountPercent: 33.0} |
unitPrice | {amount: 769.9, unit: "per 1 l"} |
isOnSpecial / wasPrice / savingsAmount | true / 115.0 / 38.01 |
availability | {code: "AVAILABLE", inStock: true} |
variants | [{sku, label: "30 ml", price, unitPrice}, ...] |
images | [{url, alt}, ...] |
rating / reviewCount | 4.8 / 86 |
ratingBreakdown | [{rating: 5, count: 77}, {rating: 4, count: 6}, ...] |
reviews | [{id, author, date, rating, title, body}, ...] |
ingredients | ALCOHOL, PARFUM / FRAGRANCE, AQUA / WATER / EAU, ... |
howToUse | Anwendungshinweise (how to use) |
specifications | {Duftrichtung: "frisch, blumig", Kopfnote: "Jasmin", ...} |
breadcrumbs | [{name: "Parfum", url}, ...] |
Full-price (non-discounted) products return isOnSpecial: false, wasPrice: null so they
are an explicit negative, never a missing key.
Input modes
Search mode (default)
Keyword search and/or category and brand browse.
{"mode": "search","queries": ["vitamin c serum"],"category": "01","brand": "b0690","gender": "FEMALE","sortBy": "rating"}
queries: free-text keywords, e.g."parfum","dior lipstift".category: a Douglas category code (01Parfum,03Make-up,1205Gesichtspflege) or a full category URL likehttps://www.douglas.de/de/c/parfum/01.brand: a brand display name (Dior) or a brand URL likehttps://www.douglas.de/de/b/dior/b0690for an exact filter. A bare brand code (b0690) cannot be resolved to a name and is skipped with a warning rather than risk matching the wrong brand — pass the name or URL instead.gender: any / women / men / unisex. Search mode only, it is sent as a store facet.sortBy: best match, price ascending, price descending, newest first, top rated. Search mode only, a pasted URL is walked in the store's own default order.promoFlags: extra store promotion facets. Search mode only.
URL mode
Paste one or more Douglas URLs. Product URLs return a single rich record; category, brand and search URLs return products up to the configured item and page limits.
{"mode": "url","urls": ["https://www.douglas.de/de/c/parfum/01"],"priceMax": 80,"specialsOnly": true,"fetchDetails": true,"fetchReviews": true}
Filters (both modes)
priceMin, priceMax and specialsOnly are not search-mode-only. They are applied to
every product the scraper collects, so a pasted category, brand or search URL is filtered
exactly like a keyword search.
priceMin/priceMax: EUR price band. In search mode the band is also sent to the store as a price facet; in URL mode it narrows the products found behind the pasted URL.specialsOnly: keep only products that are currently reduced (see Specials below), in either mode.
The one exception is a pasted product URL: a single product you asked for by URL is always returned, whatever its price and whether or not it is reduced.
Specials and the was/original price
Douglas does not run a dedicated sale or outlet category. A product is on special when its recommended retail price (UVP, "Empfohlener Verkaufspreis") is crossed out and a lower current price is shown. The actor captures both prices on every product:
price.original(the crossed-out UVP) andprice.discountPercentcome straight from the listing data.isOnSpecial,wasPrice,savingsAmount,savingsPercentare derived from those two prices.- Turn on
specialsOnlyto keep only the reduced products. A real discounted product looks like:price.current: 76.99,price.original: 115.0,isOnSpecial: true,wasPrice: 115.0,savingsAmount: 38.01,savingsPercent: 33.0.
Reviews
Turn on fetchReviews to pull the overall rating, the star-rating histogram, the EAN/GTIN,
and per-review text (author, date, rating, title, body) for each product. maxReviewsPerProduct
caps how many reviews come back (default 20). Reviews come from the retailer's own first-party
ratings endpoint, so no third-party host appears in the output. Products with no reviews
return an empty reviews list while the rating summary fields stay null.
Product detail
Turn on fetchDetails to open each product page and pull the ingredient list (INCI), the
how-to-use text and the full spec table (scent notes, product type, article number, etc.),
flattened into specifications. Listing-only runs skip this and are faster and cheaper.
Detail and review enrichment open the individual product page, which is a separate, harder
route than listing data — on a given run it may return the base product without
enrichment; the listing fields themselves (price, variants, gallery, rating) are unaffected.
Limits and cost
maxItems: hard cap on the total number of products returned (default 100).maxPages: max pages to walk per query/category/URL (default 0, unlimited). One page holds 48 products.- A listing-only run returns fully-attributed products (price, variants, gallery, rating, description). Detail and review enrichment are optional, opt-in toggles.
Proxy
A Germany exit is required, and the default is already set up for it. Changing the preset can make a run return no results.
Export to your apps
Optionally send a condensed summary of each result to Notion, Linear, Airtable or Apify via
MCP connectors. Authorize a connector under Apify Settings, Integrations, then select it in
mcpConnectors. The full record always stays in the dataset.