Bol.com Scraper
Bol dominates Dutch and Belgian ecommerce, and its Retailer API is scoped to your own seller account: your listings, your orders, your stock. It will not tell you who took the buy block off you this morning. The AI scraper reads the public offer page instead.
- bol.com
How to scrape bol.com
Bol works much like Amazon does: many sellers can offer the same product, one of them wins the buy block, and that seller takes the overwhelming majority of the sales. Bol's Retailer API is a genuinely good API, but it authenticates as your seller account and answers questions about your side of the marketplace. Competitor pricing, the full seller list on a listing, and who currently holds the buy block are not things it hands you, and there is no public read API that does. Scrapewise carries no dedicated Bol endpoint either. What works is the offer page. You paste bol.com product URLs into the AI scraper, declare the columns you want, and set a daily schedule. Every run comes back over REST, CSV or Excel, and you pay per page from a prepaid wallet.
What the AI scraper does with a bol.com link
Three steps, same as any other site. The bol-specific part is that the interesting data is in the other-sellers block, not the headline price.
Paste the link
A product page, the other-sellers view for that product, a seller's page, or a category URL with the filters applied. Bol runs one site serving both the Netherlands and Belgium, so unlike most marketplaces here there is no country-domain matrix to manage.
You declare the columns
A bol pricing job usually wants the buy block price, delivery cost and window, the seller holding the block, every other seller and their price, plus condition and whether the offer is fulfilled by bol. You name those fields yourself in a Custom Schema, or start from the ready Product List schema and add to it.
Schedule it and take the data out
Run it once or daily. Pull each run by REST API or download it as CSV or Excel. Because the columns stay stable, the run-over-run table is what shows you how often the buy block actually changes hands, which a single snapshot never will.
Set it up once. The data keeps coming.
Save your search once and it runs by itself. Every run lands in your own Scrapewise database, and you pick how to read it.
Set it up once
Add your ASINs, keywords, places or apps to a scraper in the web app. New accounts get 5 free requests.
Runs on your schedule
Pick daily, weekly on the days you choose, every few days, or the first or last day of the month. Scheduled runs start at night, European time. Need it more often? Start runs from your own code.
Saved in your database
Each run adds dated rows, so this week sits next to last week. Rows are kept for 90 days.
Use it your way
Open the table in the web app and download the latest run as an Excel file. Ask your own AI assistant about it. Or pull the rows into your code with an API key.
Ask your AI assistant about your own data
Connect Claude Desktop or Claude Code with a read-only key. The assistant reads the rows you've already collected, at no extra cost on Scrapewise. With a full-access key it can start a run for you too.
- Which of my ASINs lost the Buy Box this week?
- Which competitor cut prices the most since Monday?
- Show the keywords where I dropped out of the top 10.
What you send and what you get
You send a link and a column list. Who holds the buy block, and what every other seller is asking underneath it, comes from the page itself.
- Link to a bol.com product or other-sellers pagerequired
The other-sellers view is the one worth pasting: it carries every competing offer, not just the winning one.
https://www.bol.com/nl/nl/p/{product-slug}/{product-id}/ - Your column listrequired
Start from the ready Product List schema or name your own fields in a Custom Schema. The AI fills the fields you declared.
Custom Schema, 14 fields - How often it runsoptional
- On demand
- Daily
- Weekly
- Monthly
Daily is the fastest cadence available. The run-over-run table is what shows how often the buy block changes hands.
One row per seller offer on the product, 14 columns each
- offer_rank
- seller_name
- has_buy_block
- seller_rating
- offer_price
- delivery_cost
- total_price
- delivery_promise
- condition
- fulfilment
- product_title
- brand
- +2 more, see all columns
REST API, CSV or Excel. The column set stays the same between runs, so the history builds up without a transformation step.
The columns a bol.com run gives you
We are not going to print a table of invented seller offers and call it real output. Bol refuses both a plain fetch and an ordinary browser, so a run has to go through the residential tier. This is the column list you declare before the run, and the column list every run comes back with.
offer_rankPosition of the offer on the page, buy block firstseller_nameMerchant behind this offerhas_buy_blockWhether this seller currently holds the buy blockseller_ratingSeller rating, when bol displays oneoffer_priceHeadline price, before deliverydelivery_costDelivery cost as the page states ittotal_priceOffer price plus deliverydelivery_promiseDelivery promise shown with the offerconditionNew or second hand, as the offer states itfulfilmentFulfilled by bol or shipped by the sellerproduct_titleProduct title as bol writes itbrandBrand shown on the producteanEAN, only when the page prints itchecked_atWhen this run collected the page (UTC)The columns are yours, not ours. Add, rename or drop any of them in a Custom Schema and every future run returns exactly your set.
What a bol.com page costs
Pay-as-you-go from your wallet. No plan, no monthly fee, no seat count.
Measured on 24 September 2026, not assumed. A plain fetch of a bol.com search URL is refused, and loading the same URL in a real browser returned a stub page with no listings in it. A browser alone is not enough here, so budget for a rendered page coming out of a residential exit.
250 bol.com product pages checked once a day for a month is 7,500 pages.
about EUR 28.13 for the month at this tier
You are charged for the tier a run actually used, not the tier it was expected to need, and your balance never expires.
See the full price list →What this page is not promising
We would rather say this here than in a support ticket.
No dedicated bol endpoint
There is no bol data API in our catalogue and no pre-built bol schema. The AI scraper reads the page you point it at, and that is the whole mechanism.
No seller-account data
Your own buy block share, orders, stock and performance score live behind the seller login. A scraper reading public pages cannot reach them, and bol's Retailer API is the right tool for that job.
Not a live buy block feed
Daily is the fastest schedule. The buy block can change several times between two runs, so treat the output as a daily observation rather than a real-time signal.
No guaranteed delivery
Automated traffic gets challenged. We escalate to higher tiers, but we cannot promise every bol page returns data on every run.
No price-history database
We store nothing about bol prices on our side. A price curve is something you build by scheduling the scraper, starting from the day you switch it on.
No SKU matching or selling tools
You get bol's rows as bol presents them. Mapping them to your catalogue is a separate job, we do not push prices to bol, and we are not lawyers, so check bol's terms before you run anything.
Typical fields the AI scraper extracts from a bol.com page
A starting point, not a fixed schema. What comes back is whatever the page actually shows on the day of the run.
Buy block and price
The buy block is the whole game on bol. Everything else on the page is context for it.
- Buy block price
- Delivery cost and delivery window
- Total delivered price
- Which seller holds the buy block
- Strikethrough or reference price, when shown
The other sellers
The block underneath the buy block is where you find out how much room there actually is, and who is standing in it.
- Seller name for each competing offer
- Price and delivery cost per offer
- Condition, new or second hand
- Fulfilled by bol or shipped by the seller
- Seller rating, when displayed
- Delivery promise per offer
Product identity
What you match your own catalogue against. Bol carries identifiers more often than a comparison site does, but not universally.
- Product title
- Brand
- EAN, when the page prints it
- Category breadcrumb
- Rating and review count
- Product image URL
The column list is one you write: name each field, give it a type and a line telling the AI what to look for. The schema belongs to your account, so a bol field set can be pointed at the next marketplace without rebuilding it. How Custom Schema works →
What it cannot give you The scraper cannot invent a field the page does not render. The competing-seller list sits behind its own view, so if the full list is what you need, that is the URL to scrape rather than the main product page. EAN comes back only when bol prints it. Anything behind the seller login, your own buy block share, your orders, your performance score, is out of reach, and bol's Retailer API is the correct tool for that.
What people use bol.com data for
Tracking who holds the buy block
On bol the buy block takes nearly all the sales, so whether you hold it is the number that decides your week. Scraping it daily across your catalogue tells you which SKUs you lost and to whom, instead of finding out from the sales report a fortnight later.
Seeing how thin the gap really is
Losing the block by two cents and losing it by four euros are completely different problems. Capturing every competing offer alongside the winner tells you which one you have, and therefore whether a price move is worth making at all.
Finding unauthorised sellers in Benelux
For brands, the seller list on a bol listing is a roster of everyone moving your SKU in the Netherlands and Belgium, including the ones you never appointed. That is what a MAP or channel case is built from.
Entering the Dutch market with real numbers
Before you list on bol, scraping the category tells you the going delivered price, how many sellers are already on each product, and where the crowding actually is. That is a cheaper way to find out than listing and watching nothing sell.
Watching second-hand undercut your new stock
Bol lists used offers next to new ones. If you do not capture condition, a used offer quietly drags your competitive picture down and your pricing logic reacts to a product that is not really yours.
Feeding your own repricing rules
The export is a normal REST API or CSV, so it drops into whatever repricing logic you already run. Scrapewise supplies the observation; your rules decide what to do with it.
What makes bol.com harder than an ordinary storefront
The structure is the difficulty. A snapshot of the headline price tells you almost nothing useful.
Access
- A plain fetch returns a page missing the offer and seller blocks
- An ordinary browser gets a stub page with no listings in it, so runs have to go out rendered through a residential exit
- Success is high but not guaranteed on any individual run
The buy block model
- One listing, many sellers, one winner, and the winner can change several times a day
- The competing sellers sit in a separate view that has to be scraped as its own URL
- Second-hand offers appear alongside new ones and will distort a price average if you do not capture condition
- A single daily snapshot cannot show how often the block changed hands, only where it sat at that moment
Two markets, one site
- bol.com serves both the Netherlands and Belgium from one domain
- Delivery promises and availability can differ by destination country even on the same listing
- Assortment is Benelux-specific, so a product that exists on a German marketplace may simply not be listed here
Scheduling and delivery
- Daily is the fastest cadence, so treat the output as a daily observation, not a live buy block feed
- Every run is retrievable by REST API, or downloadable as CSV or Excel
- Columns stay stable between runs, so downstream jobs do not need to re-map fields
Bol.com scraping — questions
What people ask before pointing the scraper at bol.com.
Because the Retailer API is scoped to you. It authenticates as your seller account and answers questions about your listings, your orders and your stock. It does not return the competing sellers on a listing, their prices, or who currently holds the buy block, and there is no public read API that does. That is the gap a scraper fills.
Ready to pull Bol data into your stack?
Start free — or talk to our team about your exact fields, refresh cadence and volume.