Hotels.com API endpoint
Returns the public room/unit offer summaries shown for one Hotels.com property and date range, including room labels and non-transactional offer messages. Booking, checkout, payment, and reservation tokens are never returned. property_id is the numeric global property id from a Search response.
/hotels/offersReturns public room/unit offer summaries for one Hotels.com property and date range. This is a read-only availability view; it does not select a room, create a reservation, or return checkout/payment tokens.
Request body:
property_id (string, required): numeric global Hotels.com property id from hotels/search.check_in (string, required): YYYY-MM-DD.check_out (string, required): YYYY-MM-DD, after check_in.adults (integer, optional): adults, default 2.currency (string, optional): display currency, default USD.locale (string, optional): display locale, default en_US.| Field | Filled in, of 4 checked | Values in the sample |
|---|---|---|
| id | 4 | |
| name | 1 | “Our lowest price” |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| request (body) | object | Yes | Room offers request | ||
| x-api-key (header) | string | Yes | API key required |
curl -X POST "https://api.crawlora.net/api/v1/hotels/offers" \
-H "x-api-key: $CRAWLORA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"adults":2,"check_in":"2026-09-10","check_out":"2026-09-11","currency":"USD","locale":"en_US","property_id":"19681371"}'{
"adults": 2,
"check_in": "2026-09-10",
"check_out": "2026-09-11",
"currency": "USD",
"locale": "en_US",
"property_id": "19681371"
}{
"code": 200,
"msg": "OK",
"data": {
"property_id": "19681371",
"check_in": "2026-09-10",
"check_out": "2026-09-11",
"header": "Room options",
"offers": [
{
"id": "unit-1",
"name": "King Room",
"messages": [
"Free cancellation"
]
}
]
}
}Request schema
#/definitions/hotels.OffersOption
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| adults | integer | No | 2 | |||
| check_in | string | Yes | 2026-09-10 | |||
| check_out | string | Yes | 2026-09-11 | |||
| currency | string | No | USD | |||
| locale | string | No | en_US | |||
| property_id | string | Yes | 19681371 |
Response schema
#/definitions/hotels.offersResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | hotels.OffersResponse | No | ||||
| data.check_in | string | No | ||||
| data.check_out | string | No | ||||
| data.header | string | No | ||||
| data.offers | array | No | ||||
| data.offers[].id | string | No | ||||
| data.offers[].messages | array | No | ||||
| data.offers[].name | string | No | ||||
| data.property_id | string | 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 |
| 500 | Internal Server Error | #/definitions/app.Response |
| 503 | Service Unavailable | #/definitions/app.Response |
Use environment variables for secrets and keep Crawlora API keys server-side.
curl -X POST "https://api.crawlora.net/api/v1/hotels/offers" \
-H "x-api-key: $CRAWLORA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"adults":2,"check_in":"2026-09-10","check_out":"2026-09-11","currency":"USD","locale":"en_US","property_id":"19681371"}'