Bol.com Scraper avatar

Bol.com Scraper

Pricing

from $1.80 / 1,000 product listings

Go to Apify Store
Bol.com Scraper

Bol.com Scraper

Scrape bol.com (NL/BE) products: prices, EAN-13, ratings, sellers, variants, full specifications, complete reviews and every seller offer.

Pricing

from $1.80 / 1,000 product listings

Rating

0.0

(0)

Developer

Unfenced Group

Unfenced Group

Maintained by Community

Actor stats

1

Bookmarked

2

Total users

1

Monthly active users

16 hours ago

Last modified

Categories

Share

Extract structured product data from bol.com — the largest online retailer in the Netherlands and Belgium. Search by keyword, crawl category/brand/series pages, or pass product URLs directly. Get prices, EAN-13 barcodes, ratings, sellers, stock, and full per-variant data in clean JSON.

Works on both the Dutch shop (bol.com/nl) and the Belgian shop (bol.com/be).

Bol.com Scraper

What it does

  • Search any keyword and collect every product on the results pages
  • Crawl category (/l/), brand (/pb/), and series (/serie/) listing pages
  • Enrich each product with detail-page data: EAN-13, brand, weight, condition, buy-box price range, and full specifications
  • Collect full reviews per product — every review with rating, title, body, date and helpful count, plus the rating distribution
  • Collect all seller offers — every seller competing on a product, not just the buy-box winner
  • Track prices across variants and sellers for repricing and competitive analysis
  • Monitor ratings, review counts, stock, and sponsored placement

Input

FieldTypeDescription
searchQuerystringA single keyword to search (e.g. koffie, lego, airpods).
searchQueriesarraySeveral keywords in one run. Each becomes its own search.
startUrlsarrayBol.com URLs to crawl: search (/s/), category (/l/), brand (/pb/), series (/serie/) or product (/p/) pages.
countrystringnl (default) or be. Sets the shop for keyword searches.
maxResultsintegerMaximum items to return. 0 = unlimited. Default 50.
fetchDetailsbooleanVisit each product detail page for per-variant EAN-13, brand, weight, buy-box, specifications and a review sample. Default false.
fetchReviewsbooleanCollect the full review list and rating distribution per product. Visits the detail page. Default false.
fetchOffersbooleanCollect every seller's offer per product, not just the buy-box. Visits the detail page. Default false.
maxReviewsPerProductintegerCap on reviews collected per product when fetchReviews is on. Default 50.
proxyConfigurationobjectOptional. Leave empty to run without a proxy — the scraper escalates to residential automatically only if bol.com blocks a request.

Example — search the Dutch shop

{
"searchQuery": "koffiebonen",
"country": "nl",
"maxResults": 100,
"fetchDetails": false
}

Example — multiple keywords with full detail enrichment

{
"searchQueries": ["nespresso cups", "dolce gusto", "senseo pads"],
"country": "nl",
"maxResults": 200,
"fetchDetails": true
}

Example — crawl a category page on the Belgian shop

{
"startUrls": [
{ "url": "https://www.bol.com/be/nl/l/koffie/13302/" }
],
"maxResults": 300
}

Example — scrape specific products by URL

{
"startUrls": [
{ "url": "https://www.bol.com/nl/nl/p/nescafe-dolce-gusto-lungo-48-koffiecups/9200000131373794/" }
],
"fetchDetails": true
}

Example — full competitive intelligence (specs, reviews, all sellers)

{
"searchQuery": "nespresso machine",
"country": "nl",
"maxResults": 50,
"fetchDetails": true,
"fetchReviews": true,
"fetchOffers": true
}

Output

Every run writes one record per product to the dataset.

Listing fields (always present)

