Dataspryva

Bol.com Product Search, Price & Stock Extractor

Searches Bol.com by keyword, category, EAN, or promotions page and returns price, rating, stock status, and seller for each product, with no login required.

Input schema

Input fields, types, required flags, descriptions, defaults, and prefills come from the published definition. Prefill examples are distinct from defaults.

FieldTypeRequiredDescription
modestringrequiredWhat to collect from Bol.com.
searchQueriesarrayoptionalOne or more keywords to search for (mode=search).
productUrlsarrayoptionalBol.com product links, EAN-8/EAN-13 barcodes, or numeric product IDs (mode=productDetails).
Show all input fields
FieldTypeRequiredDescription
modestringrequiredWhat to collect from Bol.com.
searchQueriesarrayoptionalOne or more keywords to search for (mode=search).
productUrlsarrayoptionalBol.com product links, EAN-8/EAN-13 barcodes, or numeric product IDs (mode=productDetails).
categoryUrlsarrayoptionalBol.com listing links or numeric category IDs (mode=categoryBrowse).
marketplacestringoptionalWhich Bol.com shop to use for keyword searches and numeric category IDs.
languagestringoptionalShop language for keyword searches and numeric category IDs.
sortBystringoptionalResult ordering for search and browsing. Price sorts use the emitted numeric price; RATING_ASC follows Bol's rating score, not the visible average.
minPriceintegeroptionalOnly keep products at or above this price.
maxPriceintegeroptionalOnly keep products at or below this price.
minRatingnumberoptionalOnly keep products rated at or above this value (0-5).
conditionstringoptionalOnly keep products with this offer condition.
inStockOnlybooleanoptionalOnly keep products that are currently in stock.
includeSponsoredbooleanoptionalKeep sponsored (advertised) products in search and browse results.
includeDetailsbooleanoptionalVisit each product page to add EAN, full description, specifications, all images, rating distribution, and recent reviews. Slower, but more complete.
includeOffersbooleanoptionalAdd the first page of seller offers (price, shipping, condition, seller rating) for each product. Bol.com paginates offers; only the first page is returned.
maxItemsintegeroptionalMaximum number of products to return across the whole run.
maxPagesintegeroptionalPage limit per query or listing. 0 uses the source's own page limit.

Download the published input schema

