bol.com Product Scraper

Extract bol.com products as clean JSON with zero personal data - prices in cents, ratings, EAN barcodes, brands, availability. NL + BE storefronts, price-band filter, pay per result. Built for price monitoring, market research and AI pipelines.

$1.99 / 1,000 · 100.0% success over 18 public runs in the last 30 days.

Run it on Apify → Free to try - runs bill per result on your own account.

What you give it

Every field is optional unless marked; sensible defaults do the rest.

FieldTypeWhat it doesDefault
searchQuery string What to search for on bol.com, exactly as you would type it in the site's search box, e.g. "iphone 16 hoesje" or "lego technic". lego technic
storefront string Which bol.com storefront to search: bol.com/nl (Netherlands) or bol.com/be (Belgium, Dutch). Assortment and prices can differ slightly. bol.com/nl
priceMinEur integer Only include products costing at least this many euros. Products without a readable price are excluded when a price filter is set. -
priceMaxEur integer Only include products costing at most this many euros. Products without a readable price are excluded when a price filter is set. -
scrapeDetails boolean Also open each product page for brand, EAN barcode, colour, material, condition, availability and variant count. Slower: one extra request per product. False
maxItems integer Stop after this many products. Free-plan runs are capped at 25 items. 200

What you get back

One JSON object per result, with exactly these fields - no seller identities, no contact data, ever.

FieldTypeMeaning
productId string bol.com product ID from the product URL.
url string Direct link to the product page.
title string Product title as listed.
priceCents ['integer', 'null'] Current price in euro cents as shown on the search page. Null when the tile shows no readable price.
currency string Always EUR.
ratingValue ['number', 'null'] Average customer rating, 0-5. Null when the product has no reviews.
reviewCount ['integer', 'null'] Number of customer reviews. Review text and reviewer identities are never collected.
snippet string Product description snippet from the search page.
deliveryText string Stock and delivery promise as displayed, e.g. 'Op voorraad. Voor 21:00 uur besteld, morgen in huis'.
thirdPartySeller boolean True when the offer comes from a marketplace partner instead of bol.com itself. The seller's name is never collected.
imageUrl string Main product image.
brand ['string', 'null'] Brand name. Only present with scrapeDetails enabled.
ean ['string', 'null'] EAN-13 / GTIN-13 barcode. Only present with scrapeDetails enabled.
color ['string', 'null'] Variant colour. Only present with scrapeDetails enabled.
material ['string', 'null'] Product material. Only present with scrapeDetails enabled.
condition ['string', 'null'] Offer condition from structured data, e.g. NewCondition. Only present with scrapeDetails enabled.
availability ['string', 'null'] Offer availability from structured data, e.g. InStock. Only present with scrapeDetails enabled.
variantCount integer Number of product variants (colours, sizes) on the product page. Only present with scrapeDetails enabled.

Health

100.0% success over 18 public runs in the last 30 days. Live record, failures included: status page.

Full documentation, examples and the AI-assistant prompt live on the store page.