Skip to main content
GET
Get Rooms & Rates
Fetch the entire rate table for a property on given dates. /search returns only the single cheapest rate per property; this endpoint returns every rate on every room type in one call — 30 rates across 5 priced room types for a Rome five-star, 68 rates across 11 room types for a Barcelona hotel. The two path parameters are the two segments of a Booking hotel URL:
Both also come back on every /search result as country_code and slug.

Path Parameters

string
required
ISO country code from the property URL, e.g. it.
string
required
Property slug from the property URL, e.g. radisson-collection-roma-antica.

Query Parameters

string
required
Check-in date, YYYY-MM-DD.
string
required
Check-out date, YYYY-MM-DD.
integer
default:"2"
Number of adults, 130.
string
Comma-separated children’s ages, e.g. 4,9.
integer
default:"1"
Number of rooms, 130.
string
default:"USD"
Currency for prices, e.g. EUR, GBP.
string
default:"en-us"
Locale for text and price formatting, e.g. fr, de. Also decides whether room sizes come back in square metres or square feet — see area_unit.

Response

string
Booking property id.
string
Property name.
string
Echo of the requested slug.
string
Canonical property URL on booking.com.
string
Echo of the check-in date.
string
Echo of the check-out date.
integer
Echo of the requested adults.
string
Echo of the requested children’s ages, or null.
integer
Echo of the requested number of rooms.
string
Currency the prices are quoted in.
boolean
No availability for these dates. The room catalogue is still returned — see the note below.
string
Unit for rooms[].size_m2SQUARE_METER or SQUARE_FEET. Locale-driven: it follows the requested language.
integer
Total rates across every room.
Room[]
Every room type at the property.
MealPlan[]
Meal plans referenced by rates[].meal_plan_index.
object
Children and extra-bed rules, with priced age bands.
Every price is returned both as Booking’s localized display string ("€ 1.170") and as a numeric amount + currency. Always do arithmetic on amount, never on display.
Not every room is priced. Rooms with no availability for the dates still come back with full detail — description, facilities, bed options, photos — but an empty rates[]. On one Rome five-star, 5 of 7 rooms were priced; on a Barcelona hotel, 11 of 16.
Sold out is a 200, not an error. When Booking has no availability at all for the dates you get is_sold_out: true, rate_count: 0 and an empty rates[] on every room — the room catalogue, facilities and highlights are still returned. The same Rome guesthouse returns is_sold_out: true with 0 rates for 2026-09-10 and is_sold_out: false with 22 rates for 2026-12-05. Branch on is_sold_out, not on a failed request.
A property that does not exist returns 404. Missing checkin/checkout, or a malformed children value, returns 400.

Example

Trimmed to 2 of 7 rooms and 3 of 30 rates:
Response
The usual flow: /search for the shortlist, take country_code + slug off any result, then call /rooms for that property’s full rate table.
Each rooms request costs 10 credits. Failed requests are not charged.