View complete JSON
{
  "description": "Search, browse, look up products, or read deals from Bol.com in the Netherlands or Belgium.",
  "properties": {
    "categoryUrls": {
      "default": [],
      "description": "Bol.com listing links or numeric category IDs (mode=categoryBrowse).",
      "editor": "stringList",
      "prefill": [],
      "title": "Category, brand, series, or deals URLs",
      "type": "array"
    },
    "condition": {
      "default": "any",
      "description": "Only keep products with this offer condition.",
      "editor": "select",
      "enum": [
        "any",
        "new",
        "refurbished",
        "secondhand"
      ],
      "enumTitles": [
        "Any condition",
        "New",
        "Refurbished",
        "Second-hand"
      ],
      "prefill": "any",
      "title": "Condition",
      "type": "string"
    },
    "inStockOnly": {
      "default": false,
      "description": "Only keep products that are currently in stock.",
      "prefill": false,
      "title": "In stock only",
      "type": "boolean"
    },
    "includeDetails": {
      "default": false,
      "description": "Visit each product page to add EAN, full description, specifications, all images, rating distribution, and recent reviews. Slower, but more complete.",
      "prefill": false,
      "title": "Fetch product details",
      "type": "boolean"
    },
    "includeOffers": {
      "default": false,
      "description": "Add the first page of seller offers (price, shipping, condition, seller rating) for each product. Bol.com paginates offers; only the first page is returned.",
      "prefill": false,
      "title": "Fetch seller offers",
      "type": "boolean"
    },
    "includeSponsored": {
      "default": true,
      "description": "Keep sponsored (advertised) products in search and browse results.",
      "prefill": true,
      "title": "Include sponsored products",
      "type": "boolean"
    },
    "language": {
      "default": "nl",
      "description": "Shop language for keyword searches and numeric category IDs.",
      "editor": "select",
      "enum": [
        "nl",
        "fr"
      ],
      "enumTitles": [
        "Dutch",
        "French"
      ],
      "prefill": "nl",
      "title": "Language",
      "type": "string"
    },
    "marketplace": {
      "default": "nl",
      "description": "Which Bol.com shop to use for keyword searches and numeric category IDs.",
      "editor": "select",
      "enum": [
        "nl",
        "be"
      ],
      "enumTitles": [
        "Netherlands (bol.com/nl)",
        "Belgium (bol.com/be)"
      ],
      "prefill": "nl",
      "title": "Marketplace",
      "type": "string"
    },
    "maxItems": {
      "default": 20,
      "description": "Maximum number of products to return across the whole run.",
      "maximum": 10000,
      "minimum": 1,
      "prefill": 1,
      "title": "Max products",
      "type": "integer"
    },
    "maxPages": {
      "default": 0,
      "description": "Page limit per query or listing. 0 uses the source's own page limit.",
      "maximum": 500,
      "minimum": 0,
      "prefill": 0,
      "title": "Max pages per source",
      "type": "integer"
    },
    "maxPrice": {
      "description": "Only keep products at or below this price.",
      "minimum": 0,
      "title": "Maximum price (EUR)",
      "type": "integer"
    },
    "minPrice": {
      "description": "Only keep products at or above this price.",
      "minimum": 0,
      "title": "Minimum price (EUR)",
      "type": "integer"
    },
    "minRating": {
      "description": "Only keep products rated at or above this value (0-5).",
      "maximum": 5,
      "minimum": 0,
      "title": "Minimum rating",
      "type": "number"
    },
    "mode": {
      "default": "search",
      "description": "What to collect from Bol.com.",
      "editor": "select",
      "enum": [
        "search",
        "productDetails",
        "categoryBrowse",
        "promotions"
      ],
      "enumTitles": [
        "Search products by keyword",
        "Look up products by URL, EAN, or product ID",
        "Browse a category, brand, series, or deals page",
        "Browse current promotions"
      ],
      "prefill": "search",
      "title": "Mode",
      "type": "string"
    },
    "productUrls": {
      "default": [],
      "description": "Bol.com product links, EAN-8/EAN-13 barcodes, or numeric product IDs (mode=productDetails).",
      "editor": "stringList",
      "prefill": [],
      "title": "Product URLs, EANs, or product IDs",
      "type": "array"
    },
    "searchQueries": {
      "default": [
        "laptop"
      ],
      "description": "One or more keywords to search for (mode=search).",
      "editor": "stringList",
      "prefill": [
        "laptop"
      ],
      "title": "Search queries",
      "type": "array"
    },
    "sortBy": {
      "default": "RELEVANCE",
      "description": "Result ordering for search and browsing. Price sorts use the emitted numeric price; RATING_ASC follows Bol's rating score, not the visible average.",
      "editor": "select",
      "enum": [
        "RELEVANCE",
        "POPULARITY",
        "PRICE_ASC",
        "PRICE_DESC",
        "RATING_ASC",
        "NEW",
        "WISHLIST"
      ],
      "enumTitles": [
        "Relevance",
        "Popularity",
        "Price: low to high",
        "Price: high to low",
        "Best rated (Bol score)",
        "Newest",
        "Most wanted"
      ],
      "prefill": "RELEVANCE",
      "title": "Sort by",
      "type": "string"
    }
  },
  "required": [
    "mode"
  ],
  "schemaVersion": 1,
  "title": "Bol.com Product Search, Price & Stock Extractor Input",
  "type": "object"
}

Output schema

Published result links and storage locations. This schema is not an exhaustive contract for every field in a dataset record.

FieldTypeRequiredDescription
productsstringoptionalDataset containing all scraped Bol.com products.

Download the published output schema

