Booking API endpoint
Returns a Booking.com hotel's core detail page: rating, facilities, highlights, house rules, cover photos, and rooms with their own photos.
/booking/hotel-detailhotel_id (required): Booking.com hotel id, from a prior booking-search call's properties[].id, for example 2845972.data.photos are the hotel's cover/gallery photos; data.rooms[].photos are each room's own photos — both are absolute, directly loadable image URLs. data.house_rules covers check-in age restrictions, curfew, group limits, exclusive payment methods, children policy, and pet policy. Per-room live pricing and guest-submitted Q&A are not covered by this endpoint.
| Field | In the sample | Value in the sample |
|---|---|---|
| id | Has a value | |
| name | Has a value | “MULTIRESIDENCE L'ELYSEE Paris” |
| address | Has a value | |
| star_rating | Has a value | 4 |
| review_count | Has a value | 310 |
| rating_scores.hotel_clean | Has a value | 8.6 |
| rating_scores.hotel_comfort | Has a value | 8.3 |
| rating_scores.hotel_free_wifi | Has a value | 8.4 |
| rating_scores.hotel_location | Has a value | 9.5 |
| rating_scores.hotel_paid_wifi | Has a value | 8.3 |
| rating_scores.hotel_services | Has a value | 8.2 |
| rating_scores.hotel_staff | Has a value | 8.8 |
| rating_scores.hotel_value | Has a value | 8 |
| rating_scores.total | Has a value | 8.3 |
| facilities_count | Has a value | 55 |
| facilities | Has a value | 20 entries |
| highlights | Has a value | 6 entries |
| photos | Has a value | 30 entries |
| house_rules.checkin_age_restriction_phrase | Has a value | “There's no age requirement for check-in” |
| house_rules.allow_children | Has a value | true |
| house_rules.pets_allowed | Has a value | “NO” |
| house_rules.payment_exclusive | Has a value | true |
| rooms | Has a value | 3 entries |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| hotel_id | integer | Yes | Booking.com hotel id, from a prior search's property id | 2845972 | |
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/booking/hotel-detail?hotel_id=2845972" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"id": 2845972,
"name": "MULTIRESIDENCE L'ELYSEE",
"address": "10 Rue de something, Paris",
"star_rating": 4,
"review_count": 293,
"rating_scores": {
"Location": 9.49,
"Staff": 8.83
},
"facilities_count": 42,
"facilities": [
{
"title": "Free WiFi",
"icon": "wifi"
}
],
"highlights": [
{
"title": "Fitness center",
"icon": "fitness"
}
],
"photos": [
"https://cf.bstatic.com/xdata/images/hotel/max1024x768/119583103.jpg?k=..."
],
"house_rules": {
"checkin_age_restriction_phrase": "There's no age requirement for check-in",
"allow_children": true,
"pets_allowed": "NO",
"payment_exclusive": true
},
"rooms": [
{
"id": 284597201,
"name": "Studio Apartment",
"photo_count": 26,
"photos": [
"https://cf.bstatic.com/xdata/images/hotel/max1024x768/525338823.jpg?k=..."
]
}
]
}
}Request schema
No body schema
Response schema
#/definitions/booking.bookingHotelDetailResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | booking.HotelDetailResponse | No | ||||
| data.address | string | No | ||||
| data.facilities | array | No | ||||
| data.facilities[].icon | string | No | ||||
| data.facilities[].title | string | No | ||||
| data.facilities_count | integer | No | ||||
| data.highlights | array | No | ||||
| data.highlights[].icon | string | No | ||||
| data.highlights[].title | string | No | ||||
| data.house_rules | booking.HouseRules | No | ||||
| data.house_rules.allow_children | boolean | No | ||||
| data.house_rules.checkin_age_restriction_phrase | string | No | ||||
| data.house_rules.curfew_phrase | string | No | ||||
| data.house_rules.group_limit_phrase | string | No | ||||
| data.house_rules.payment_exclusive | boolean | No | ||||
| data.house_rules.pets_allowed | string | No | ||||
| data.id | integer | No | ||||
| data.name | string | No | ||||
| data.photos | array | No | Photos are hotel-level cover/gallery photos (absolute URLs), distinct from each Room's own Photos. | |||
| data.rating_scores | object | No | ||||
| data.review_count | integer | No | ||||
| data.rooms | array | No | ||||
| data.rooms[].id | integer | No | ||||
| data.rooms[].name | string | No | ||||
| data.rooms[].photo_count | integer | No | ||||
| data.rooms[].photos | array | No | ||||
| data.star_rating | number | 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/hotel-detail?hotel_id=2845972" \
-H "x-api-key: $CRAWLORA_API_KEY"