Skip to main content
Use the expand query parameter to embed related data inline in the response instead of fetching it with a second request. Depending on the endpoint this can be a referenced object, a related collection, or inlined labels. Nothing is expanded by default. Pass a comma-separated list to expand more than one thing in a single request.

With and without expand

A hotel does not include its room types by default. Without expand you get the hotel on its own; with expand=roomTypes the roomTypes array contains the hotel’s enabled, non-draft rooms, so no second request is needed. The only difference between the two responses is the added roomTypes block. The snippets below show only the fields relevant to expansion. The remaining hotel fields are unchanged and follow the complete Hotel schema. priceFrom is left out here; see Prices.
The same pattern applies in the other direction: GET /api/v2/room-types?expand=hotel embeds a hotel summary containing only id, name, and stars. Fetch GET /api/v2/hotels/{hotelId} for the full hotel. For a paginated, filterable list of a single hotel’s room types, use GET /api/v2/room-types?hotelId={hotelId} instead of expanding. Embedded room types use a fixed presentation order: building, tier, room name, then id. Building and room names use Czech ordering, so changing Accept-Language does not change the order. Rooms without a building come last. The paginated /room-types endpoint keeps its requested createdAt order. Hotel buildings are always included in hotel list and detail responses, independently of expand=roomTypes. The visit type endpoints always return hotelListings with the hotel id and the price of the package at that hotel. expand=hotel adds each listing’s hotel summary. The detail endpoint also accepts expand=priceFromPeriods, which adds price periods to the package and to every listing. Both values can be combined. The list endpoint returns 400 for priceFromPeriods. The list and detail references show complete examples of each variant.

Amenity labels

By default hotel and room type categories carry code; their amenities and options carry code. You resolve labels against the amenity dictionary. expand=amenityLabels inlines the localized label on each category, amenity, and option, so you do not have to fetch and join the dictionary. For apps that render many hotels, caching the dictionary once is usually cheaper than expanding labels on every request. On /room-types and /room-types/{roomTypeId}, use expand=amenityLabels, optionally together with hotel. On hotels, expand=roomTypes,amenityLabels includes labels for both hotel amenities and embedded room type amenities. Aquapark includes items and their options also receive localized labels. Cache the combined dictionary or each scope separately if you resolve labels yourself. Match categories using the parent resource type (hotel or roomType) and code. Assigned categories omit scope, including with label expansion. Each endpoint lists the expand values it supports and what each adds.