Bol Product Scraper avatar

Bol Product Scraper

Pricing

from $4.86 / 1,000 results

Go to Apify Store
Bol Product Scraper

Bol Product Scraper

A bol.com product scraper that searches Netherlands and Belgium results and returns 55-field EUR price, discount, rating, seller, image, rank, and source records through three required inputs.

Pricing

from $4.86 / 1,000 results

Rating

0.0

(0)

Developer

AgentX

AgentX

Maintained by Community

Actor stats

1

Bookmarked

1

Total users

1

Monthly active users

3 days ago

Last modified

Share

Bol Product Scraper is a bol.com product scraper that searches Bol.com by keyword and returns 55 normalized product, price, seller, availability, rank, and source fields. It is built for Benelux commerce teams and catalog analysts.

Apify Users Apify Runs price capability API + MCP ready

  • Four public inputs with three required values keep keyword, country, workload, and optional route selection explicit.
  • 2 supported markets and 1 selectable platform value come directly from the runtime-backed enums.
  • 55 public Dataset fields cover identity, media, prices, promotions, fulfillment, reputation, seller context, and provenance.
  • Pay-per-event billing is $0.01000 per Actor Start plus a tiered Result event for each stored row.

The smallest useful test sets max_results to 1 with one platform; at the FREE price it costs at most $0.01540 when one product row is stored.

Why Choose Bol Product Scraper

Bol Product Scraper turns a marketplace keyword search into consistent rows that a pricing, sourcing, or catalog workflow can validate and export.

  • Source-linked observations. product_url, source_url, platform, site, country, and processed_at keep each row traceable.
  • Commercial context. price, was_price, discount_pct, promo_text, stock_status, and delivery fields support current offer review.
  • Product identity. product_id, sku, gtin, mpn, model, brand, and specifications help match rows without relying on title alone.
  • Seller and reputation context. Ratings, review counts, seller fields, and rank support prioritization while preserving nullable source values.
  • Bounded collection. A positive per-platform max_results limit and exact enums let a workflow start small before scaling.

The honest trade-off is that the country enum is intentionally limited to Belgium and the Netherlands. The Actor records current public observations rather than manufacturing historical trends or checkout guarantees.

Quick Start Guide

Start with the working prefill, inspect a small Dataset, then scale only the market and result count your workflow needs.

1. Configure

Open the input form and supply keyword, country, and max_results. The platforms array is optional; fixed editions accept their one platform or an empty array, while the universal edition can select a subset of eligible routes.

2. Run

Use the tested scenario below or set max_results to 1 for the lowest-risk check. The limit applies per selected platform and has no artificial 10,000-result schema cap.

3. Collect

Open the default Dataset, verify title, price, currency, platform, and source_url, then export or connect the Dataset to your downstream system.

Input Parameters

Bol Product Scraper has four public inputs in schema order: three required values and one optional platform array.

ParameterTypeRequiredDescriptionTested example
keywordstringYesProduct phrase, brand, or model to search on Bol.com."lego"
countrystringYesStorefront country for Bol.com; this edition supports 2 markets."Belgium"
max_resultsintegerYesMaximum product records returned per selected platform; enter any integer greater than zero.11
platformsarrayNoOptional platform selection fixed to Bol.com; choose it or leave the list empty.["Bol.com"]
{
"keyword": "lego",
"country": "Belgium",
"max_results": 11,
"platforms": [
"Bol.com"
]
}

This prefill is a live, bounded example that returned 11 rows. max_results is a ceiling per selected platform, not a guarantee that a source will have that many usable matches.

Output Data Schema

Each Dataset row is one normalized product observation with 55 public fields and source-dependent nullable values.

GroupPublic fields
Mediaimage_url, image_urls
Identity and catalogtitle, brand, badges, category, breadcrumbs, description, features, product_id, sku, gtin, mpn, model, specifications, manufacturer, origin, energy_class, included, condition, release_date, variants
Price and promotionprice, was_price, unit_price, currency, price_text, discount_pct, discount_text, promo_text, installment_text
Availability and fulfillmentstock_status, stock_text, sales_text, shipping_text, shipping_cost, delivery_text, pickup_text, return_text, return_days, warranty_text
Reputation and sellerrating, review_count, seller, seller_url, seller_score
Provenanceplatform, site, country, product_url, source_url, rank, is_sponsored, processor, processed_at

The item below is an abbreviated, illustrative 13-field slice of the shared scenario; the effective Dataset schema contains 55 fields:

