Kruidvat Scraper — Belgian Drugstore Products & Prices
Under maintenancePricing
from $5.00 / 1,000 result scrapeds
Kruidvat Scraper — Belgian Drugstore Products & Prices
Under maintenanceScrape products from Kruidvat.be, Belgium's biggest drugstore chain with 700+ locations. Beauty, personal care, baby products, health supplements, and household goods.
Pricing
from $5.00 / 1,000 result scrapeds
Rating
0.0
(0)
Developer
Studio Amba
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
5 days ago
Last modified
Categories
Share
Kruidvat Scraper -- Belgium & Netherlands Products, Prices & Deals
Scrape product data from Kruidvat.be (Belgium) and Kruidvat.nl (Netherlands) -- the Benelux's largest drugstore chain with over 1,200 locations. Get structured data on beauty products, personal care, baby items, health supplements, and household essentials at everyday low prices.
How to scrape Kruidvat data
Kruidvat Scraper supports both the Belgian and Dutch Kruidvat stores. Pick your country, enter a search query or category URL, and the scraper handles the rest. No login or cookies required.
What is Kruidvat?
Kruidvat is the dominant drugstore brand in Belgium and the Netherlands, owned by AS Watson Group. They stock thousands of products across beauty, personal care, health, baby, and household categories -- from EUR 1.99 shampoo to high-end skincare lines. Their aggressive promotions and "1+1 gratis" deals make price tracking especially valuable.
Who uses this scraper:
- Price comparison platforms -- Kruidvat sets the benchmark for drugstore pricing in the Benelux. Track their prices to power comparison features across beauty, health, and personal care.
- Brand managers & manufacturers -- Monitor how your products are priced and positioned at the biggest Benelux drugstore chain. Detect unauthorized discounting or track promotional cycles.
- E-commerce competitors -- If you run a pharmacy, beauty store, or health shop in Belgium or the Netherlands, Kruidvat is your pricing floor. Know when they run promotions before your customers do.
- Market researchers -- Analyze the Benelux drugstore market: category sizes, price distributions, brand representation, and seasonal patterns.
- Deal tracking & couponing -- Kruidvat's frequent promotions (1+1, 2e halve prijs, 25% korting) create opportunities for deal-focused content and apps.
Choose your country
Use the country input to switch between Belgium and the Netherlands:
{"country": "BE","searchQuery": "shampoo","maxResults": 100}
{"country": "NL","searchQuery": "shampoo","maxResults": 100}
Search by keyword
The fastest way to find specific products:
{"country": "NL","searchQuery": "zonnebrand","maxResults": 50}
Browse a category
Scrape an entire product category. Grab category URLs from kruidvat.be or kruidvat.nl navigation:
{"country": "BE","categoryUrl": "https://www.kruidvat.be/nl/haar/shampoo/c/20002","maxResults": 200}
{"country": "NL","categoryUrl": "https://www.kruidvat.nl/haar/shampoo/c/20002","maxResults": 200}
If a categoryUrl is provided, it takes priority over the searchQuery.
Tip: Kruidvat's category tree is deep. Target leaf categories (like "Shampoo > Droog haar") for focused scraping, or parent categories (like "Haar") for broader coverage.
What data does Kruidvat Scraper extract?
| Field | Type | Description |
|---|---|---|
name | String | Full product title |
brand | String | Brand name (Nivea, L'Oreal, Kruidvat eigen merk, Pampers, etc.) |
price | Number | Current selling price in EUR |
currency | String | Always "EUR" |
originalPrice | Number | Price before promotions |
ean | String | 13-digit EAN barcode |
sku | String | Kruidvat product number |
inStock | Boolean | Online stock status |
rating | Number | Average customer rating (0-5) |
reviewCount | Number | Number of customer reviews |
imageUrl | String | Primary product image |
imageUrls | Array | All product images |
description | String | Product details |
category | String | Deepest category in breadcrumb |
categories | Array | Full category breadcrumb path |
Output
A realistic Kruidvat product record:
{"name": "Andrélon Shampoo Levendig Lang","brand": "Andrélon","price": 3.49,"currency": "EUR","url": "https://www.kruidvat.nl/andrelon-shampoo-levendig-lang/p/4305728","scrapedAt": "2026-05-19T09:15:00.000Z","originalPrice": 4.99,"ean": "8710447321942","sku": "4305728","inStock": true,"rating": 4.3,"reviewCount": 87,"imageUrl": "https://static.kruidvat.nl/medias/product/4305728-front.jpg","imageUrls": ["https://static.kruidvat.nl/medias/product/4305728-front.jpg","https://static.kruidvat.nl/medias/product/4305728-back.jpg"],"description": "Andrélon Shampoo Levendig Lang maakt je haar zacht en glanzend. Speciaal ontwikkeld voor lang haar dat snel dof en pluizig wordt.","category": "Shampoo","categories": ["Haar", "Shampoo"]}
How much does it cost?
| Scenario | Estimated cost |
|---|---|
| 100 products (search) | ~$0.02 |
| 500 products (category) | ~$0.08 |
| 2,000 products (multiple categories) | ~$0.30 |
| Large catalog crawl | ~$0.50+ |
Kruidvat Scraper uses CheerioCrawler for lightweight, efficient scraping. No browser is launched, keeping costs low.
Can I integrate?
Connect Kruidvat data to your tools:
- Google Sheets -- track Benelux drugstore prices in a spreadsheet
- Webhooks -- trigger alerts when promotions start or prices drop
- Zapier / Make -- build automated workflows around price changes
- Slack -- daily notifications on Kruidvat deals in specific categories
- Amazon S3 / Google Cloud Storage -- archive weekly pricing snapshots
- PostgreSQL / MySQL -- feed data into your analytics database
Can I use it as an API?
Python
from apify_client import ApifyClientclient = ApifyClient("YOUR_API_TOKEN")run = client.actor("studio-amba/kruidvat-scraper").call(run_input={"country": "NL","searchQuery": "zonnebrand","maxResults": 50,})for item in client.dataset(run["defaultDatasetId"]).iterate_items():price_info = f"EUR {item['price']}"if item.get('originalPrice'):price_info += f" (was EUR {item['originalPrice']})"print(f"{item['brand']} - {item['name']} -- {price_info}")
JavaScript
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });const run = await client.actor('studio-amba/kruidvat-scraper').call({country: 'NL',searchQuery: 'zonnebrand',maxResults: 50,});const { items } = await client.dataset(run.defaultDatasetId).listItems();items.forEach(item => {const sale = item.originalPrice ? ` (was EUR ${item.originalPrice})` : '';console.log(`${item.brand} - ${item.name} -- EUR ${item.price}${sale}`);});
Input parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
country | String | "BE" | Which Kruidvat site to scrape: "BE" (kruidvat.be) or "NL" (kruidvat.nl) |
categoryUrl | String | A Kruidvat category page URL to scrape | |
searchQuery | String | "shampoo" | Search for products by keyword |
maxResults | Integer | 100 | Maximum number of products to return |
proxyConfiguration | Object | Proxy settings for better reliability on large runs |
FAQ
Does this scrape Kruidvat Belgium or Netherlands?
Both. Use the country input to select "BE" for kruidvat.be or "NL" for kruidvat.nl. The scraper automatically adjusts URLs and language headers.
Can I track promotions like "1+1 gratis"?
The scraper captures originalPrice when a product is on promotion. The specific promotion type (1+1, 2e halve prijs, etc.) is reflected in the price difference but not as a separate field.
How do I find the right category URL?
Browse kruidvat.be or kruidvat.nl, navigate to the category you want, and copy the URL from your browser's address bar. Category URLs follow the pattern /nl/{category}/c/{code}.
What language is the data in? Product data comes in Dutch. Belgian results use the kruidvat.be catalog, Dutch results use kruidvat.nl.
How often do Kruidvat prices change? Kruidvat runs weekly promotions (folder deals). Scraping weekly on Monday or Tuesday captures the new promotion cycle. Daily scraping catches flash deals.
Are Kruidvat's own-brand products included? Yes. Kruidvat eigen merk products appear in results like any other brand.
Limitations
- Product data is extracted from HTML. If Kruidvat changes their page structure, some fields may temporarily return empty.
- Kruidvat's in-store promotions and member-only deals may differ from what appears online.
- Stock status reflects online availability, not individual store inventory.
- Very large category scrapes may take longer due to pagination and per-product detail page visits.
Other retail and beauty scrapers
Build comprehensive Benelux and European retail intelligence:
- ICI PARIS XL Scraper -- Belgian beauty and perfume (premium segment)
- Rituals Scraper -- Luxury cosmetics and home fragrance
- Action Scraper -- Pan-European discount retailer
- Mytheresa Scraper -- Luxury fashion from 200+ designers
- AS Adventure Scraper -- Outdoor and adventure gear
- Bergfreunde Scraper -- Climbing and hiking equipment
- Intersport Scraper -- European sports retail
- Helly Hansen Scraper -- Outdoor and sailing apparel
Your feedback
Found an issue or want a new feature? Let us know through the Apify Store actor page. We fix bugs quickly and actively maintain this scraper.