druni.es - Prices, Ofertas Flash, Variants & Reviews
Pricing
from $1.00 / 1,000 product results
druni.es - Prices, Ofertas Flash, Variants & Reviews
Scrape Druni beauty, cosmetics and perfume products. Search by keyword, category, Ofertas Flash deals or paste product and listing URLs. Extract prices, original prices, discounts, images, product details, and format or colour variants with individual prices and availability.
Pricing
from $1.00 / 1,000 product results
Rating
0.0
(0)
Developer
Abot API
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Druni Product Scraper
Pull product data from Druni (druni.es), a Spanish beauty and perfumery retailer. Search by keyword, a real Druni catalog category, or the site's own Ofertas Flash deals feed, or paste product and listing links directly. Every record includes the current price, the strike-through original price with computed discount when a product is marked down, and format/color variants with their own price and availability when you ask for full detail.
Why This Scraper?
- Was-price and discount, structured, not scraped from a badge. When a product is marked down, both prices are captured plus the computed discount amount and percentage.
- Ofertas Flash, first class. A
specialsOnlytoggle narrows any search or category listing to Druni's own live discount feed -- the site's real, queryable markdown signal, not a guessed category. - Format and color variants. Perfumes, creams and similar products return every size (e.g. 20ML/30ML/50ML/100ML) or shade as its own variant, each with its own price and availability, plus a computed unit price per 100 ml/g where the pack size is unambiguous.
- Reviews straight from the product page. Overall rating, review count, and the product's own most recent reviews (author, date, rating, body) -- not a third-party review vendor.
- Two ways in. Keyword or category search with real site filters (brand, price range, Ofertas Flash, sort), or paste any product/listing link and continue pagination automatically.
- Optional export to your apps. Send results into Notion, Linear, Airtable, or any Apify MCP connector alongside the dataset.
Data You Get
| Field | Example value |
|---|---|
| productId / sku | 123456 |
| name | Sample Eau de Parfum |
| brand | SAMPLE BRAND |
| category / categoryPath | Fragancias Femeninas, ["Druni", "Perfumes", "Perfumes Mujer", "Fragancias Femeninas"] |
| url | https://www.druni.es/sample-eau-de-parfum-sample-brand |
| price / currency | 39.95, EUR |
| originalPrice / discountAmount / discountPercent | 59.95, 20.00, 33.4 |
| isOnSpecial | true |
| onlineAvailable | true |
| image / images | ["https://www.druni.es/sample/image.jpg"] |
| description | full product description text |
| variants | [{"sku": "1234568", "name": "Sample Eau de Parfum 50ML", "size": "50ML", "price": 39.95, "currency": "EUR", "onlineAvailable": true, "unitPrice": 79.9, "unitPriceBasis": "100 ml"}] |
| rating / reviewCount | 4.2, 18 |
| reviews.averageRating / reviews.totalReviewCount | 4.2, 18 |
| reviews.items[] | [{"rating": 5, "body": "Sample review text.", "author": "Cliente", "date": "2026-06-05"}] |
Sample shape: values above are illustrative placeholders, not from a live product.
How to Use
1. Keyword search, first page, with reviews (default):
{"mode": "search","searchTerm": "perfume mujer","maxItems": 20}
2. Category browse, filtered to a brand and sorted by price, only Ofertas Flash items:
{"mode": "search","category": "Fragancias Femeninas","brands": ["DOLCE & GABBANA"],"specialsOnly": true,"sortBy": "PRICE_ASC","maxItems": 50,"maxPages": 5}
3. Full product detail (variants + description) and reviews for a pasted product link:
{"mode": "url","urls": ["https://www.druni.es/sample-eau-de-parfum-sample-brand"],"fetchDetails": true,"fetchReviews": true}
4. Paste the Ofertas Flash listing and keep paginating forward:
{"mode": "url","urls": ["https://www.druni.es/ofertas-flash"],"maxItems": 100,"maxPages": 10}
Input Parameters
| Parameter | Type | Description |
|---|---|---|
mode | string | search or url. |
searchTerm | string | Keyword (search mode only). |
category | string | A real Druni catalog category, e.g. Fragancias Femeninas (search mode only). |
specialsOnly | boolean | Keep only products currently in Druni's Ofertas Flash feed (search mode only). |
brands | array | Exact brand names to keep (search mode only). |
minPrice / maxPrice | number | EUR price band to keep (search mode only). |
sortBy | string | RELEVANCE, PRICE_ASC, or PRICE_DESC (search mode only). |
urls | array | Product, category, or Ofertas Flash listing URLs to scrape (url mode only). |
fetchDetails | boolean | Fetch full product detail (breadcrumb category path, description, image gallery, format/color variants). |
fetchReviews | boolean | Fetch the product's own reviews. |
maxReviewsPerProduct | integer | Cap on reviews per product; the product page itself only ever surfaces up to 10. |
maxPages | integer | Cap on result pages per search/category/URL entry; empty = unlimited. |
maxItems | integer | Cap on total products returned; 0 = unlimited. |
proxy | object | Apify proxy configuration. Works on every plan by default. |
mcpConnectors | array | Optional MCP connectors to export results into (Notion, Linear, Airtable, Apify). |
notionParentPageUrl | string | Notion connector only: page under which item pages are created. |
maxNotifyListings | integer | Cap on items exported to each connector per run. Does not affect the dataset. |
Output Example
{"productId": "123456","sku": "123456","name": "Sample Eau de Parfum","brand": "SAMPLE BRAND","category": "Fragancias Femeninas","url": "https://www.druni.es/sample-eau-de-parfum-sample-brand","price": 39.95,"currency": "EUR","originalPrice": 59.95,"discountAmount": 20.0,"discountPercent": 33.4,"isOnSpecial": true,"onlineAvailable": true,"image": "https://www.druni.es/sample/image.jpg","categoryPath": ["Druni", "Perfumes", "Perfumes Mujer", "Fragancias Femeninas"],"description": "Sample product description as shown on the site.","variants": [{ "sku": "123457", "name": "Sample Eau de Parfum 50ML", "size": "50ML", "price": 39.95, "currency": "EUR", "onlineAvailable": true, "unitPrice": 79.9, "unitPriceBasis": "100 ml" },{ "sku": "123458", "name": "Sample Eau de Parfum 100ML", "size": "100ML", "price": 64.95, "currency": "EUR", "onlineAvailable": true, "unitPrice": 64.95, "unitPriceBasis": "100 ml" }],"rating": 4.2,"reviewCount": 18,"reviews": {"averageRating": 4.2,"totalReviewCount": 18,"items": [{ "rating": 5, "body": "Sample review text.", "author": "Cliente", "date": "2026-06-05" }]}}
Sample shape: values above are illustrative placeholders, not from a live product.
A note on reviews and unit pricing
Reviews come directly from the product page itself, not a third-party review vendor -- the page only ever surfaces its most recent reviews (up to 10), while the overall rating and review count reflect the full history. Druni does not display a per-unit (per-100ml/g) price on the site itself; unitPrice/unitPriceBasis on each variant are computed by this scraper (price divided by that variant's own pack size) only when the size is a single unambiguous value, and are left empty otherwise rather than guessed.
Send results into your apps (MCP connectors)
Optionally pipe results into the apps you already use through Model Context Protocol (MCP) connectors. Authorize a connector once under Apify, Settings, Integrations, then select it in the mcpConnectors field. Each connector receives a condensed, human-readable summary per product (name plus key fields), while the complete record always stays in the Apify dataset. For Notion, set notionParentPageUrl to the page the item pages should be created under, and use maxNotifyListings to cap how many items are exported per connector per run. Supported connectors: Notion, Linear, Airtable, and Apify. Leave the field empty to skip; it never changes the dataset output.
A note on plans
The default connection works on every Apify plan, including the free tier. A residential proxy connection is optional and only worth turning on for very large or sustained runs.