bol.com product data: EANs, seller offers & NL/BE prices
Compare bol.com products and retailer offers by EAN, country and condition. Understand price, delivery, OAuth API scope, affiliate terms and variant IDs.
Start with EAN, bol Product ID, and the product URL
An EAN identifies a catalog product; it does not identify one retailer’s offer. bol’s Marketing Catalog API documents a 13-digit EAN, a separate `bolProductId` (BPID), product URLs and variant relationships. Preserve EANs as text so leading zeroes survive, and retain the country and language used for each page or response.
Scroll to compare →
| Reference | What it identifies | How to preserve it |
|---|---|---|
| EAN | A 13-digit catalog product reference used by bol APIs. | Store it as text, including leading zeroes; do not attach one retailer’s offer to the EAN alone. |
| bol Product ID (BPID) | bol’s catalog product identifier, returned separately from the EAN. | Keep the API field name and value beside the EAN; do not substitute it for an offerId. |
| Product URL | The product page for a selected bol country and language. | Save the exact URL and market context; one product page can lead to multiple offers. |
| Variant relationship | The Marketing Catalog API groups related products by an attribute such as color or shoe size. | Keep the returned group and associated EANs; do not invent a variant key from title text. |
One EAN can return several retailer offers
The bol Retailer API’s competing-offers endpoint retrieves active offers across retailers for a specified EAN. Each result remains an offer record with its own retailer, market, condition and fulfillment details. bol documents OAuth2 authentication for the Retailer API, so this operation is not anonymous public catalog search.
Scroll to compare →
| Offer field | What bol documents | Comparison rule |
|---|---|---|
| offerId | The identifier associated with one particular offer. | Keep it on the offer row; it is not the catalog EAN or BPID. |
| retailerId | The retailer reference for that offer. | Retain it when comparing sellers; an EAN may relate to several retailer IDs. |
| countryCode | The country where the offer is published, such as NL or BE. | Treat each market as a separate observation. |
| condition | The stated condition of the offered item. | Do not merge new, second-hand and refurbished offers as equivalent. |
| price and fulfillment | The offer’s selling price and fulfillment method. | Keep both with the offer and country; neither alone defines the best offer. |
| bestOffer | Whether bol identifies the offer as best for the specified product and country. | Keep the country and response time; bol considers several offer factors, not price alone. |
Compare price and delivery within the same country
The `bestOffer` flag is country-specific: the Netherlands and Belgium can have different best offers for one EAN. bol says its calculation considers country, condition, fulfillment method, ultimate order time, and product price before and after discount. Save those fields and the response time together; do not merge NL and BE values or combine API responses as if they were synchronized.
Scroll to compare →
| Observation | Record with the offer | Do not infer |
|---|---|---|
| Market and price | Country code, returned price and currency when supplied, plus capture time. | Do not compare NL and BE values as one market or convert without an identified rate and date. |
| Fulfillment | The exact `fulfilmentMethod` value returned for that offer. | A fulfillment label does not identify retailer ownership or exact stock quantity. |
| Order cutoff | `ultimateOrderTime` where returned. | This cutoff applies to the documented offer and delivery context; it is not a general same-day promise. |
| Delivery window | `minDeliveryDate` and `maxDeliveryDate`, where returned, with observation time. | These are returned date bounds, not a guarantee for a later order or another location. |
| Best-offer state | `bestOffer`, the country and all relevant fields used in the response. | “Best” is not a synonym for cheapest; bol lists condition, fulfillment, cutoff and before/after-discount price factors. |
Keep second-hand and refurbished condition grades distinct
The competing-offers endpoint exposes condition values for each offer. bol documents a default mapping that can make refurbished items look like second-hand grades; preserve the original condition and whether the refurbished-condition query option was enabled.
Scroll to compare →
| Condition evidence | Documented treatment | Safe comparison |
|---|---|---|
| NEW | A new-product offer. | Compare with other new offers unless the analysis explicitly includes multiple conditions. |
| Second-hand grades | The documented values include BAD, MODERATE, REASONABLE, GOOD and AS_NEW. | Retain bol’s exact value; do not flatten grades into a generic used condition. |
| Refurbished by default | Refurbished grades A/B/C map to AS_NEW/GOOD/REASONABLE when explicit refurbished conditions are not requested. | This default can obscure refurbished vs. second-hand; preserve the mapping context. |
| include-refurbished-conditions=true | The response can use REFURBISHED_A, REFURBISHED_B and REFURBISHED_C. | Record the query parameter state before comparing grade-level offers. |
Retailer API, catalog content terms, and robots rules are separate
The Retailer API and Marketing Catalog API serve different access contexts. The current release schedule lists Retailer API v10 as Live and v11 as Alpha. The Marketing Catalog documentation describes accepted affiliate partners and OAuth2, but its 1.3.0 reference sits beside a lifecycle page that still lists an end-of-life entry of “> 1 July 2025” with no newer major version. Confirm Catalog API service status with bol before relying on it.
Scroll to compare →
| Source | What its official material says | Boundary |
|---|---|---|
| Retailer API | OAuth2 Retailer API; the competing-offers endpoint returns active retailer offers for one EAN. v10 is Live and v11 Alpha on the 2026-09-30 release schedule. | This is an authenticated retailer API operation, not an anonymous feed. |
| Marketing Catalog API | Catalog product, EAN/BPID, variant and optional best-offer fields for registered Affiliate Program partners using OAuth2. | Its reference shows v1.3.0 while the lifecycle page’s end-of-life entry is dated in the past; the current service status is unresolved. |
| Affiliate channel conditions | Terms updated 2026-02-26 list spider/stock-alert sites and sites showing bol items without added value among channels bol may reject or remove. | This clause addresses Affiliate Program channel eligibility; do not reframe it as the Retailer API rule. |
| API-user content terms | The separate API-user conditions license bol Content only to generate traffic to bol. | Do not infer that an affiliate or API credential permits competitor-price or stock-alert reuse. |
| robots.txt | Checked 2026-09-30: the general user-agent group starts with `Allow: /`, followed by specific exclusions and NL/BE/fr-BE sitemap paths. | A crawler directive does not grant credentials or permission to reuse catalog content. |
Content reviewed 2026-09-29.