{
"title": "Glazen vitrinekast met LED-verlichting en slot – 5 planken vitrinekast van gehard glas – grote display kast / wandvitrine voor verzamelobjecten, LEGO en decoratie – Wit",
"brand": "MEXUS",
"price": 257.09,
"currency": "EUR",
"stock_status": "in_stock",
"rating": null,
"review_count": null,
"seller": "Mavtei",
"platform": "bol",
"country": "BE",
"rank": 1,
"is_sponsored": false,
"processed_at": "2026-08-11T04:14:15+00:00"
}

Use identifiers and URLs to match products before deduplicating. Use rank as collected search position, not as a universal relevance score. Empty values mean the source did not expose that attribute in the collected context. Apify can export the Dataset as JSON, CSV, Excel, XML, RSS, and other supported formats.

Integration Examples

Integrate agentx/bol-product-scraper by Actor ID qSDgjQniFvlx4XARW through API v2, official clients, automation tools, or Apify's hosted MCP server.

Actor ID

qSDgjQniFvlx4XARW

The stable name form is agentx/bol-product-scraper.

HTTP

curl -X POST 'https://api.apify.com/v2/acts/qSDgjQniFvlx4XARW/run-sync-get-dataset-items?token=$APIFY_TOKEN' \
-H 'Content-Type: application/json' \
-d '{"keyword": "lego", "country": "Belgium", "max_results": 11, "platforms": ["Bol.com"]}'

Python

from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("qSDgjQniFvlx4XARW").call(run_input={'keyword': 'lego', 'country': 'Belgium', 'max_results': 11, 'platforms': ['Bol.com']})
items = list(client.dataset(run["defaultDatasetId"]).iterate_items())
print(items)

JavaScript

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });
const run = await client.actor('qSDgjQniFvlx4XARW').call({
"keyword": "lego",
"country": "Belgium",
"max_results": 11,
"platforms": [
"Bol.com"
]
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

MCP

Apify's hosted MCP server uses Streamable HTTP. Configure it with a bearer token, then ask the call-actor tool to run the name form and pass the same input:

{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com?tools=actors",
"headers": {
"Authorization": "Bearer <APIFY_TOKEN>"
}
}
}
}

Use Actor agentx/bol-product-scraper with this input:

{
"keyword": "lego",
"country": "Belgium",
"max_results": 11,
"platforms": [
"Bol.com"
]
}

Make.com

Use an HTTP module with POST URL https://api.apify.com/v2/acts/qSDgjQniFvlx4XARW/run-sync-get-dataset-items, add the bearer token securely, set Content-Type: application/json, and paste the shared input body. Route each returned row to the next module.

n8n

Use an HTTP Request node with Actor ID qSDgjQniFvlx4XARW, POST the same JSON input, keep credentials in n8n's credential store, and pass the returned array to database, spreadsheet, or alert nodes.

The live API page carries generated endpoint and SDK references. The official Apify MCP guide documents Streamable HTTP and bearer-token or OAuth authentication.

Pricing

At the FREE tier, Bol Product Scraper charges $0.00540 per Result row plus $0.01000 per Actor Start; a one-row run therefore costs at most $0.01540.

EventPlan tierUnit priceBilling unit
Actor StartAll$0.01000Once when the run starts
ResultFree$0.00540Each row stored in the default Dataset
ResultBronze$0.00486Each row stored in the default Dataset
ResultSilver$0.00432Each row stored in the default Dataset
ResultGold$0.00405Each row stored in the default Dataset
ResultPlatinum$0.00405Each row stored in the default Dataset
ResultDiamond$0.00405Each row stored in the default Dataset

The smallest calculation is $0.01000 + 1 × $0.00540 = $0.01540. A 11-row, one-platform FREE-tier run is $0.01000 + 11 × $0.00540 = $0.06940. An empty Dataset incurs Actor Start but no Result event. Memory starts at 256 MB; the start event is still a single $0.01000 charge at that size. Check the Pricing page before a large run because prices can change.

Use Cases

Use Bol Product Scraper for workflows where current, source-linked product rows are more useful than manual copy-and-paste research.

  • Benelux Price Research. Combine title, price, currency, seller, rating, rank, and source_url for Benelux price research.
  • Seller Comparison. Combine title, price, currency, seller, rating, rank, and source_url for seller comparison.
  • Rating Snapshots. Combine title, price, currency, seller, rating, rank, and source_url for rating snapshots.
  • Promotion Discovery. Combine title, price, currency, seller, rating, rank, and source_url for promotion discovery.
  • Catalog Enrichment. Combine title, price, currency, seller, rating, rank, and source_url for catalog enrichment.

The strongest fit is compare Bluetooth-speaker offers in Belgium. Store repeated Datasets in your own database when the workflow needs trends, deltas, or alert rules.

