RoomRates API

When a user selects a hotel from search results, the Rooms & Rates API fetches all available rooms and rates from every supplier configured in your channel, deduplicates them, and returns a structured response. This is the most complex API in the engine — understanding what each object means before you implement will save significant time.

POST{baseEndpoint}/api/hotel/{hotelId}/roomsandrates/{token}

The five response objects — read this first

rooms

Raw room data from every configured supplier. If 5 suppliers return the same king room, you will see it 5 times here. Do not use this directly for rendering — use standardisedRooms instead.

rates

Raw rate data across all suppliers. In a single-room search, one recommendation maps to one rate. In a multi-room search, one recommendation can map to multiple rates — because some suppliers bundle all rooms into one rate ID, while others issue a separate rate ID per room.

Always check occupancies inside each rate to confirm how many rooms it covers and which room it belongs to.

recommendations

ZentrumHub's deduped, unique rate plans. One recommendation equals the cheapest available rate across all suppliers for a specific combination of room type, board basis, and refundability. This is where the engine's core deduplication logic surfaces. The recommendationId is what you pass to the Price API.

standardisedRooms

Mapping-service-normalised unique rooms. From 50 raw room entries across 10 suppliers, you get the actual 5 unique rooms here — deduplicated and normalised into consistent names and attributes. Only present if you have subscribed to the mapping service. Required for multi-supplier setups.

Multi-room searches — important detail

When searching for more than one room, some suppliers return a single rate ID covering all rooms together, while others return individual rate IDs per room. A single recommendation can therefore contain multiple rate IDs.

Do not assume one rate ID per recommendation in multi-room searches. Always check occupancies inside each rate object to confirm how many rooms it covers. standardisedRoomGroups handles this for you automatically — the total field already sums across all rate IDs in the group, regardless of how the supplier bundled them.

Using the mapping service

Mapping service is required for multi-supplier setups. Without it, standardisedRooms and standardisedRoomGroups will not appear in the response. You will need to use rooms and cross-reference via roomId in occupancies instead. For single-supplier accounts this is manageable; for multi-supplier it creates significant implementation overhead.

Token

Token is valid for 60 minutes. The same token from Search Init is passed in the URL. It carries the search context (check-in, check-out, occupancy) so you do not need to re-send those details. After 60 minutes the token expires and a new search is required.

Error codes

CodeMessage
4001Invalid data in request — refer to fields[] for details
4004The hotel you selected is sold out
5000Unknown system error — contact support with the correlationId

Interactive Explanation of room and rates

