Hotels.com API endpoint
Returns a page of date-bound Hotels.com hotel search results for either a free-text destination or a numeric Hotels.com region_id: property cards with per-night and per-stay prices, review score and count, location, thumbnail, amenities, and promotional badges. Provide exactly one of query or region_id; region_id skips destination typeahead resolution. Prices are the live rates Hotels.com shows for the requested check-in and check-out dates.
/hotels/searchquery (one of query or region_id required): free-text destination, e.g. New York. Resolved internally to a region.region_id (one of query or region_id required): numeric Hotels.com region id, e.g. 2621. Skips destination typeahead resolution. Obtain region ids from /api/v1/hotels/autocomplete or a previous search response. Do not send both query and region_id.check_in (required): YYYY-MM-DD check-in date.check_out (required): YYYY-MM-DD check-out date, after check_in.adults: total adults, 1-9. Defaults to 2 when 0.rooms: rooms, 1-8. Defaults to 1 when 0.page: 1-based result page, 1-50. Defaults to 1.page_size: results per page, 1-50. Defaults to 20.currency: 3-letter currency code, e.g. USD. Defaults to USD.locale: locale, e.g. en_US. Defaults to en_US.Returns a page of date-bound search results with the live per-night and per-stay prices Hotels.com shows for the requested dates. Price fields are display strings: price is the per-stay total (LEAD), strikeout_price the crossed-out reference price, and nightly_price the per-night qualifier (e.g. $369 nightly). Each property's url is the canonical /ho<id>/<slug>/ page (usable with /hotels/property) and its id is the numeric global property id usable with /hotels/rates and /hotels/reviews. A destination with no matches returns an empty properties array.
| Field | Filled in, of 20 checked | Values in the sample |
|---|---|---|
| id | 20 | |
| name | 20 | “PUBLIC, an Ian Schrager hotel” and 19 other values |
| url | 20 | hotels.com |
| location | 20 | New York (15), Theater District (5) |
| review_score | 20 | 8 to 9.4, median 8.8 |
| review_count | 20 | 174 to 7,458, median 3,352 |
| review_title | 20 | Excellent (8), Wonderful (5), Very Good (4) and 1 more |
| price | 20 | “$904 total” and 19 other values |
| strikeout_price | 16 | “$1,117” and 15 other values |
| nightly_price | 20 | “$740 nightly” and 18 other values |
| thumbnail_url | 20 | images.trvl-media.com |
| badges | 15 | median 1 entry |
| amenities | 2 | median 1 entry |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| request (body) | object | Yes | Search request | ||
| x-api-key (header) | string | Yes | API key required |
curl -X POST "https://api.crawlora.net/api/v1/hotels/search" \
-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","page":1,"page_size":20,"query":"New York","region_id":"2621","rooms":1}'{
"adults": 2,
"check_in": "2026-09-10",
"check_out": "2026-09-11",
"currency": "USD",
"locale": "en_US",
"page": 1,
"page_size": 20,
"query": "New York",
"region_id": "2621",
"rooms": 1
}{
"code": 200,
"msg": "OK",
"data": {
"destination": "New York, New York, United States of America",
"region_id": "2621",
"check_in": "2026-09-10",
"check_out": "2026-09-11",
"page": 1,
"properties": [
{
"id": "19681371",
"name": "Pod Times Square",
"url": "https://www.hotels.com/ho630803872/pod-times-square-new-york-united-states-of-america/",
"location": "New York",
"review_score": 9.2,
"review_count": 5901,
"review_title": "Wonderful",
"price": "$424",
"strikeout_price": "$504",
"nightly_price": "$369 nightly",
"thumbnail_url": "https://images.trvl-media.com/lodging/...",
"badges": [
"Member Price $47 off"
]
}
]
}
}Request schema
#/definitions/hotels.SearchOption
| 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 | |||
| page | integer | No | 1 | |||
| page_size | integer | No | 20 | |||
| query | string | No | New York | |||
| region_id | string | No | 2621 | |||
| rooms | integer | No | 1 |
Response schema
#/definitions/hotels.searchResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | hotels.SearchResponse | No | ||||
| data.check_in | string | No | ||||
| data.check_out | string | No | ||||
| data.destination | string | No | ||||
| data.page | integer | No | ||||
| data.properties | array | No | SearchProperty record, 13 fields: amenities, badges, id, location, name, nightly_price, price, review_count, review_score, review_title, strikeout_price, thumbnail_url and 1 more. Described under Hotels.com property rates API. | |||
| data.region_id | string | No | ||||
| data.results_label | 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/search" \
-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","page":1,"page_size":20,"query":"New York","region_id":"2621","rooms":1}'