Alternatives

Choose Bol Product Scraper when you want normalized Dataset rows and Apify delivery; choose the manual or first-party route when the task is a single purchase decision.

  • Manual marketplace search is efficient for checking one product once and confirming the final checkout context. It becomes error-prone when rows, countries, sellers, or repeated checks multiply.
  • The marketplace's official site is authoritative for account features, purchases, final shipping, and customer service. bol storefront shows that the Netherlands and Belgium storefronts expose live catalog search, offers, sellers, ratings, and category context.
  • Separate integrations offer maximum control when a team already owns credentials, schemas, retries, and monitoring for each retailer. This Actor reduces that surface to one four-input contract and one 55-field Dataset shape.
  • A managed price-history service is preferable when historical charts and alerts already exist there. This Actor supplies current observations for systems that own their storage and comparison logic.

Choose something else for checkout automation, private account data, guaranteed local inventory, completed-sale valuation, or a promise that every source field is populated.

Limits and Troubleshooting

Most limits come from live marketplace search, regional catalogs, and product matching rather than the Dataset format.

  • No rows → broaden the keyword, confirm the country enum, select one compatible platform, and retry with max_results: 1.
  • Fewer rows than requested → the result limit is a maximum; only usable source rows are stored.
  • Near-duplicate titles → offers, variants, bundles, accessories, and sellers can overlap. Match on IDs, model, URL, quantity, and seller context.
  • Price or availability changed → the row is a point-in-time observation. Follow the source URL and run a new snapshot.
  • Nullable fields → the 55-field union supports 23 routes, but each route exposes a different subset of identifiers, delivery terms, returns, and ratings.
  • Slow multi-route run → reduce max_results and select only the platform needed for the decision.

Open an Issue with the run ID, exact input, expected behavior, and one affected source URL. Never include API tokens, account credentials, or private customer data.

Trust and Reliability

Bol Product Scraper uses Apify's run, Dataset, scheduling, API, integration, and monitoring surfaces while keeping its public contract inspectable.

  • The input schema lists exactly four properties, three required inputs, 2 country values, and 1 platform value.
  • The Dataset schema documents exactly 55 public fields.
  • Pricing declares Actor Start and Result as the only charged events.
  • Every local release example uses source-visible values; unavailable fields remain empty instead of being guessed.

Reliability still depends on the source route and the specificity of the keyword. A successful run does not turn a marketplace observation into a stock or price guarantee.

Public data scope. Use the Actor for public product and offer observations that you are permitted to collect and process.

Platform terms. Review the marketplace's terms and the Apify General Terms for your use case, jurisdiction, retention, and redistribution plan.

Privacy and decisions. Do not use the Actor to collect private account information or make automated decisions about people. Minimize stored data and honor applicable legal obligations.

Frequently Asked Questions

These answers cover the most common fit, billing, monitoring, and data-quality questions for Bol Product Scraper.

How do I scrape bol.com products by keyword?

Run agentx/bol-product-scraper with a specific keyword, allowed country, positive max_results, and the matching platforms value. Keep repeated Datasets if you need changes over time.

Can I use a bol.com product search data api?

Yes. The Actor exposes its four-input contract through API v2 and MCP, and it returns 55 normalized fields without requiring a separate marketplace API key from the user.

Is there a free product scraper API?

There is no permanent free promise. Apify accounts may include credits, but the FREE subscription tier still bills $0.01000 per Actor Start and $0.00540 per stored Result.

Can I schedule runs to monitor product prices over time?

Yes. Schedule a bounded input on Apify and persist each Dataset in your own system. The Actor does not host a historical chart or decide when to alert.

Does max_results cap the whole run?

No. It caps rows per selected platform. Universal multi-platform runs can store more rows than that single number, while fixed editions use one platform route.

Why are identifiers or fulfillment fields empty?

Because sources expose different attributes. Empty fields preserve the difference between unavailable data and an invented value.

Does the Dataset guarantee the lowest price or local availability?

No. Seller offers, location, promotions, search relevance, and inventory change. Confirm important decisions on the source page linked by the row.

AgentX currently has 77 Actor repositories; this section lists the three closest shopping choices first, followed by the complete generated catalog.

Closest to this Actor:

Business and Market Intelligence

Jobs and Hiring

Social Media

Video, Transcripts and Downloads

E-Commerce and Retail

Classifieds and Automotive

Real Estate

Support and Community

Ask about compare Bluetooth-speaker offers in Belgium in the AgentX community on Telegram; for a reproducible bug, open an Issue with the run ID and the exact input.

AgentX is an Arcyton brand — arcyton.com.

Last Updated: August 10, 2026