View complete JSON
{
  "actorOutputSchemaVersion": 1,
  "description": "Bol.com products with current price, list price, availability, seller, EAN, rating, images, specifications, reviews, and optional seller offers.",
  "properties": {
    "products": {
      "description": "Dataset containing all scraped Bol.com products.",
      "template": "{{links.apiDefaultDatasetUrl}}/items",
      "title": "Bol.com products",
      "type": "string"
    }
  },
  "title": "Bol.com Product Search, Price & Stock Extractor Output"
}

Dataset schema

Published dataset views and any declared field definitions. A view can select only a subset of the returned record fields.

Download the published dataset schema

View complete JSON
{
  "actorSpecification": 1,
  "views": {
    "overview": {
      "display": {
        "component": "table",
        "properties": {}
      },
      "title": "Bol.com Products",
      "transformation": {
        "fields": [
          "title",
          "brand",
          "price",
          "rating",
          "reviewCount",
          "inStock",
          "productUrl"
        ]
      }
    }
  }
}

Key-value schema

Published key-value store definitions, when provided by this build.

This definition is not present in the default published build. See the published README for available documentation.

Published README

Read the full published documentation

Bol.com Product Search, Price & Stock Extractor

Collect live product data from Bol.com, the largest online retailer in the Netherlands and Belgium. Search by keyword, browse a category or brand, open a product by URL, EAN barcode, or product ID, or read the current promotions feed. Every record is real data from the public shop — prices, list prices, stock, sellers, ratings, images, and optional specifications and seller offers. No login, API key, or proxy setup is needed.

What this actor does

  • Search one or more keywords with price, rating, condition, stock, and sponsored-product filters.
  • Browse category, brand, series, or deals pages, with deep pagination.
  • Look up products by direct URL, EAN-8/EAN-13, or Bol.com product ID.
  • Read promotions from the deals hub and its category deals pages.
  • Enrich on demand: add EAN, full description, specifications, all images, rating distribution, recent reviews, and the first page of seller offers.
  • Supports the Netherlands and Belgium marketplaces in Dutch and French.
  • Empty fields are omitted from each record rather than written as null.

Output per product

  • productId — Bol.com product identifier
  • ean — EAN/GTIN barcode when the product page publishes one (details mode)
  • title, shortDescription, description
  • brand
  • price, currency
  • listPrice — reference price when Bol.com shows one above the current price
  • discountAmount, discountPercent
  • rating, reviewCount
  • ratingDistribution — star counts when details are fetched
  • recentReviews — up to six recent reviews when details are fetched
  • imageUrl, images[]
  • productUrl
  • seller, sellerId, sellerRating, soldByBol
  • inStock, availability, condition
  • delivery, deliveryDate, isScarce
  • isSponsored, sponsor
  • promotionLabels[]
  • categories[]
  • specifications — grouped key/value specifications when details are fetched
  • offers[], offerCount — first page of seller offers, and that page's count, when offers are enabled
  • marketplace, language, sourceQuery
  • scrapedAt — collection timestamp

Input

Field Type Default Description
mode string (select) search search, productDetails, categoryBrowse, or promotions.
searchQueries array ["laptop"] Keywords for search.
productUrls array [] Product URLs, EANs, or product IDs for productDetails.
categoryUrls array [] Category, brand, series, or deals URLs, or category IDs, for categoryBrowse.
marketplace string (select) nl nl or be.
language string (select) nl nl or fr.
sortBy string (select) RELEVANCE RELEVANCE, POPULARITY, PRICE_ASC, PRICE_DESC, RATING_ASC, NEW, or WISHLIST. Price sorts use the emitted numeric price; RATING_ASC follows Bol's rating score.
minPrice integer – Minimum price in EUR.
maxPrice integer – Maximum price in EUR.
minRating number – Minimum average rating, 0-5.
condition string (select) any any, new, refurbished, or secondhand.
inStockOnly boolean false Keep only products currently in stock.
includeSponsored boolean true Keep sponsored search results.
includeDetails boolean false Fetch product pages for EAN, description, specifications, images, and reviews.
includeOffers boolean false Fetch the first page of seller offers for each product.
maxItems integer 20 Overall product cap (1-10,000).
maxPages integer 0 Page limit per query/listing; 0 uses the source's own limit.

