Skip to content

List available hotel rooms

Request

This endpoint returns the cheapest available room for each hotel matching your check-in and check-out dates. You can search a specific list of up to 1000 hotels with hotel_ids, or an area with latitude, longitude and radius (the two are mutually exclusive). For each hotel you get whether the price includes breakfast or other meals and whether it can be cancelled for free. Request the room_details extra for a per-room price breakdown, and use add_filtered_rate/options to filter the results.

String enum values (such as user_platform, extras, options, add_filtered_rate, order_by and order_dir) are case-insensitive. language accepts the lowercase codes listed below.

Security
BearerAuth
Query
checkinstring, (date)required

The arrival date.

checkoutstring, (date)required

The departure date. Must be later than {checkin}. Must be between 1 and 30 days after {checkin}.

guest_countrystringrequired

Guest country code (ISO 3166-1 alpha-2). Used to display the most accurate prices and price details for guests from that country.

Example:guest_country=nl
hotel_idsArray of integers, (int32), [ 0 .. 1000 ] items

Limit the result to up to 1000 specific hotels that have availability for the given guests and dates. Mutually exclusive with latitude/longitude: use either a hotel list or an area search, not both.

Example:hotel_ids=96969
latitudenumber, (double), decimal places <= 5, [ -90 .. 90 ]

Latitude for an area search, used together with longitude and radius. Requires longitude; cannot be combined with hotel_ids.

longitudenumber, (double), decimal places <= 5, [ -180 .. 180 ]

Longitude for an area search, used together with latitude and radius. Requires latitude; cannot be combined with hotel_ids.

radiusnumber, (double), [ 15 .. 100 ]

Search radius in km around latitude/longitude. Only applies to an area search. Minimum and default 15, maximum 100.

Default:15
room1string

Guests per room, as a comma-separated list: A for each adult and the age (0-17) for each child (e.g. A,A,5 = two adults and a 5-year-old). For multi-room searches, repeat the parameter per room as room1, room2, ... up to room30.

no_roomsinteger, (int32), >= 1

Splits a single guest group into this many rooms automatically. Only applied when exactly one room group is provided and the value is between 2 and the number of adults inclusive; larger values have no effect.

currencystring

Return prices in this currency (ISO 4217 code).

Example:currency=EUR
languagestring

The user's language.

Default:"en-gb"
Enum:"ar""bg""ca""cs""da""de""el""en""en-gb""en-us"
user_platformstring

The user's platform.

Enum:"ANDROID""DESKTOP""IOS""MOBILE""TABLET"
geniusinteger, (int32), [ 0 .. 3 ]

Genius loyalty level (0-3) used to include Genius rates the partner is eligible for. Defaults to 0 (no Genius rates).

Default:0
extrasArray of strings

The extra items for this request. See the documentation for more details about each extra.

optionsArray of strings

The list of options to filter the results.

add_filtered_rateArray of strings

The list of rates to filter the results.

order_bystring

The way to order your results. When ordering by distance, make sure to specify latitude and longitude.

Default:"RANKING"
Enum:"DISTANCE""POPULARITY""PRICE""RANKING""REVIEW_SCORE""STARS"
order_dirstring

The direction you wish for your order_by parameter to be ordered in.

Default:"ASC"
Enum:"ASC""DESC"
rowsinteger, (int32), <= 1000

The maximum number of results to return.

pagestring

Pagination token used to retrieve the next page of results. Obtained from next_page.

Headers
Acceptstring
Value:"application/json"
GET
/demand-api-v2-compatible/hotelAvailability
import requests

url = "https://metasearch-connect-api.booking.com/demand-api-v2-compatible/hotelAvailability"

query = {
  "checkin": "2019-08-24",
  "checkout": "2019-08-24",
  "guest_country": "nl",
  "hotel_ids": "96969",
  "latitude": "-90",
  "longitude": "-180",
  "radius": "15",
  "room1": "string",
  "no_rooms": "1",
  "currency": "EUR",
  "language": "ar",
  "user_platform": "ANDROID",
  "genius": "0",
  "extras": "HOTEL_DETAILS",
  "options": "NO_DORMS",
  "add_filtered_rate": "BREAKFAST",
  "order_by": "DISTANCE",
  "order_dir": "ASC",
  "rows": "1000",
  "page": "string"
}

headers = {
  "Accept": "application/json",
  "Authorization": "Bearer <YOUR_string_HERE>"
}

response = requests.get(url, headers=headers, params=query)

data = response.json()
print(data)

Responses

OK

Bodyapplication/json
metaobject(Meta)
resultArray of objects
Response
{ "meta": { "ruid": "string" }, "result": [ {} ] }