Booking.com API

Booking.com hotel search

Hotels in a destination for a stay: name, stars, review score and count, the price for the stay, check-in and check-out times, position, photos and whether the site prefers it.

Endpoint

GET/v1/booking/search-hotelslimited capacity3 credits
Try in Playground

Limited capacity: this operation currently relies on small shared monthly allowances. Availability can end before your account credits are used. Contact support before scheduling or bulk use. Allowances are shared across customers and related operations; this is not a per-account entitlement.

Parameters

Query parameters

NameRequiredDescriptionExample
locationnoA city, district, landmark or hotel name; resolved to a destination once and remembered (or pass destination_id and destination_type)Lisbon
destination_idnoA destination id from booking/locations-2167973
destination_typenoThe destination's type from booking/locationsCITY
checkinyesCheck-in date, YYYY-MM-DD2026-10-10
checkoutyesCheck-out date, YYYY-MM-DD2026-10-12
adultsnoAdults, 1 to 302
children_agesnoChildren's ages, separated by commas
roomsnoRooms, 1 to 301
pagenoPage number1
sortnopopularity, price, class, review_score or distance
min_pricenoMinimum price per night in the currency
max_pricenoMaximum price per night in the currency
filtersnoThe site's category filters, separated by commas (class::4, free_cancellation::1…)
currencynoThree-letter currency codeGBP
languagenoLanguage code for the site's texten-gb
unitsnometric or imperial
temperature_unitnoc or f

Examples

Make the request

curl
curl "https://www.monocrawl.com/v1/booking/search-hotels?checkin=2026-10-10&checkout=2026-10-12" \
  -H "x-api-key: mn_your_key_here"
TypeScript
typescript
const key = process.env.MONOCRAWL_API_KEY;
if (!key) throw new Error('Set MONOCRAWL_API_KEY on your server.');
const res = await fetch(
  "https://www.monocrawl.com/v1/booking/search-hotels?checkin=2026-10-10&checkout=2026-10-12",
  { headers: { "x-api-key": key } },
);
const body = await res.json();

if (!body.success) {
  // one error shape for every endpoint — see /docs/errors
  throw new Error(`${body.error.type}: ${body.error.message}`);
}

console.log(body.data, "credits left:", body.credits_remaining);
Python
python
import os
import requests

res = requests.get(
    "https://www.monocrawl.com/v1/booking/search-hotels?checkin=2026-10-10&checkout=2026-10-12",
    headers={"x-api-key": os.environ["MONOCRAWL_API_KEY"]},
    timeout=60,
)
body = res.json()

if not body["success"]:
    # one error shape for every endpoint — see /docs/errors
    raise RuntimeError(f"{body['error']['type']}: {body['error']['message']}")

print(body["data"], "credits left:", body["credits_remaining"])

Response

One envelope across every endpoint

This illustrative envelope is not a live response or a payload schema. Variable-cost operations may settle a charge different from the list price below. A successful response puts the platform payload in data and reports the exact credits used, remaining balance, request id and cache status beside it.

200 · application/json
{
  "success": true,
  "platform": "booking",
  "endpoint": "/v1/booking/search-hotels",
  "data": { "…": "platform-specific fields" },
  "credits_used": 3,
  "credits_remaining": 99,
  "request_id": "req_…",
  "cached": false
}

Failures return the shared typed error envelope and cost nothing. Response contract · Error reference

First call in under a minute

150 free credits and a ready-made key the moment you sign up. No card.