Example: search with filters

{
  "mode": "search",
  "searchQueries": ["koptelefoon", "laptop"],
  "marketplace": "nl",
  "language": "nl",
  "minPrice": 50,
  "maxPrice": 300,
  "minRating": 4,
  "condition": "new",
  "inStockOnly": true,
  "sortBy": "PRICE_ASC",
  "includeDetails": true,
  "maxItems": 40
}

Example: browse a category or brand

{
  "mode": "categoryBrowse",
  "categoryUrls": [
    "https://www.bol.com/nl/nl/l/laptops/4770/",
    "https://www.bol.com/be/nl/pb/hp/4997239/"
  ],
  "marketplace": "be",
  "language": "nl",
  "sortBy": "POPULARITY",
  "maxItems": 100
}

Example: product lookup by EAN or URL

{
  "mode": "productDetails",
  "productUrls": ["0199251730818", "https://www.bol.com/nl/nl/p/hp-omnibook-5-16-ba1751nd-intel-core-i5-i5-1334u-laptop-406-cm-2k-16-gb-lpddr5x-sdram-1-tb-ssd-wi-fi-6-windows-11-home-zilver/9300000230842700/"],
  "includeOffers": true,
  "maxItems": 10
}

Example: current promotions

{
  "mode": "promotions",
  "marketplace": "nl",
  "language": "nl",
  "maxItems": 30
}

Use cases

  • Price monitoring — track current and reference prices for a product set.
  • Assortment research — pull a category, brand, or search niche into a clean dataset.
  • EAN catalog enrichment — resolve barcodes to titles, brands, images, and specifications.
  • Stock and seller tracking — see availability, delivery promises, and who is selling each item.
  • Promotion analysis — collect the current deals feed and its category offers.

FAQ

Where does the data come from?

It is read from Bol.com's publicly accessible product, search, category, and deals pages at run time. The actor is not affiliated with Bol.com.

Can I use it for both the Netherlands and Belgium?

Yes. Set marketplace to nl or be. Both Dutch and French shop languages are supported.

Why is ean missing from my search results?

Search result cards do not publish barcodes. Enable includeDetails to visit each product page, where the EAN is read when Bol.com publishes it.

How many products can one search return?

Bol.com caps a single keyword result list at 10 pages (typically 24-30 products per page, about 250-270 products). For larger runs, the actor automatically splits broad searches into narrower category slices; a category or brand page also goes much deeper.

Why are some fields absent from a record?

Bol.com does not publish every field for every product — for example, marketplace items may have no EAN or specifications, and new products may have no reviews yet. Absent values are omitted instead of written as null.

How are results sorted?

RELEVANCE, POPULARITY, NEW, and WISHLIST follow Bol.com's own ordering. RATING_ASC follows Bol.com's rating score, which can differ from the visible average rating. PRICE_ASC and PRICE_DESC are sorted on the emitted numeric price after duplicate products are removed.

Are sponsored products included?

Yes by default, with isSponsored and sponsor set. Turn includeSponsored off to remove them.

Are all seller offers returned?

Bol.com paginates its offers page. The actor returns the first page of offers for each product (currently up to 10) and offerCount is the count on that page, not the total across all pages.

How current are prices and stock?

Each run reads the live pages, so prices, delivery promises, and availability reflect the moment of collection.

Do I need a proxy or an account?

No. The actor connects automatically; you do not configure a proxy, cookie, login, or API key.

Why is the full review list not included?

Bol.com's product pages expose a rating summary and a short sample of recent reviews. The actor returns the rating distribution and up to six recent reviews when details are enabled.

Python quickstart

Use a schema-derived input and the Python standard library to start a run. An Apify account and token are required for execution.

Open the step-by-step Python guide →

Source build bnIPi7NeXWQiwtRsR. Documentation is regenerated from the default published build; private drafts are not included.