Colruyt APIcolruyt.be ↗
Access Colruyt supermarket product data: search by keyword, retrieve prices and nutritional scores, browse promotions, and list all Belgian store locations.
What is the Colruyt API?
The Colruyt.be API gives developers access to 6 endpoints covering the full Colruyt Belgian supermarket catalog, including product search with pricing and nutritional scores, current store promotions, and store location data. The search_products endpoint returns paginated results with brand, price, promo status, and availability scoped to a specific store via place_id. Product details, red-price deals, and promotion-linked product lists are all accessible in structured JSON.
curl -X GET 'https://api.parse.bot/scraper/54a8ba2b-5fe7-4859-9138-5d8a956ba6f7/search_products?page=1&size=5&sort=relevancy+asc&query=melk&place_id=604' \ -H 'X-API-Key: $PARSE_API_KEY'
Search Colruyt products by keyword. Returns product metadata including prices, brand, nutritional scores, availability, and promotion status. Results are paginated via page/size parameters; omitting page defaults to page 1. Each request warms up a session before calling the upstream API, so latency includes one warmup round-trip.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number for pagination (1-based). |
| size | integer | Number of products per page (1-100). |
| sort | string | Sort order string as accepted by the upstream API (e.g. 'relevancy asc', 'price asc', 'price desc'). |
| queryrequired | string | Search keyword (e.g. 'melk', 'bier', 'cola'). |
| place_id | string | Colruyt store place ID for availability and pricing context. Default is Colruyt Halle (604). |
{
"type": "object",
"fields": {
"page": "Current page number",
"size": "Requested page size",
"products": "Array of product objects with metadata, pricing, and availability",
"products_found": "Total number of matching products",
"products_returned": "Number of products in this response page"
},
"sample": {
"data": {
"page": 1,
"size": 5,
"products": [
{
"gtin": [
"15400141506539",
"05400141506532"
],
"name": "Halfvolle melk brik",
"brand": "EVERYDAY",
"price": {
"basicPrice": 0.849,
"isRedPrice": false,
"pricePerUOM": 0.85,
"priceReason": "Reaction",
"isPromoActive": "N",
"activationDate": "10-07-2026",
"measurementUnit": "L",
"priceChangeCode": "E",
"recommendedQuantity": "1.0",
"measurementUnitPrice": 0.85
},
"is_bio": false,
"is_new": false,
"content": "1L",
"in_promo": false,
"long_name": "EVERYDAY Halfvolle melk brik 1L",
"seo_brand": "Everyday",
"thumbnail": "https://static.colruytgroup.com/images/200x200/std.lang.all/37/38/asset-4113738.jpg",
"full_image": "https://static.colruytgroup.com/images/500x500/std.lang.all/37/38/asset-4113738.jpg",
"nutri_score": "B",
"is_available": true,
"eco_score_label": "C",
"top_category_id": "65",
"greenscore_label": "B",
"country_of_origin": "BE",
"top_category_name": "Zuivel",
"is_price_available": true,
"technical_article_number": "4862636",
"commercial_article_number": "24583"
}
],
"products_found": 36,
"products_returned": 5
},
"status": "success"
}
}About the Colruyt API
Product Search and Details
The search_products endpoint accepts a query string (e.g. 'melk', 'bier') and returns a paginated list of products with fields including brand, price, is_bio, is_new, in_promo, and nutritional scores. Results can be sorted using the sort parameter ('price asc', 'relevancy asc') and scoped to a particular Colruyt store using place_id. The get_product_details endpoint accepts a commercial article number, technical article number, or GTIN barcode and returns the full record for a single product — including price.basic_price, price.is_red_price, price.measurement_unit_price, eco/green scores, and channel availability.
Promotions
get_promotions lists all active promotions at a given store, returning each campaign's benefit rules, validity dates, brand coverage, and one representative product via highest_sales_rank. To retrieve every product linked to a specific campaign, pass the promotion_id (e.g. '1441COLR') to get_promotion_products, which returns the full products array alongside benefit discount rules, brand_list, top_promo flag, and precondition objects. get_red_price_products lists all products currently flagged isRedPrice: true — covering weekly folder deals on fresh food, drugstore items, and wine — with pagination support and a has_more field.
Store Coverage
get_stores returns the complete list of approximately 267 active Colruyt stores in Belgium in a single unpaginated response. Each store object includes place_id, store_name, branch_id, address, geo_coordinates, and an is_active flag. The place_id values returned here are the correct inputs for scoping all other endpoints to a specific store's pricing and availability context.
Pagination and Scope
All list endpoints except get_stores support page (1-based) and size (1–100) parameters. Omitting page defaults to page 1. The place_id parameter defaults to Colruyt Halle (604) across all endpoints when not supplied, so results will reflect that store's pricing unless overridden.
The Colruyt API is a managed, monitored endpoint for colruyt.be — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when colruyt.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 colruyt.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 price changes on specific products across multiple Colruyt store locations using
place_idandget_product_details. - Build a weekly deals digest by querying
get_red_price_productsandget_promotionsfor a target store. - Compare nutritional scores and eco scores across a product category using
search_productswith category keywords. - Map all Colruyt store locations in Belgium with addresses and coordinates via
get_stores. - Enumerate every product in a promotion campaign using
get_promotion_productswith apromotion_idfromget_promotions. - Filter organic products by combining
search_productsresults with theis_biofield. - Monitor which products are newly listed at a store by filtering
search_productsresults on theis_newfield.
| 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.
Does Colruyt have an official public developer API?+
What does `get_red_price_products` return, and how is it different from `get_promotions`?+
get_red_price_products returns products where price.isRedPrice is true — these are Colruyt's own store-driven price reductions such as weekly folder deals on fresh food, drugstore items, and wine. get_promotions covers broader brand-sponsored or campaign-based promotions with explicit benefit rules, validity dates, and a promotion_id that can be passed to get_promotion_products. A product can appear in both lists simultaneously.Can I retrieve customer reviews or ratings for Colruyt products?+
Are prices and availability consistent across all stores, or do they vary by location?+
place_id parameter to scope results to a specific Colruyt location. When place_id is omitted, responses default to Colruyt Halle (store ID 604). Use get_stores to retrieve place_id values for all ~267 active Belgian stores.Does the API cover Colruyt's online shop (Collect&Go) inventory separately from in-store availability?+
channels field indicating where a product is available, but the API does not expose a dedicated Collect&Go stock level or online-only catalog endpoint. You can fork this API on Parse and revise it to surface channel-specific availability as a standalone endpoint.