Last updated

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 bundle ID or null.

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 product id (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 Bundle ID.

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:

  1. Call /orders/preview using the accommodation id (13766008) and product id (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": []
        }
      }
    ]
  }
}
  1. 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"
  }
}
  1. Complete the booking with /orders/create .
Orders guides

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

Curious to know more?

Not familiar with bundles and value adds? Start with Bundles and value adds to understand the concepts.