FieldTypeDescription
typestring"listing" or "detail".
productIdstringBol.com product ID.
titlestringProduct title.
urlstringFull product URL.
pricenumberCurrent selling price in EUR.
priceCurrencystringAlways "EUR".
selectPricenumber|nullSelect-deal price, if any.
unitPricenumber|nullPrice per unit (per kg/litre/piece). null for items not sold by measure.
referencePricenumber|nullThe "was" price (bol's most-shown price over 90 days), when discounted.
discountPercentagenumber|nullDiscount vs the reference or Select price, when discounted.
ratingnumber|nullAverage review rating (0–5).
reviewCountnumber|nullNumber of reviews.
sellerstring|nullSeller / retailer name (e.g. bol).
conditionstring|nullNew, Refurbished, Secondhand.
availabilitystring|nullStock and delivery note.
deliveredWithin48hboolean|nullWhether 48h delivery applies.
sponsoredbooleanWhether the placement is sponsored.
sustainablebooleanWhether the product carries a sustainability label.
imageUrlstring|nullLargest available product image.
descriptionstring|nullProduct description text.
categoryarrayCategory path, broadest first.
sourcePagenumberResult page the item came from.
sourceUrlstringThe listing URL it was found on.
domainstringwww.bol.com.
scrapedAtstringISO timestamp.

Detail fields (added when fetchDetails: true)

FieldTypeDescription
gtin13string|nullEAN-13 / GTIN-13 barcode.
brandstring|nullBrand name.
bestRatingnumber|nullAggregate rating from the detail page.
lowPricenumber|nullLowest buy-box price across offers.
highPricenumber|nullHighest buy-box price across offers.
offerCountnumber|nullNumber of offers.
imagesarrayAll product images.
variantsarrayPer-variant objects (see below).
specificationsarrayStructured product specs as { name, value } pairs.
reviewSamplearrayUp to 10 reviews: rating, title, body, date.
reviewsarrayFull review list (when fetchReviews is on): rating, title, body, date, helpfulCount.
ratingDistributionobjectPer-star review counts (when fetchReviews is on).
offersarrayEvery seller's offer (when fetchOffers is on): seller, price, condition, availability, offerType.

Each entry in variants contains: productId, name, url, gtin13, brand, weightGrams, price, priceCurrency, availability, condition, seller, imageUrl.

Example output (listing)

{
"type": "listing",
"productId": "9200000074456102",
"title": "Douwe Egberts Aroma Rood Filterkoffie - 6 x 500 gram",
"url": "https://www.bol.com/nl/nl/p/douwe-egberts-aroma-rood-filterkoffie-6-x-500-gram/9200000074456102/",
"price": 59.94,
"priceCurrency": "EUR",
"unitPrice": 9.99,
"rating": 4.7,
"reviewCount": 437,
"seller": "bol",
"condition": "New",
"availability": "Op voorraad. Voor 23:59 uur besteld, morgen in huis",
"sponsored": false,
"imageUrl": "https://media.s-bol.com/gLoBQyJ92Zqk/550x504.jpg",
"category": ["Eten & Drinken", "Frisdrank, sap, koffie en thee", "Koffie", "Filterkoffie"],
"sourcePage": 1,
"domain": "www.bol.com",
"scrapedAt": "2026-06-19T09:32:17.548Z"
}

Example output (detail variant)

{
"gtin13": "8445290872197",
"brand": "NESCAFÉ Dolce Gusto",
"weightGrams": 1070,
"price": 29.97,
"priceCurrency": "EUR",
"availability": "InStock",
"condition": "NewCondition",
"seller": "bol"
}

Example output (specifications, reviews, offers)

{
"specifications": [
{ "name": "Soort koffie", "value": "Cups" },
{ "name": "Branding", "value": "Medium gebrand" }
],
"ratingDistribution": { "5": 180, "4": 32, "3": 9, "2": 4, "1": 3 },
"reviews": [
{ "rating": 5, "title": "Goede koffie", "body": "Zoals altijd een goede keuze.", "date": "2025-08-26", "helpfulCount": 3 }
],
"offers": [
{ "seller": "bol", "price": 19.47, "condition": "New", "availability": "Op voorraad", "offerType": "STANDARD" },
{ "seller": "CoffeeStore", "price": 16.47, "condition": "New", "availability": "Op voorraad", "offerType": "STANDARD" }
]
}

Pricing

This actor uses pay-per-result pricing. You only pay for the results you receive.

  • $0.002 per product listing (fetchDetails: false)
  • $0.008 per product detail (fetchDetails: true — adds EAN-13, variants, specifications, buy-box range)
  • $0.003 per product with full reviews (fetchReviews: true)
  • $0.003 per product with all seller offers (fetchOffers: true)

Higher subscription tiers receive an automatic volume discount on every event.

Notes

  • Bol.com applies bot protection that is tied to IP reputation. Small runs work without a proxy. For larger runs the actor automatically switches to a country-matched residential proxy when it detects a block — no configuration needed.
  • Personal data is not collected. Review author names are excluded; only the rating, title, body, and date of a review are returned. Seller names are company names, not individuals.

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