Request fired
rooms
rates
Dedup
recs
stdRooms
Groups
Step 1 of 7
Request fired
Client calls Rooms & Rates for a hotel
Your client
POST /roomsandrates
hotelId: HTL_001
token: srch_xyz
checkIn: 2025-06-10
rooms: 1 × 2 adults
API call
Booking Engine
✓ Validates channel
✓ Applies markup rules
✓ Identifies suppliers
✓ Fires parallel calls
parallel
HotelBeds
RateHawk
Expedia
TBO
Booking.com
The search token carries check-in, check-out & occupancy — you don't re-send it in every downstream call.
rooms object — raw room data from all suppliers. Names, images, bed config, facilities. No prices here.
HotelBeds
King Room
images · bed config · facilities
HotelBeds
Deluxe Double
images · bed config · facilities
RateHawk
Superior King
images · bed config · facilities
RateHawk
Standard Double
images · bed config · facilities
Expedia
King Deluxe
images · bed config · facilities
Expedia
Junior Suite
images · bed config · facilities
TBO
King Bed Room
images · bed config · facilities
TBO
Classic Double
images · bed config · facilities
Booking.com
Premium King
images · bed config · facilities
Booking.com
Double Standard
images · bed config · facilities
10 entries. "King Room", "Superior King", "King Deluxe", "King Bed Room", "Premium King" — same physical room, five different names. Don't build your UI from this.
rates object — all pricing from all suppliers. Same room appears multiple times across different rate plans. Click a room to expand.
👑
King Room
3 rate plans · 5 suppliers
Non-refundable · Room only
HotelBeds$142
RateHawk$138
Expedia$155
TBO$145
Booking.com$149
Refundable · Room only
HotelBeds$161
RateHawk
Expedia$174
TBO$163
Booking.com
Non-refundable · Breakfast
HotelBeds
RateHawk$154
Expedia
TBO
Booking.com
🛍
Double Room
2 rate plans · 3 suppliers
Non-refundable · Room only
HotelBeds$118
RateHawk$112
Expedia
TBO$121
Booking.com
Refundable · Room only
HotelBeds
RateHawk
Expedia
TBO
Booking.com$115
Junior Suite
1 rate plan · 2 suppliers
Non-refundable · Room only
HotelBeds
RateHawk
Expedia$198
TBO
Booking.com$205
All of this lives in the raw rates object. Still need to find the cheapest per unique combo — that's deduplication.
For each unique room + board basis + refundability combo, compare all supplier prices and keep the lowest. Click any row to see why.
Rate planHBRHEXTBOBKWinner
👑 King Room
Non-refundable · Room only
$142$138$155$145$149
$138
RateHawk
Why RateHawk wins: 5 suppliers returned this combo. RateHawk's $138 is the lowest. This becomes one recommendation with a unique recommendationId.
👑 King Room
Refundable · Room only
$161$174$163
$161
HotelBeds
Why HotelBeds wins: 3 suppliers returned refundable king. HotelBeds at $161 is cheapest. Refundable and non-refundable are always kept as separate recommendations — never merged.
👑 King Room
Non-refundable · Breakfast
$154
$154
RateHawk
Only one supplier: Only RateHawk returned breakfast for king. They win by default at $154. Board basis is always a separate recommendation.
🛍 Double Room
Non-refundable · Room only
$118$112$121
$112
RateHawk
Why RateHawk wins: 3 suppliers returned non-refundable double. RateHawk's $112 is cheapest.
🛍 Double Room
Refundable · Room only
$115
$115
Booking.com
Only one supplier: Only Booking.com offered a refundable double. They win at $115.
Junior Suite
Non-refundable · Room only
$198$205
$198
Expedia
Why Expedia wins: 2 suppliers returned the suite. Expedia's $198 beats Booking.com's $205.
15 raw rates → 6 recommendations. Cheapest supplier wins — no bias, fully transparent.
recommendations — one entry per winning rate plan, sorted cheapest to highest. Pass the recommendationId to the Pricing API when the user selects a rate.
👑
King Room — Non-refundable · Room only
recommendationId: REC_001  ·  roomId: R1
RateHawkNon-refund
$138
👑
King Room — Non-refundable · Breakfast
recommendationId: REC_002  ·  roomId: R1
RateHawkBreakfast
$154
👑
King Room — Refundable · Room only
recommendationId: REC_003  ·  roomId: R1
HotelBedsRefundable
$161
🛍
Double Room — Non-refundable · Room only
recommendationId: REC_004  ·  roomId: R2
RateHawkNon-refund
$112
🛍
Double Room — Refundable · Room only
recommendationId: REC_005  ·  roomId: R2
Booking.comRefundable
$115
Junior Suite — Non-refundable · Room only
recommendationId: REC_006  ·  roomId: R3
ExpediaNon-refund
$198
Each recommendation also carries a roomId linking back to the standardised room.
standardisedRooms — the mapping service normalises 10 raw room names into 3 unique rooms. These are what you render as room content in your UI.
Raw rooms (10 entries)
HotelBeds King Room
RateHawk Superior King
Expedia King Deluxe
TBO King Bed Room
Booking.com Premium King
HotelBeds Deluxe Double
RateHawk Standard Double
TBO Classic Double
Booking.com Double Standard
Expedia Junior Suite
Mapping
Service
normalises
deduplicates
standardisedRooms (3)
👑 King Room
stdRoomId: R1
✓ Normalised name  ·  ✓ Images  ·  ✓ Bed config  ·  ✓ Facilities
🛍 Double Room
stdRoomId: R2
✓ Normalised name  ·  ✓ Images  ·  ✓ Bed config  ·  ✓ Facilities
✨ Junior Suite
stdRoomId: R3
✓ Normalised name  ·  ✓ Images  ·  ✓ Bed config  ·  ✓ Facilities
Mapping service is mandatory for multi-supplier. Without it, standardisedRooms is empty and you're stuck cross-referencing 10 raw room entries manually.
standardisedRoomGroups — build your UI from this. Each room has all its rate options with a pre-calculated total. No cross-referencing. No summing. Click a room to expand.
👑
King Room
standardRoomId: R1 · 3 options
from
$138
Options — cheapest to highest
Non-refundable · Room only
recommendationId: REC_001 → pass to Pricing API
RateHawkcheapest
$138total
Non-refundable · Breakfast
recommendationId: REC_002
RateHawk
$154total
Refundable · Room only
recommendationId: REC_003
HotelBeds
$161total
↑ total is pre-calculated — no summing required even in multi-room searches.
🛍
Double Room
standardRoomId: R2 · 2 options
from
$112
Options — cheapest to highest
Non-refundable · Room only
recommendationId: REC_004 → pass to Pricing API
RateHawkcheapest
$112total
Refundable · Room only
recommendationId: REC_005
Booking.com
$115total
Junior Suite
standardRoomId: R3 · 1 option
from
$198
Options
Non-refundable · Room only
recommendationId: REC_006 → pass to Pricing API
Expediacheapest
$198total
The 5 objects — quick reference
rooms
Raw names from all suppliers. 10 entries. Don't build UI from this.
rates
All raw rates from all suppliers. Multiple entries per room.
recommendations
6 deduped winners. Pass recommendationId to Pricing.
standardisedRooms
3 unique rooms. Room name, images, facilities.
✓ standardisedRoomGroups
Room + options + pre-calculated total. Build your UI here.