E-Commerce · Beta
Bol.com
API integration
Ship E-Commerce features without building the integration. Full Bol.com API access via Proxy and 70+ MCP-ready tools for AI agents — extend models and mappings to fit your product.
Built for specific customer use cases. Issues are resolved quickly.
Talk to usUse Cases
Why integrate with Bol.com
Common scenarios for SaaS companies building Bol.com integrations for their customers.
Multichannel Catalog & Feed Management
Let sellers push and maintain their product offers on Bol.com from your feed management platform, with async price and stock updates confirmed via process status polling so users always know when changes are live.
Order & Shipment Automation for OMS/ERP
Pull open FBR orders in near real-time via subscriptions, generate Bol.com shipping labels, and push back tax invoices — giving your OMS or ERP users a fully automated Bol.com fulfillment lane.
Margin-Aware Dynamic Repricing
Combine competitor offer data and Bol's commission structures to reprice profitably, then execute bulk price updates without your users ever leaving your repricing tool.
FBB Replenishment Planning
Use Bol's sales forecasts and inventory data to auto-draft replenishment orders, book pickup slots, and generate load carrier and product labels — turning your inventory SaaS into a hands-off FBB planner.
Unified Returns & Support Workflows
Surface Bol.com returns inside your helpdesk so agents can accept or reject RMAs without switching to the seller portal, keeping the customer conversation and resolution in one place.
What You Can Build
Ship these features with Truto + Bol.com
Concrete product features your team can ship faster by leveraging Truto’s Bol.com integration instead of building from scratch.
Async Offer Publishing with Status Tracking
Create, update, and delete Bol.com offers and surface real-time publish status by polling the shared process status endpoints so users see confirmed results, not queued promises.
Bulk Price & Stock Sync Engine
Push large-scale price and stock changes through Bol's bulk update endpoints and expose per-item success states back into your UI.
Webhook-Driven Order Ingestion
Provision Bol.com subscriptions on behalf of your users to receive push notifications for new orders, returns, and shipments instead of polling.
Native Shipping Label Purchase Flow
Evaluate delivery options, buy Bol.com shipping labels, and retrieve the printable PDF directly inside your fulfillment workflow.
Commission-Aware Margin Calculator
Query Bol's commission structures per EAN and price point to display true net margin before a user confirms a repricing action.
FBB Replenishment Orchestrator
Create replenishment orders, look up delivery dates, book pickup time slots, and generate product and load carrier labels end-to-end from your app.
SuperAI
Bol.com AI agent tools
Comprehensive AI agent toolset with fine-grained control. Integrates with MCP clients like Cursor and Claude, or frameworks like LangChain.
bol_com_retailer_commissions_bulk_get
Get bol commissions and possible reductions for many products in bulk by EAN, price, and optionally condition. Returns: id, resources, url, subscriptionType. Requires a request body with the product EANs and prices.
bol_com_retailer_commissions_bulk_list
Get commission rates for multiple EANs in bulk (BETA). Returns a multi-status result with id, resources, url, and subscriptionType, mixing successful and unsuccessful per-EAN outcomes. Requires a request body listing the EANs to query.
list_all_bol_com_retailer_commissions
Get the bol commission and possible reductions for a single product by EAN at a given price. Returns a commission result with id and vendor-defined commission attributes. Required: ean, unit-price.
list_all_bol_com_insights_offers
Get offer insights for a bol offer: the product visits and buy box percentage grouped over a historical period. Returns the OfferInsights response (id, attributes; the full field shape is defined by the upstream OfferInsights schema). Required: offer-id, period, number-of-periods, name. Maximum periods back in time: 730 for DAY, 104 for WEEK, 24 for MONTH.
list_all_bol_com_performance_indicators
Get the weekly measurements for your bol performance indicators. Returns the PerformanceIndicators response for the requested indicator, year, and week, with fields defined by bol's Retailer API schema. Required: name (indicator type such as CANCELLATIONS or REVIEWS), year, week (ISO-8601). Current-week measurements can change heavily during the week.
list_all_bol_com_insights_product_ranks
List product ranks on bol for a specific product EAN and date. Returns the ProductRanks payload (attributes) with the product's rank entries for the requested search type. Required: ean, date. The date must be in the past, no more than three months back and up to yesterday.
list_all_bol_com_insights_sales_forecasts
Get the bol sales forecast estimating expected sales on the total bol.com platform for the requested number of weeks ahead. Returns the sales forecast response object defined by the bol SalesForecastResponse schema. Required: offer-id, weeks-ahead (between 1 and 12).
list_all_bol_com_insights_search_terms
Get search terms — retrieve the search volume for a specified search term on bol.com over a chosen period range, to optimize product content, spot assortment opportunities, and analyze trends. Returns the search volume data for the requested term and periods. Requires search-term, period (DAY, WEEK, or MONTH), and number-of-periods; pass related-search-terms to also include related search terms.
list_all_bol_com_retailer_inventories
List your fulfilment by bol.com (FBB/LVB) inventory in a paginated feed; this endpoint does not cover your own stock. Returns inventory records including the regularStock details for each item. Page size is 50.
list_all_bol_com_retailer_invoices
List bol retailer invoices, by default from the past 4 weeks, or supply an optional date range of at most 31 days using period-start-date and period-end-date. Returns the raw invoice list document for download; available media types are listed per invoice in the document.
get_single_bol_com_retailer_invoice_by_id
Download a single bol retailer invoice by id, returned in the media format offered for that invoice (JSON or PDF). The available media types differ per invoice and are listed in the invoice list response. Required: id.
get_single_bol_com_invoice_specification_by_id
Get the specification for a bol invoice by id, including a paginated list of its transactions. Returns the specification file with content-type-specific fields, delivered as JSON or XLSX depending on the media types listed for the invoice. Required: id.
create_a_bol_com_retailer_offer
Create a new offer in bol for an EAN and add it to the retailer's catalog. Requires ean, condition (name), pricing.bundlePrices (one entry with quantity 1), stock (amount, managedByRetailer) and fulfilment (method FBR or FBB; deliveryCode for FBR). Processing is asynchronous: returns a 202 process status with processStatusId, entityId, eventType, description, status, createTimestamp and links; poll the process status to confirm the offer was created and published. Required: ean, condition, pricing, stock, fulfilment.
get_single_bol_com_retailer_offer_by_id
Retrieve a single bol offer by its offer id. Returns: offerId, ean, reference, onHoldByRetailer, economicOperatorId, unknownProductTitle, pricing (bundlePrices with quantity and unitPrice), stock (amount, correctedStock, managedByRetailer), fulfilment (method, deliveryCode, profileId), store (productTitle, visible countries), condition (name, category, comment) and notPublishableReasons. Required: id.
update_a_bol_com_retailer_offer_by_id
Update an existing bol offer by offer id. Only fulfilment (method, deliveryCode, profileId), reference, onHoldByRetailer, economicOperatorId and unknownProductTitle can be changed here; use offer_prices.bulk_update and offer_stocks.bulk_update for price and stock. Processing is asynchronous: returns a 202 process status with processStatusId, entityId, eventType, status, createTimestamp and links. Required: id, fulfilment.
delete_a_bol_com_retailer_offer_by_id
Delete a bol offer by offer id, removing it from the catalog. Processing is asynchronous: returns a 202 process status with processStatusId, entityId, eventType, status, createTimestamp and links; poll the process status to confirm deletion. Required: id.
create_a_bol_com_offers_export
Request an offer export file containing all of a retailer's offers in bol. The export is generated asynchronously — Returns a process status object with processStatusId, eventType, description, status, createTimestamp, and links to track the request. Requires a CreateOfferExportRequest JSON body.
get_single_bol_com_offers_export_by_id
Retrieve an offer export file by report id in bol. Returns the offer export file itself as a CSV (comma separated values) document containing all offers — a raw file download, not a JSON object. Required: id (the unique identifier of the offer export file).
create_a_bol_com_offers_unpublished
Request an unpublished offer report from bol, asynchronously generating a file of all unpublished offers with their reasons. Returns a process status object including processStatusId, eventType, and status for polling. Processing is asynchronous (202 Accepted).
get_single_bol_com_offers_unpublished_by_id
Retrieve an unpublished offer report from bol by report id, containing all unpublished offers and the reasons they are not published; the report is delivered as a CSV file. Required: id (the unpublished offer report id).
bol_com_offer_prices_bulk_update
Update price(s) for a bol offer by id. Returns a process status for the asynchronously scheduled update, including processStatusId, entityId, eventType, status, createTimestamp, and links. Required: offer_id and a price payload.
bol_com_offer_stocks_bulk_update
Update the stock of an offer in bol by id. The stock update is scheduled for asynchronous processing and returns a process status object including processStatusId, eventType, status, and createTimestamp. Required: offer_id and a stock update body.
list_all_bol_com_retailer_orders
List bol retailer orders in a paginated feed (50 per page). Returns: orders (each reduced order carrying its orderId). No parameters are required; results default to open (OPEN) orders fulfilled by the retailer (FBR).
get_single_bol_com_retailer_order_by_id
Get a single bol order by id, including the quantities of shipped or cancelled items when the order is partially shipped or cancelled. Returns: orderId. Required: id (the bol order id).
bol_com_orders_cancellations_bulk_update
Cancel an order item in bol, either to confirm a customer's cancellation request or to cancel an item you are unable to fulfil. Returns a ProcessStatus object including processStatusId, entityId, eventType, status, createTimestamp, and links. Requires a CancellationRequest request body; the request is scheduled for asynchronous processing (202 Accepted).
list_all_bol_com_products_categories
List the available bol product categories together with their subcategories. Returns category records with their id; the remaining record fields are defined by bol's ProductCategoriesResponse schema and are not enumerated in the available documentation. Categories are returned in Dutch by default.
list_all_bol_com_products_lists
List bol products matching a category, search term, or filters. Returns the list of matching products as reported by bol. Search criteria are supplied in the required JSON request body.
list_all_bol_com_products_list_filters
Get the product list filters available in bol for a given category or search term. Returns the product list filters payload with category- and filter-specific fields. Required: productListFiltersRequest.
list_all_bol_com_product_assets
List the assets available for a bol product by EAN. Returns: assets — the collection of assets for the product, with each asset's fields as defined by the upstream bol Retailer API v10 schema. Required: ean.
list_all_bol_com_product_offers
List the competing offers available in the bol webshop for a product EAN, including offers from all retailers. Returns each offer with id, condition, and remaining offer attributes. Required: ean. Pages hold 50 items.
list_all_bol_com_product_placements
Get the product placement for a product by EAN in bol. Returns the list of categories and the URL where the product is placed in the webshop. Required: ean.
list_all_bol_com_product_price_star_boundaries
Get all price star boundaries for a specific product in bol by its EAN. Returns the PriceStarBoundaries response object whose fields are defined by the bol Retailer API v10 schema (not enumerated in the available documentation). Required: ean.
list_all_bol_com_product_product_ids
Get the bol.com specific product identifier and the related EANs for a product by EAN. Returns: productId, eans. Required: ean.
list_all_bol_com_product_ratings
Get product ratings in bol for the products associated with a given EAN. Returns: attributes (generic object; the ratings payload's field shape is defined by bol's ProductRatingsResponse schema). Required: ean.
list_all_bol_com_retailer_promotions
List bol promotions for the retailer. Returns promotion records with their id. Required: promotion-type (AWARENESS or PRICE_OFF). Max 50 items per page.
get_single_bol_com_retailer_promotion_by_id
Get a single bol promotion by id. Returns the promotion including its id. Required: id.
list_all_bol_com_promotion_products
List the products included in a bol promotion by promotion id. Returns: products. Required: promotion_id. Paginated with a page size of 50 items per page.
list_all_bol_com_retailer_replenishments
List bol replenishments. Returns each replenishment's id and its attributes (record fields are defined in the upstream ReplenishmentsResponse schema of the bol Retailer API v10).
create_a_bol_com_retailer_replenishment
Create a replenishment in bol. Requires the replenishment request body (fields defined in the upstream CreateReplenishmentRequest schema). Returns an asynchronous process status with processStatusId, eventType, status, createTimestamp, entityId, and links.
get_single_bol_com_retailer_replenishment_by_id
Get a bol replenishment by id. Returns the replenishment record with its id and attributes (record fields are defined in the upstream ReplenishmentResponse schema). Required: id.
update_a_bol_com_retailer_replenishment_by_id
Update a bol replenishment by id. Requires the update request body (fields defined in the upstream UpdateReplenishmentRequest schema). Returns an asynchronous process status with processStatusId, eventType, status, createTimestamp, entityId, and links. Required: id.
list_all_bol_com_replenishments_delivery_dates
List the available delivery dates for a bol replenishment. Returns a DeliveryDatesResponse payload whose per-date fields are schema-specific to bol's Retailer API v10 and not enumerated in the discovered source; consult bol's v10 API reference for the field-level breakdown. No required parameters.
create_a_bol_com_replenishments_pickup_time_slot
Retrieve available pickup time slots for a bol replenishment. Returns the pickup time slots response (upstream PickupTimeSlotsResponse schema); the source docs do not enumerate its individual fields. Requires a request body matching the PickupTimeSlotsRequest schema.
create_a_bol_com_replenishments_product_destination
Request product destinations by EAN in bol. Schedules the request asynchronously and returns a 202 process status including processStatusId, eventType, description, status, createTimestamp, and links — poll the process status endpoint with processStatusId for completion. Requires a JSON body with the EANs to request destinations for.
get_single_bol_com_replenishments_product_destination_by_id
Get the product destinations for one or more products in bol by product destinations id. Returns the product-destinations record including its id and attributes with the destination details for the requested products. Required: id.
create_a_bol_com_replenishments_product_label
Retrieve product labels in bol by posting a product label request. Returns the printable labels as a PDF document. Requires a ProductLabelsRequest JSON body.
list_all_bol_com_replenishment_load_carrier_labels
Get the load carrier labels for a replenishment in bol. Returns the labels as a printable PDF document (binary content). Required: replenishment_id.
list_all_bol_com_replenishment_pick_lists
Get the pick list PDF for a bol replenishment by id. Returns the pick list as a binary PDF document (content type application/vnd.retailer.v10+pdf), not a JSON object. Required: replenishment_id.
get_single_bol_com_retailer_by_id
Get information about a single bol retailer by id — pass a retailer id, or 'current' to retrieve details for your own retailer account. Returns the retailer information record, including id. Required: id.
list_all_bol_com_retailer_returns
List bol retailer returns as a paginated collection with 50 returns per page; handled returns are sorted by date in descending order, unhandled returns in ascending order. Returns: id.
create_a_bol_com_retailer_return
Create a bol retailer return and automatically handle it with the provided handling result. Returns the process status including processStatusId, status, createTimestamp, and links; the resulting return id is provided in the process status entityId. Requires a request body (CreateReturnRequest). Processing is asynchronous.
get_single_bol_com_retailer_return_by_id
Get a single bol retailer return by id. Returns: id. Required: id.
update_a_bol_com_retailer_return_by_id
Handle a bol retailer return by id — either handle an open return or change the handlingResult of an already handled one. Returns the process status including processStatusId, status, createTimestamp, and links. Required: id (the integer RMA identifier — rma-id upstream) and handlingResult. Processing is asynchronous.
list_all_bol_com_retailer_shipments
List your bol shipments up to 3 months old, sorted by date in descending order. Filter by fulfilment-method (FBR or FBB) or order-id. Returns shipment records with id and shipment-specific attributes. Max 50 per page.
create_a_bol_com_retailer_shipment
Create a bol shipment for one or more order items of a customer order: supply shippingLabelId of a purchased shipping label (leaving transport empty), or omit shippingLabelId and fill in transport with the fields from GET shipping labels — the two are mutually exclusive. Returns an async ProcessStatus with processStatusId, eventType, description, status, createTimestamp, and links to poll for the…
get_single_bol_com_retailer_shipment_by_id
Get a single bol shipment by id. Returns the shipment's id and its shipment-specific attributes object, including transport information. Required: id.
list_all_bol_com_invoices_requests
List paginated invoice requests initiated by customers in bol. Returns each invoice request with its id and attributes (item fields — including the request's state, e.g. OPEN or UPLOAD_ERROR — are defined by bol's InvoiceRequestsResponse schema).
create_a_bol_com_shipments_invoice
Upload an invoice file for a bol shipment. Returns a process status object including processStatusId, eventType, description, status, createTimestamp, and links for polling. Required: invoice_id (the id of the shipment associated with the invoice) and invoice (the invoice file). The upload is processed asynchronously and must be sent as multipart/form-data.
create_a_bol_com_retailer_shipping_label
Create a shipping label in bol using a shipping label offer id obtained from the get delivery options endpoint. Returns the process status of the asynchronous create request, including processStatusId, eventType, status, createTimestamp, and links. Processing is asynchronous — poll the process status endpoint to confirm completion.
get_single_bol_com_retailer_shipping_label_by_id
Get a shipping label PDF from bol by id. Returns the label document as binary data (label_data), with label metadata delivered as response headers: track-and-trace code and transporter code. Required: id (the shipping label id). Send a HEAD request if you only need the metadata headers without the label data.
get_single_bol_com_shipping_labels_delivery_option_by_id
Get all available delivery options in bol for a supplied configuration of order items that has to be shipped. Returns the delivery options payload (DeliveryOptionsResponse), from which a shipping label offer id is taken to create a shipping label. Required: a delivery options request body describing the order items to ship.
list_all_bol_com_retailer_subscriptions
List all bol event notification subscriptions configured for the retailer, including their event types and destination (a webhook URL or a GCP Pub/Sub topic). Returns: id, resources, url, subscriptionType, enabled.
create_a_bol_com_retailer_subscription
Create a bol event notification subscription for one or more event types, delivered either to a URL (WEBHOOK) or a topic name (GCP_PUBSUB). Returns a process status object with processStatusId, eventType, description, status, createTimestamp, and links; processing is asynchronous. Required: resources, url, subscriptionType.
get_single_bol_com_retailer_subscription_by_id
Get a single bol event notification subscription by id, including its event types and destination (a webhook URL or GCP Pub/Sub topic). Returns: id, resources, url, subscriptionType, enabled. Required: id.
update_a_bol_com_retailer_subscription_by_id
Update the event types and/or destination of a bol event notification subscription by id; the destination can be a URL (WEBHOOK) or a topic name (GCP_PUBSUB). Returns a process status object with processStatusId, entityId, eventType, status, createTimestamp, and links; processing is asynchronous. Required: id, resources, url, subscriptionType.
delete_a_bol_com_retailer_subscription_by_id
Delete a bol event notification subscription by id. Returns a process status object with processStatusId, eventType, description, status, createTimestamp, and links; the deletion is processed asynchronously. Required: id.
list_all_bol_com_subscriptions_signature_keys
Retrieve the public keys used to validate the signature header of push notifications received from bol.com. Returns the key set containing the signing keys for push notification validation.
create_a_bol_com_subscriptions_test
Send a test push notification for a bol event notification subscription to verify the configured endpoints are working. The request is scheduled asynchronously and returns the process status object including processStatusId, eventType, status, and createTimestamp. Required: subscription_id.
update_a_bol_com_retailer_transport_by_id
Add transport information to an existing transport in bol by id, which you can retrieve from the shipment list. Returns the process status for the scheduled change, including processStatusId, eventType, status, createTimestamp, and links. Required: id. The change is processed asynchronously.
list_all_bol_com_shared_process_status
List bol process statuses for previously executed PUT/POST/DELETE requests, in descending order, by supplying an entity id and event type. Returns: description, status, links, content. Pages hold 50 items; statuses are retained for a limited period only. Required: entity_id, event_type.
bol_com_shared_process_status_bulk_get
Get the status of multiple bol asynchronous processes in one call by supplying an array of process status ids. Returns: processStatusId, entityId, eventType, status, createTimestamp, links. Statuses are only retained for a limited period after completion. Required: processStatusQueries.
get_single_bol_com_shared_process_status_by_id
Get a single bol process status by id, showing the outcome of a previously executed PUT/POST/DELETE request. Returns: description, status, links, content. Statuses are only retained for a limited period; afterwards a 404 is returned. Required: id.
Why Truto
Why use Truto’s MCP server for Bol.com
Other MCP servers give you a static tool list for one app. Truto gives you a managed, multi-tenant MCP infrastructure across 800+ integrations.
Auto-generated, always up to date
Tools are dynamically generated from curated documentation — not hand-coded. As integrations evolve, tools stay current without manual maintenance.
Fine-grained access control
Scope each MCP server to read-only, write-only, specific methods, or tagged tool groups. Expose only what your AI agent needs — nothing more.
Multi-tenant by design
Each MCP server is scoped to a single connected account with its own credentials. The URL itself is the auth token — no shared secrets, no credential leaking across tenants.
Works with every MCP client
Standard JSON-RPC 2.0 protocol. Paste the URL into Claude, ChatGPT, Cursor, or any MCP-compatible agent framework — tools are discovered automatically.
Built-in auth, rate limits, and error handling
Tool calls execute through Truto’s proxy layer with automatic OAuth refresh, rate-limit handling, and normalized error responses. No raw API plumbing in your agent.
Expiring and auditable servers
Create time-limited MCP servers for contractors or automated workflows. Optional dual-auth requires both the URL and a Truto API token for high-security environments.
How It Works
From zero to integrated
Go live with Bol.com in under an hour. No boilerplate, no maintenance burden.
Link your customer’s Bol.com account
Use Truto’s frontend SDK to connect your customer’s Bol.com account. We handle all OAuth and API key flows — you don’t need to create the OAuth app.
We handle authentication
Don’t spend time refreshing access tokens or figuring out secure storage. We handle it and inject credentials into every API request.
Call our API, we call Bol.com
Truto’s Proxy API is a 1-to-1 mapping of the Bol.com API. You call us, we call Bol.com, and pass the response back in the same cycle.
Unified response format
Every response follows a single format across all integrations. We translate Bol.com’s pagination into unified cursor-based pagination. Data is always in the result attribute.
FAQs
Common questions about Bol.com on Truto
Authentication, rate limits, data freshness, and everything else you need to know before you integrate.
How does authentication with Bol.com work through Truto?
Bol.com uses OAuth 2.0 client credentials issued from the seller's Retailer portal. Truto handles the token exchange and refresh lifecycle so your users only supply credentials once during connection.
How do we handle Bol.com's asynchronous API model?
Most write operations (offer create/update, price and stock bulk updates, order cancellations, returns handling, replenishments) return a processStatusId. Truto exposes list_all_bol_com_shared_process_status and bol_com_shared_process_status_bulk_get so you can poll and confirm the actual outcome before reporting success to your users.
Can we receive real-time events instead of polling?
Yes. You can programmatically create Bol.com retailer subscriptions (webhooks or GCP Pub/Sub) for events like new orders, shipments, and returns, and manage the signature keys and test payloads via the subscription endpoints.
What order and fulfillment operations are supported?
You can list and retrieve retailer orders, bulk cancel order items, create shipments, purchase Bol.com shipping labels, retrieve label PDFs, evaluate delivery options, and upload shipment invoices.
Does the integration cover FBB (Fulfilment by Bol) workflows?
Yes. Truto exposes replenishment creation and updates, delivery date lookups, pickup time slot booking, product destinations, product labels, load carrier labels, and pick lists for full FBB automation.
What insights data can we pull for analytics or repricing?
You can access offer insights (including Buy Box performance), performance indicators, product ranks, sales forecasts, and search term volumes — plus competitor product offers and commission structures for margin calculations.
From the Blog
Bol.com integration guides
Deep dives, architecture guides, and practical tutorials for building Bol.com integrations.
Bol.com
Get Bol.com integrated into your app
Our team understands what it takes to make a Bol.com integration successful. A short, crisp 30 minute call with folks who understand the problem.