Retrieve and display bundles and value adds
Follow this step-by-step guide to retrieve bundle details from the Demand API and display value adds consistently across a search-look-book flow, from availability and pricing to booking preview and post-booking confirmation.
Bundles in the Demand API
Bundles appear consistently across the booking flow in both v3.1 and v3.2:
1.Static details (cacheable):
- The /accommodations/details returns all bundles defined by each property.
- Each bundle includes:
- Bundle ID
- Associated value add type.
- Localised descriptions.
Store this data.
2.Search and availability (real-time)
- accommodations/search
- accommodations/availability (and accommodations/bulk-availability in v3.1)
These endpoints return the bundle ID on each product (if applicable). Use the bundle ID to:
- Match the product to cached bundle details.
- Display the included benefits to travellers.
3.Booking preview:
- orders/preview returns the bundle ID for the selected product.
- Confirms the exact bundle that will be booked.
4.Post‑booking:
- /orders/details/accommodations returns the bundle ID (if present)
- Allows you to display confirmed value adds in booking confirmations or itineraries.
Steps to retrieve bundles
Follow these steps to retrieve bundles and value adds:
1. Search for accommodation
→ Use the accommodations/search endpoint.
What to look for:
- The bundle field inside each product.
- Each product can have one
bundleID ornull.
Example request:
{
"booker": {
"country": "nl",
"platform": "desktop"
},
"checkin": "2026-02-02",
"checkout": "2026-02-10",
"country": "es",
"extras": [
"products"
],
"guests": {
"number_of_adults": 2,
"number_of_rooms": 1
}
}Example response:
{
"request_id": "01kcrvv1a4mf9wfqn70v5jmp35",
"data": [
{
"id": 13766008,
"currency": "EUR",
"deep_link_url": "booking://hotel/13766008?affiliate_id=956509&checkin=2026-02-02&checkout=2026-02-10&mcid=10",
"price": {
"book": 740,
"total": 740
},
"products": [
{
"id": "1376600801_409788848_0_0_0_843543",
"bundle": 843543,
"children": [],
"deal": null,
"number_available_at_this_price": 1,
"number_of_adults": 2,
"policies": {
"cancellation": {
"free_cancellation_until": "2026-01-18T22:59:59+00:00",
"type": "free_cancellation"
},
"meal_plan": {
"meals": [],
"plan": "no_plan"
},
"payment": {
"prepayment_required": true,
"timings": [
"pay_online_later",
"pay_online_now"
]
}
},
"price": {
"book": 740,
"total": 740
},
"room": 1376600801
}
],
"url": "https://www.booking.com/hotel/es/beach-apartment-denia.html?aid=956509&checkin=2026-02-02&checkout=2026-02-10&no_rooms=1&group_adults=2&mcid=10"
},Store both the accommodation id (13766008) and product id (1376600801_409788848_0_0_0_843543). You will need them in the next steps.
2. Get availability and prices
→ Use accommodations/availability endpoint.
- Include the accommodation
id(13766008) and productid(1376600801_409788848_0_0_0_843543) from search.
Example request:
{
"accommodation": 13766008,
"booker": {
"country": "nl",
"platform": "desktop"
},
"products": ["1376600801_409788848_0_0_0_843543"],
"checkin": "2026-02-02",
"checkout": "2026-02-10",
"guests": {
"number_of_adults": 2,
"number_of_rooms": 1
}
}
- The response confirms:
- Availability.
- Price and policies.
- The
BundleID.
Example response:
{
"request_id": "01kcrxnrhwdj6jca7d2wv6skba",
"data": {
"id": 13766008,
"currency": "EUR",
"deep_link_url": "booking://hotel/13766008?affiliate_id=956509&checkin=2026-02-02&checkout=2026-02-10",
"products": [
{
"id": "1376600801_409788848_0_0_0_843543",
"bundle": 843543,
"deal": null,
"maximum_occupancy": {
"adults": 6,
"children": null,
"total": 6
},
"number_available_at_this_price": 1,
"policies": {
"cancellation": {
"free_cancellation_until": "2026-01-18T22:59:59+00:00",
"schedule": [...]
}
},
"price": {
"book": 740,
"chargeable_online": 740,
"total": 740
},
"room": 1376600801
}
],
"recommendation": {
"price": {
"book": 740,
"chargeable_online": 740,
"total": 740
},
"products": [
{
"id": "1376600801_409788848_0_0_0_843543",
"children": [],
"number_of_adults": 2,
"price": {
"book": 740,
"chargeable_online": 740,
"total": 740
}
}
]
},
"url": "https://www.booking.com/hotel/es/beach-apartment-denia.html?aid=956509&checkin=2026-02-02&checkout=2026-02-10&no_rooms=1&group_adults=2"
}
}Prices may change between search and availability. Always confirm before booking.
3. Get bundle details
→ Call /accommodations/details.
Use the extras field with "bundles" to retrieve value add details and translations.
Example request:
{
"accommodations": [
13766008
],
"extras": [
"bundles"
],
"languages": [
"en-gb",
"es"
]
}Requesting extras: ["bundles"] does not guarantee that bundles will be returned. Only accommodations that define value-added offers include them in the response.
Example response:
What you get:
✓ All bundles defined for the accommodation.
✓ Each bundle’s value adds.
✓ Localised descriptions in the requested languages.
This data is static.
{
"request_id": "01kcrwnk8b1kv5syq2mbjfjy3n",
"data": [
{
"id": 13766008,
"name": {
"en-gb": "Beach Apartment",
"es": "Beach Apartment"
},
"accommodation_type": 201,
"booker_address_required": false,
"brands": [],
"bundles": [
{
"id": 843543,
"value_adds": [
{
"description": {
"es": [
"Parking para un vehículo por unidad reservada y estancia."
],
"en-gb": [
"Self parking for one vehicle per booked unit per stay."
]
},
"type": "parking"
},
{
"description": {
"es": [
"Internet de alta velocidad durante toda la estancia."
],
"en-gb": [
"High-speed internet throughout your stay."
]
},
"type": "high_speed_internet"
}
]
}
],
...
"url": "https://www.booking.com/hotel/es/beach-apartment-denia.html?aid=956509",
"work_friendly_home": true
}
]
}Store bundle data
We strongly recommend caching bundle details to:
- Reduce API calls.
- Improve performance.
- Ensure consistent display across your flow.
4. Handle the booking
If you support a Search, look and book flow:
- Call /orders/preview using the accommodation
id(13766008) and productid(1376600801_409788848_0_0_0_843543)
Example request
{
"booker": {
"country": "nl",
"platform": "desktop"
},
"currency": "EUR",
"accommodation": {
"id": 13766008,
"checkin": "2026-02-02",
"checkout": "2026-02-10",
"products": [
{
"id": "1376600801_409788848_0_0_0_843543",
"allocation": {
"number_of_adults": 2,
"children": []
}
}
]
}
}- Confirm in the response:
- Product.
- Price.
- Policies.
- Bundle ID.
Example response
{
"request_id": "01kcryhpc5dp3mnphdkcqh995y",
"data": {
"accommodation": {
"id": 13766008,
"commission": {...}
}
},
"currency": {...},
"general_policies": {...},
"price": {...}
},
"products": [
{
"id": "1376600801_409788848_0_0_0_843543",
"bundle": 843543,
"deal": null,
"policies": {...},
"price": {
"base": {
"accommodation_currency": 618.18,
"booker_currency": 618.18
},
"extra_charges": {...},
"chargeable_online": {
"accommodation_currency": 740,
"booker_currency": 740
},
"total": {
"accommodation_currency": 740,
"booker_currency": 740
}
},
"room": 1376600801
}
]
},
"order_token": "eyJhbGciOiJIUzI1NiJ9.eyJwIjp7ImFjY29tbW9kYXRpb24iOnsiaWQiOjEzNzY2MDA4LCJjaGVja2luIjoiMjAyNi0wMi0wMiIsImNoZWNrb3V0IjoiMjAyNi0wMi0xMCIsImN1cnJlbmN5IjoiRVVSIiwicHJvZHVjdHMiOlt7ImlkIjoiMTM3NjYwMDgwMV80MDk3ODg4NDhfMF8wXzE2Nzc3MjE2Xzg0MzU0MyIsImFsbG9jYXRpb24iOnsiY2hpbGRyZW4iOltdLCJudW1iZXJfb2ZfYWR1bHRzIjoyfSwidG90YWxfcHJpY2UiOjc0MC4wMH1dfSwiYm9va2VyIjp7ImNvdW50cnkiOiJubCIsInBsYXRmb3JtIjoiZGVza3RvcCJ9LCJib29rZXJfY3VycmVuY3kiOiJFVVIiLCJwYXlfb25saW5lX2xhdGVyX2F2YWlsYWJsZSI6dHJ1ZX0sImF1ZCI6WyIvb3JkZXJzL2NyZWF0ZSJdLCJleHAiOjE3NjYwNjk4MDN9.dEzvayxouDmo7tcfRTmgDd2Xn5ti0u7__b7xhc4gSek"
}
}- Complete the booking with /orders/create .
See the Orders creation guide for full booking steps.
5. Post booking checks
To retrieve the bundle associated with a reservation:
- Call /orders/details/accommodations.
- Use the returned bundle ID to display confirmed value adds.
Best practices
- Cache static bundle data from /accommodations/details
- Always display the final price, not inferred savings.
- Treat bundles as single commercial offers.
- Do not assume bundles are always present.
- Use consistent wording when displaying value adds (for example: “Included with your stay”)
Next steps
Not familiar with bundles and value adds? Start with Bundles and value adds to understand the concepts.