Vanden Borre APIvandenborre.be ↗
Search the Vanden Borre Belgian electronics catalogue by keyword, brand, category, and price range. Returns prices in EUR, availability, ratings, and facets.
What is the Vanden Borre API?
The Vanden Borre API gives developers programmatic access to Belgium's Vanden Borre electronics catalogue through 2 endpoints. The search_products endpoint returns paginated product summaries including price in EUR, brand, category, availability text, energy class, and star rating, plus brand and category facet counts. The search_price endpoint adds min/max/average price statistics over a filtered price range, with results ordered by price ascending.
curl -X GET 'https://api.parse.bot/scraper/8da383e1-8824-4e95-9e51-24f6b698e3d5/search_products?sort=relevance&query=koelkast' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace vandenborre-be-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""Walkthrough: Vanden Borre product search — browse, filter, compare prices."""
from parse_apis.vandenborre_be_api import VandenBorre, SortOrder, InputFormatInvalid
client = VandenBorre()
# Search the catalogue for refrigerators, sorted by price ascending.
for product in client.products.search(query="koelkast", sort=SortOrder.PRICE_ASC, limit=5):
print(product.title, product.price, product.energy_class)
# Scalar catalogue search exposes facets and stats alongside items.
catalog = client.catalogs.search(query="koelkast", sort=SortOrder.RELEVANCE)
print("total matches:", catalog.total)
if catalog.price_stats is not None:
print("price range:", catalog.price_stats.min, "–", catalog.price_stats.max)
for brand, count in list(catalog.brands.items())[:3]:
print(f" {brand}: {count} products")
# Drill into a specific brand using a facet value from the previous response.
top_brand = next(iter(catalog.brands))
first_hit = client.products.search(query="koelkast", brand=top_brand, limit=1).first()
if first_hit is not None:
print(first_hit.brand, first_hit.model, first_hit.availability)
# Compare prices within a budget range; catch invalid-input errors.
try:
survey = client.price_surveys.search(query="koelkast", min_price=300, max_price=600)
print("in-range matches:", survey.total)
if survey.price_stats is not None:
print("avg price in range:", survey.price_stats.avg)
except InputFormatInvalid as e:
print("invalid price range:", e.message)
for deal in client.products.compare_prices(query="koelkast", min_price=300, max_price=600, limit=3):
print(deal.title, deal.price, deal.currency)
print("exercised: products.search / catalogs.search / products.compare_prices / price_surveys.search")
Keyword search over the Vanden Borre product catalogue (Dutch-language catalogue). Returns one page of product summaries (id, brand, model, category, price in EUR, availability text, energy class, rating, URLs) plus the total match count, and brand and category facet counts for the whole result set. One round trip per call. Pagination is caller-controlled through page (1-based, default 1) and per_page (default 24, clamped to 100); has_more tells whether a next page exists. Optional sort orders by relevance (site default) or by price; optional brand and category filters take a label exactly as it appears in the brands / categories facets of a previous response (an unknown label yields an empty result). A query matching nothing returns total 0 with an empty items array. Fields like description, energy_class, recupel_fee, rating and review_count are null when the catalogue does not carry them for a product.
| Param | Type | Description |
|---|---|---|
| page | integer | 1-based result page. |
| sort | string | Result ordering. |
| brand | string | Exact brand label to restrict results to, as listed in the brands facet of a response (e.g. SAMSUNG). Omitted = all brands. |
| queryrequired | string | Free-text search term, e.g. a product type, brand or model number. |
| category | string | Exact category label to restrict results to, as listed in the categories facet of a response (e.g. Barkoelkast). Omitted = all categories. |
| per_page | integer | Products per page; values above 100 are clamped to 100. |
{
"type": "object",
"fields": {
"page": "1-based page returned",
"sort": "sort order applied",
"brand": "brand filter applied or null",
"items": "array of product summaries; product_id is the site's numeric product id as a string, price is the current selling price in EUR, recupel_fee is the Belgian recycling contribution in EUR (null when none), availability is the site's Dutch stock/delivery label, energy_class is the EU energy label letter (null when not an appliance)",
"query": "echoed search term",
"total": "total number of matching products on the site for this query and filters",
"brands": "object mapping brand label to match count over the whole result set",
"category": "category filter applied or null",
"has_more": "true when a later page exists",
"per_page": "page size applied after clamping",
"categories": "object mapping category label to match count over the whole result set",
"price_stats": "min / max / avg price in EUR over all matches (null when no matches)",
"total_pages": "number of pages at this per_page"
},
"sample": {
"data": {
"page": 1,
"sort": "price_desc",
"brand": "SAMSUNG",
"items": [
{
"url": "https://www.vandenborre.be/amerikaanse-koelkast-french-doors/-rf65dg960eb1ef-wifi",
"brand": "SAMSUNG",
"model": "RF65DG960EB1EF",
"price": 3299,
"title": "SAMSUNG RF65DG960EB1EF",
"rating": 5,
"category": "Amerikaanse koelkast",
"currency": "EUR",
"image_url": "https://image.vandenborre.be/WEB/images/products/300/samsung_rf65dg960eb1ef_7755988_1.jpg",
"product_id": "7755988",
"description": null,
"recupel_fee": 10,
"availability": "Binnen >3 weken",
"energy_class": "E",
"is_available": true,
"review_count": 3
}
],
"query": "koelkast",
"total": 47,
"brands": {
"SAMSUNG": 47
},
"category": null,
"has_more": true,
"per_page": 3,
"categories": {
"Koelkastaccessoire": 5,
"Amerikaanse koelkast": 18,
"Inbouw 1-deurskoelkast": 2,
"Koelkast met diepvriezer": 14,
"Inbouwkoelkast met diepvriezer": 6
},
"price_stats": {
"avg": 1211.36,
"max": 3299,
"min": 48
},
"total_pages": 16
},
"status": "success"
}
}About the Vanden Borre API
What the API covers
Both endpoints query the Dutch-language Vanden Borre product catalogue — a Belgian electronics retailer carrying appliances, consumer electronics, and related product categories. Each product summary in the items array includes a numeric product_id, the current selling price in EUR, brand, model, category, availability text, energy_class, a star rating, and URL fields for the product page. The total field tells you how many products match across all pages, and has_more signals whether a subsequent page exists.
Filtering and sorting with search_products
The search_products endpoint accepts a free-text query and optional brand and category filters. Filter values must match labels exactly as they appear in the brands and categories facet objects returned by a prior call — for example SAMSUNG or Barkoelkast. The sort parameter controls result ordering, and per_page controls page size up to a maximum of 100 (values above 100 are clamped). The page parameter is 1-based. The response echoes all applied filters so you can confirm what was used.
Price range search and statistics
The search_price endpoint accepts min_price and max_price bounds in EUR (both inclusive, both optional). Results are always returned in ascending price order. In addition to the standard items array and facets, the response includes a price_stats object with the minimum, maximum, and average price across every product matching the query and price constraints — useful for price comparison tooling or alerting when a product category drops into a target range.
Facets and coverage
Both endpoints return brands and categories objects that map each label to its match count within the current result set. These facets reflect the full result set, not just the current page, so you can build dynamic filter UIs without issuing a separate aggregation call. Coverage is limited to products listed on vandenborre.be; the catalogue is in Dutch and prices are in EUR.
The Vanden Borre API is a managed, monitored endpoint for vandenborre.be — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when vandenborre.be changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official vandenborre.be API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Track the EUR price of a specific appliance model across weekly snapshots using search_products with a model-number query.
- Build a Belgian electronics price comparison widget using search_price with min_price and max_price bounds.
- Populate a brand-filtered product listing page using the brands facet from search_products to drive filter options.
- Monitor availability text changes for a set of product IDs to detect restocking events.
- Identify the cheapest products in a category by querying search_price with no bounds and reading price_stats.min.
- Generate a category taxonomy for the Vanden Borre catalogue by collecting the categories facet across multiple broad queries.
- Alert when the average price of a product type drops below a threshold using the price_stats average field from search_price.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 200 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
| Team | $300/mo | 20,000 | 300 req/min |
| Company | $1,000/mo | 100,000 | 500 req/min |
Each endpoint has a fixed posted price per successful call — most fall between 1 and 10 credits — shown on this API's page before you run it. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.