Dreamland Scraper [$0.49/1K 💰] — NL & BE Toys, EAN, Stock
Pricing
from $0.49 / 1,000 products
Dreamland Scraper [$0.49/1K 💰] — NL & BE Toys, EAN, Stock
Scrape toy products from dreamland.nl and dreamland.be (Dutch and French) at $0.49 per 1,000. Prices, recommended retail price and discount, EAN, article number, specifications, ratings, reviews and stock in every physical store. By category, brand, URL or the whole catalogue.
Pricing
from $0.49 / 1,000 products
Rating
0.0
(0)
Developer
Unfenced Group
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 days ago
Last modified
Categories
Share
Dreamland Scraper

Extract toy products from dreamland.nl and dreamland.be: prices, recommended retail prices and discounts, EAN, article numbers, specifications, ratings and reviews, and stock in every physical store. Search by keyword, scrape by category or brand, start from any Dreamland URL, or take the whole catalogue. No API key required.
Why this scraper?
🎯 Built for Dreamland in two countries
One actor covers dreamland.nl and dreamland.be in Dutch and French. Product codes are shared across all three storefronts, so prices and stock compare directly between the Netherlands and Belgium.
🔎 Keyword search
Type a brand, a character or a product type. A brand returns its full listing, a category name returns that category, and any other term matches product names across the full catalogue. Every row records the keyword and how it matched.
💶 Prices you can analyse
Current price, the manufacturer's recommended retail price, discount in euros and percent, and promotion badges. A discount-only filter uses Dreamland's own reduced-price listing, so a discount run reads a few pages, not the whole category.
🏷️ Product identifiers
EAN barcode, Dreamland order code and the manufacturer's article number (for example the LEGO set number) on every detailed record. Match Dreamland against any other retailer or your own catalogue.
🏬 Stock in every store
With details on, each product carries the stock status of every physical Dreamland store, with store code and coordinates. See where a product is in stock, running low or sold out.
⭐ Ratings and reviews
Exact average rating, review count and the reviews shown on the product page, without reviewer names.
📦 Up to 70 fields
Specifications by stable attribute code, age grading, piece count, description in text, HTML and Markdown, manufacturer details, safety warnings and links to the same product on the other storefronts.
Input parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
site | string | "nl" | nl = dreamland.nl, be-nl = dreamland.be in Dutch, be-fr = dreamland.be in French. |
searchQueries | array | [] | Keywords, one per line, e.g. lego star wars, stitch, knuffel. See How keyword search works below. |
categories | array | [] | Top-level categories by Dutch slug, e.g. bouwen-en-constructie. French pages are resolved automatically. |
brands | array | [] | Brand slugs as used in Dreamland's /m/ URLs, e.g. lego, playmobil, pokemon. |
startUrls | array | [] | Any Dreamland category, sub-category, brand or product URL. Overrides categories and brands. |
sortBy | string | "relevance-desc" | relevance-desc, price-asc, price-desc, sortingRating-desc or new-desc. |
minPrice | integer | (empty) | Minimum price in euros. |
maxPrice | integer | (empty) | Maximum price in euros. |
onlyDiscounted | boolean | false | Only products priced below their recommended retail price. |
onlyNew | boolean | false | Only products marked as new. |
searchProductNames | boolean | true | For keywords that are not a brand or category, also match product names. These matches are billed at the detailed rate. |
fetchDetails | boolean | false | Open each product page for EAN, specifications, description, reviews, store stock and more. Billed at the detailed rate. |
includeReviews | boolean | true | With details on, include the reviews from the product page. |
includeStoreStock | boolean | true | With details on, include stock per physical store. |
maxItems | integer | 100 | Maximum number of products. 0 means no limit. |
Leave searchQueries, categories, brands and startUrls empty to scrape the whole catalogue (19,426 products on dreamland.nl in September 2026).
How keyword search works
Dreamland's robots.txt does not allow automated use of its site search, so this actor never calls it. Instead it resolves each keyword against the product and category sitemaps that Dreamland publishes for search engines, in three steps:
- Brand. If the keyword is a brand (
lego,playmobil,paw patrol), you get the brand's full listing first, then any other products with the keyword in their name. - Category. If the keyword names a category (
knuffel,puzzel,trampoline), you get that category's listing. Plurals are matched, sopuzzelfinds Puzzels. - Product name. Otherwise, every product whose name contains all the words of the keyword (
lego star wars,eenhoorn,fiets 16 inch). These are read from their product pages, so they come back fully detailed and are billed at the detailed rate.
Brand and category matches follow your fetchDetails setting and are billed at the listing rate unless you turn details on. The matchedBy field on each row tells you which step found it.
Output schema
Every field below is present on every record. Fields the source does not publish for a product, and detail-only fields when fetchDetails is off, are returned as null.
| Field | Type | Description |
|---|---|---|
id | string | Dreamland product code, same as productCode. Stable across runs and storefronts. |
productCode | string | Dreamland's 8-digit order code, shared by dreamland.nl and dreamland.be. |
productId | string | Dreamland's internal numeric product ID. |
name | string | Product name as shown on the site. |
url | string | Product page URL on the scraped storefront. |
site | string | Storefront scraped: dreamland.nl, dreamland.be/nl or dreamland.be/fr. |
country | string | NL or BE. |
language | string | nl or fr. |
currency | string | Always EUR. |
brand | string|null | Brand, e.g. LEGO, PLAYMOBIL. Null for unbranded and house products. |
subBrand | string|null | Product line, e.g. Star Wars, Technic, Pokemon. |
category | string | Top-level category. |
subCategory | string|null | Second-level category. |
subSubCategory | string|null | Third-level category, where the site uses one. |
categoryPath | string[] | Full category path, top level first. |
categoryUrl | string|null | Category page URL. Detail only. |
price | number | Current selling price in euros. |
recommendedRetailPrice | number|null | Manufacturer's recommended retail price, when the site shows one. |
priceLabel | string|null | Label shown next to the RRP, e.g. Adviesprijs. |
isDiscounted | boolean | True when the price is below the shown RRP. |
discountAmount | number|null | RRP minus price, in euros. |
discountPercent | number|null | Discount as a percentage of the RRP, one decimal. |
labels | string[] | Badges on the product, e.g. Nieuw, Actie, DreamDeal, Alleen thuislevering. |
isNew | boolean | Marked as new. |
isPromotion | boolean | Carries a promotion badge. |
homeDeliveryOnly | boolean | Available for home delivery only, not in stores. |
deliveryText | string|null | Delivery or stock message as shown, e.g. Levertijd: 1-2 werkdagen. |
inStockOnline | boolean|null | Orderable online now. |
isPreOrder | boolean | Not yet released or awaiting stock. |
availableFrom | string|null | Expected availability date (ISO) for pre-order products. |
availability | string|null | Schema.org availability: InStock, OutOfStock, InStoreOnly, OnlineOnly. Detail only. |
canHomeDeliver | boolean|null | Home delivery offered. Detail only. |
canPickUpInStore | boolean|null | Store pickup offered. Detail only. |
ratingStars | number|null | Star rating from the listing card, to the nearest half star. |
rating | number|null | Exact average rating out of 5. Detail only. |
reviewCount | integer|null | Number of reviews. Detail only. |
imageUrl | string | Main product image. |
imageUrlWebp | string|null | Main image in WebP. |
secondaryImageUrl | string|null | Second product image from the listing card. |
images | string[] | Listing: card images. Detail: every gallery image at full resolution. |
imageCount | integer|null | Number of gallery images. Detail only. |
ean | string|null | EAN / GTIN barcode. Detail only. |
articleNumber | string|null | Manufacturer's article or set number, e.g. LEGO 75192. Detail only. |
ageGrading | string|null | Age grading as shown, e.g. Vanaf 16 jaar. Detail only. |
minAgeYears | number|null | Minimum age in years, parsed from the age grading. Detail only. |
pieceCount | integer|null | Number of pieces, where published (building sets). Detail only. |
license | string|null | Licence or theme, where published. Detail only. |
material | string|null | Main material. Detail only. |
batteries | string|null | Battery requirement, e.g. 2 x Knoopcel LR41 (inbegrepen). Detail only. |
specifications | object|null | Every specification row, keyed by its label on the site. Detail only. |
specificationCodes | object|null | The same rows keyed by Dreamland's stable attribute codes (BARCODE, AGE_GRADING and so on), for consistent parsing across languages. Detail only. |
descriptionText | string|null | Product description as plain text. Detail only. |
descriptionHtml | string|null | Product description as HTML. Detail only. |
descriptionMarkdown | string|null | Product description as Markdown. Detail only. |
manufacturerName | string|null | Manufacturer or importer (EU product-safety information). Detail only. |
manufacturerAddress | string|null | Manufacturer's business address. Detail only. |
safetyWarnings | object[] | Safety pictograms: code and text. Detail only. |
storesWithStock | integer|null | Number of physical stores with stock. Detail only. |
storesTotal | integer|null | Number of physical stores listed for the product. Detail only. |
storeStock | object[]|null | One entry per store. Detail only. |
storeStock.storeCode | string | Dreamland store code, e.g. ALMER. |
storeStock.storeName | string | Store name. |
storeStock.status | string | in-stock, low-stock or sold-out. |
storeStock.hasStock | boolean | Store holds stock. |
storeStock.hasPurchasableStock | boolean | Stock can be reserved for pickup. |
storeStock.latitude | number | Store latitude. |
storeStock.longitude | number | Store longitude. |
reviews | object[]|null | Reviews shown on the product page: rating, title, date (ISO), text. Reviewer names are never collected. Detail only. |
alternateUrls | object|null | The same product on the other storefronts: nlNL, nlBE, frBE. Detail only. |
searchQuery | string|null | The keyword that found this product, if any. |
matchedBy | string|null | How the keyword matched: brand, category or product-name. |
listPosition | integer|null | Position in the listing it was found in. |
sourceUrl | string|null | Listing page the product was collected from. |
sourcePage | integer|null | Page number within that listing. |
detailFetched | boolean | True when the product page was opened. Decides the billing rate. |
contentHash | string | Hash of product code and name, for de-duplication across runs. |
source | string | Always dreamland. |
scrapedAt | string | ISO timestamp of collection. |
Example record
A detailed record (fetchDetails: true). Long arrays and the description are shortened here.
{"id": "01297751","productCode": "01297751","productId": "26182","name": "75192 LEGO Star Wars Millennium Falcon","url": "https://www.dreamland.nl/producten/75192-lego-star-wars-millennium-falcon/01297751","site": "dreamland.nl","country": "NL","language": "nl","currency": "EUR","brand": "LEGO","subBrand": "Star Wars","category": "Bouwen en constructie","subCategory": "Bouwsets","subSubCategory": null,"categoryPath": ["Bouwen en constructie","Bouwsets"],"categoryUrl": "https://www.dreamland.nl/c/categorie/bouwen-en-constructie/bouwsets/producten","price": 849.99,"recommendedRetailPrice": null,"priceLabel": null,"isDiscounted": false,"discountAmount": null,"discountPercent": null,"labels": [],"isNew": false,"isPromotion": false,"homeDeliveryOnly": false,"deliveryText": null,"inStockOnline": false,"isPreOrder": false,"availableFrom": null,"availability": "InStoreOnly","canHomeDeliver": true,"canPickUpInStore": true,"ratingStars": 5,"rating": 5,"reviewCount": 32,"imageUrl": "https://www.dreamland.nl/media/cache/default_pop_product_image/media/image/01297751/b5c039bb984bb26b_01297751_001.6488a988.jpg","imageUrlWebp": "https://www.dreamland.nl/media/cache/default_pop_product_image_webp/media/image/01297751/b5c039bb984bb26b_01297751_001.6488a988.webp","secondaryImageUrl": "https://www.dreamland.nl/media/cache/default_pop_product_image/media/image/01297751/06ff8bc0985357b6_01297751_003.9bc17833.jpg","images": ["https://www.dreamland.nl/media/image/01297751/b5c039bb984bb26b_01297751_001.jpg","https://www.dreamland.nl/media/image/01297751/260a578db4b6433e_01297751_002.jpg"],"imageCount": 10,"ean": "5702015869935","articleNumber": "75192","ageGrading": "Vanaf 16 jaar","minAgeYears": 16,"pieceCount": 7541,"license": null,"material": "Plastic","batteries": null,"specifications": {"Merk": "LEGO","Submerk": "Star Wars","Materiaal": "Plastic","Aantal stukjes": "7541 Stukjes","Geschikt voor": "Beide","Bestelcode": "01297751","Barcode": "5702015869935","Leeftijd": "Vanaf 16 jaar","Artikel nummer": "75192"},"specificationCodes": {"BRAND": "LEGO","SUBBRAND": "Star Wars","MATERIAL": "Plastic","LEGO_Aantal_stuks": "7541 Stukjes","SUITABLE FOR": "Beide","ORDER_CODE": "01297751","BARCODE": "5702015869935","AGE_GRADING": "Vanaf 16 jaar","ARTICLE_NUMBER": "75192"},"descriptionText": "Kom aan boord van de beroemde Millennium Falcon van LEGO voor een reis door het melkwegstelsel! Zo herbeleef je alles van de mythische Star Wars-saga!\nBuitenkan…","descriptionHtml": "<p>Kom aan boord van de beroemde Millennium Falcon van LEGO voor een reis door het melkwegstelsel! Zo herbeleef je alles…","descriptionMarkdown": "Kom aan boord van de beroemde Millennium Falcon van LEGO voor een reis door het melkwegstelsel! Zo herbeleef je alles va…","manufacturerName": "Lego Nederland bv","manufacturerAddress": "Ruiterijschool 5, 2930 Brasschaat Nederland, NL","safetyWarnings": [{"code": "chocking-hazard","text": "Opgepast, verstikkingsgevaar! Niet geschikt voor kinderen onder de 3 jaar."}],"storesWithStock": 26,"storesTotal": 27,"storeStock": [{"storeCode": "ALMER","storeName": "DreamLand Almere","status": "in-stock","hasStock": true,"hasPurchasableStock": true,"latitude": 52.373244,"longitude": 5.220256},{"storeCode": "ARKEL","storeName": "DreamLand Arkel","status": "in-stock","hasStock": true,"hasPurchasableStock": true,"latitude": 51.867381,"longitude": 4.989133}],"reviews": [{"rating": 5,"title": "Zeer mooie Lego build voor een zeer mooie prijs.","date": "2025-03-12","text": "Een waar pronkstuk voor de Lego Star Wars collectie van onze zoon."}],"alternateUrls": {"nlNL": "https://www.dreamland.nl/producten/75192-lego-star-wars-millennium-falcon/01297751","nlBE": "https://www.dreamland.be/nl/producten/75192-lego-star-wars-millennium-falcon/01297751","frBE": "https://www.dreamland.be/fr/produits/75192-lego-star-wars-millennium-falcon/01297751"},"searchQuery": null,"matchedBy": null,"listPosition": 1,"sourceUrl": "https://www.dreamland.nl/c/bouwen-en-constructie/producten?sort=price-desc","sourcePage": 1,"detailFetched": true,"contentHash": "fa6e8524be3e6a66","source": "dreamland","scrapedAt": "2026-09-11T11:23:49.015Z"}
Examples
1. Keyword search across a brand, a product line and a category
{ "site": "nl", "searchQueries": ["pokemon", "lego star wars", "knuffel"], "maxItems": 500 }
2. Discounted board games and puzzles in Belgium, with EAN and store stock
{ "site": "be-nl", "categories": ["gezelschapspellen-en-puzzels"], "onlyDiscounted": true, "fetchDetails": true, "maxItems": 500 }
3. A sub-category and single products by URL
{ "startUrls": [{ "url": "https://www.dreamland.nl/c/games-en-multimedia/spelconsoles-accessoires/producten" },{ "url": "https://www.dreamland.nl/producten/10713-lego-classic-creatieve-koffer/01295689" }], "maxItems": 200 }
4. Daily feed of new arrivals in French for Belgium
{ "site": "be-fr", "categories": ["speelfiguren-en-sets", "poppen-figuren-en-knuffels"], "onlyNew": true, "sortBy": "new-desc", "maxItems": 300 }
Schedule example 4 daily and compare productCode against yesterday's dataset to spot new listings.
💰 Pricing
You only pay for products delivered to your dataset. Failed requests are never charged.
| Event | Price per 1,000 | When it applies |
|---|---|---|
| Product | $0.49 | Product collected from a category, brand or catalogue page |
| Product with details | $2.49 | Product whose product page was also opened (fetchDetails: true), and keyword matches found by product name |
| Products | Listing only | With details |
|---|---|---|
| 100 | ~$0.05 | ~$0.25 |
| 1,000 | ~$0.49 | ~$2.49 |
| 10,000 | ~$4.90 | ~$24.90 |
Until 26 September 2026 the detailed rate is $2.19 per 1,000. Keyword matches found through product names (matchedBy: product-name) are read from their product page and billed as products with details. Turn off searchProductNames to keep keyword runs at the listing rate. A product whose page could not be loaded is billed at the listing rate, because that is what you received. A negligible $0.00005 start fee applies per run. Use Max results to cap spend.
Performance
Dreamland sits behind bot protection, so every page goes through an unblocking proxy that takes 5 to 30 seconds per page. The actor fetches pages in parallel to compensate.
| Run size | Listing only | With details |
|---|---|---|
| 100 products | about 1–2 minutes | about 4–6 minutes |
| 1,000 products | about 6–10 minutes | about 20–30 minutes |
| 10,000 products | about 1–1.5 hours | not recommended in one run |
Known limitations
- Keyword search does not read product descriptions. It matches brand, category and product names, which covers most searches (
stitchfinds 95% of what the site's own search finds), but words that only appear in descriptions are missed.eenhoornmatches 159 product names where the site's own search reports about 340 hits. - French keywords on dreamland.be. Dreamland publishes its Belgian sitemaps in Dutch only. Brand keywords work in both languages; product and category words should be given in Dutch, and the results are still returned from the French pages.
- The whole-catalogue listing cannot be sorted or filtered server-side. robots.txt allows only plain paging there, so filters are applied locally and read more pages. Pick categories to filter efficiently.
- Some products have no brand. Party goods and house products often carry a sub-brand (for example
Pokemon) but no brand. - Reviews are limited to those on the product page. Products with many reviews show a selection, not every review.
- Store stock is a snapshot of what the site shows at the time of the run.
Technical details
- Source: dreamland.nl and dreamland.be (Dutch and French), Colruyt Group's toy retailer
- Coverage: full catalogue, by category, brand or URL
- Compliance: respects robots.txt; site search and filtered root listings are never requested
- Retry: automatic retry with exponential backoff; repeated pages are detected and stop the listing
- Health: every run writes
OUTPUTandHEALTHrecords to its key-value store
Rate this actor
If this scraper does its job, a short review on the Reviews tab helps other users find it. Something not working? Open an issue on the Issues tab instead — issues get fixed.
Need a custom scraper?
Unfenced Group builds Apify actors for any website — for free.
If the site you need isn't in our portfolio yet, just ask. We scope, build, and publish it at no cost to you. You only pay for results — we absorb the compute and proxy costs ourselves. Same pay-per-result pricing, same quality, same standards as every actor in this portfolio.
Get in touch: www.unfencedgroup.nl