Booking API endpoint
Searches Booking.com hotels for a destination `query` between `checkin` and `checkout` (`YYYY-MM-DD`, both required). `adults` is 1 to 9 (default 2), `rooms` 1 to 8 (default 1), `children` 0 to 9, and `page` is 1-based. Each property has `name`, `price`, `currency`, `review_score`, `star_rating` and `distance`; `results_count` gives the total.
/booking/searchquery (required): destination name or city, for example Paris.checkin (required): check-in date, YYYY-MM-DD.checkout (required): check-out date, YYYY-MM-DD, must be after checkin.adults: number of adults, 1-9. Defaults to 2.rooms: number of rooms, 1-8. Defaults to 1.children: number of children, 0-9.page: 1-based result page. Defaults to 1.data.destination_id and data.country identify the resolved destination and chain directly into booking-reviews, booking-hotel-detail, and booking-attractions-search. Each data.properties[] entry's id is the hotel_id for booking-reviews/booking-hotel-detail.
| Field | Filled in, of 25 checked | Values in the sample |
|---|---|---|
| id | 25 | |
| slug | 25 | |
| name | 25 | “Tiny Marais Studio Near Arts et Métiers Metro” and 24 other values |
| url | 25 | booking.com |
| star_rating | 21 | 1 to 4, median 4 |
| location | 25 | “3rd arr., Paris” and 14 other values |
| distance | 25 | “0.6 miles from downtown” and 16 other values |
| photo_url | 25 | cf.bstatic.com |
| review_score | 18 | 6 to 9.7, median 8.2 |
| review_count | 18 | 3 to 17,351, median 664 |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| query | string | Yes | Destination name or city | Paris | |
| checkin | string | Yes | Check-in date, YYYY-MM-DD | 2026-09-15 | |
| checkout | string | Yes | Check-out date, YYYY-MM-DD | 2026-09-17 | |
| adults | integer | No | Number of adults, 1-9, default 2 | 2 | |
| rooms | integer | No | Number of rooms, 1-8, default 1 | 1 | |
| children | integer | No | Number of children, 0-9 | 0 | |
| page | integer | No | 1-based result page, default 1 | 1 | |
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/booking/search?query=Paris&checkin=2026-09-15&checkout=2026-09-17&page=1" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"query": "Paris",
"checkin": "2026-09-15",
"checkout": "2026-09-17",
"destination": "Paris",
"country": "fr",
"destination_id": -1456928,
"page": 1,
"results_count": 4228,
"properties": [
{
"id": 470408,
"slug": "de-l-europe-paris2",
"name": "Hotel de l'Europe",
"url": "https://www.booking.com/hotel/fr/de-l-europe-paris2.html",
"star_rating": 2,
"review_score": 6.9,
"review_count": 2386,
"price": 250,
"currency": "EUR",
"photo_url": "https://cf.bstatic.com/xdata/images/hotel/square600/643917388.jpg"
}
]
}
}Request schema
No body schema
Response schema
#/definitions/booking.bookingSearchResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | booking.SearchResponse | No | ||||
| data.checkin | string | No | ||||
| data.checkout | string | No | ||||
| data.country | string | No | ||||
| data.destination | string | No | ||||
| data.destination_id | integer | No | ||||
| data.page | integer | No | ||||
| data.properties | array | No | ||||
| data.properties[].currency | string | No | ||||
| data.properties[].distance | string | No | ||||
| data.properties[].id | integer | No | ||||
| data.properties[].location | string | No | ||||
| data.properties[].name | string | No | ||||
| data.properties[].photo_url | string | No | ||||
| data.properties[].price | number | No | ||||
| data.properties[].review_count | integer | No | ||||
| data.properties[].review_score | number | No | ||||
| data.properties[].slug | string | No | ||||
| data.properties[].star_rating | number | No | ||||
| data.properties[].url | string | No | ||||
| data.query | string | No | ||||
| data.results_count | integer | No | ||||
| msg | string | No | OK |
| Status | Description | Schema |
|---|---|---|
| 400 | Bad Request | #/definitions/app.Response |
| 404 | Not Found | #/definitions/app.Response |
| 429 | Too Many Requests | #/definitions/app.Response |
| 503 | Service Unavailable | #/definitions/app.Response |
Use environment variables for secrets and keep Crawlora API keys server-side.
curl -X GET "https://api.crawlora.net/api/v1/booking/search?query=Paris&checkin=2026-09-15&checkout=2026-09-17&page=1" \
-H "x-api-key: $CRAWLORA_API_KEY"