Endpoint
/v1/booking/search-hotelslimited capacity3 creditsLimited 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
| Name | Required | Description | Example |
|---|---|---|---|
location | no | A city, district, landmark or hotel name; resolved to a destination once and remembered (or pass destination_id and destination_type) | Lisbon |
destination_id | no | A destination id from booking/locations | -2167973 |
destination_type | no | The destination's type from booking/locations | CITY |
checkin | yes | Check-in date, YYYY-MM-DD | 2026-10-10 |
checkout | yes | Check-out date, YYYY-MM-DD | 2026-10-12 |
adults | no | Adults, 1 to 30 | 2 |
children_ages | no | Children's ages, separated by commas | |
rooms | no | Rooms, 1 to 30 | 1 |
page | no | Page number | 1 |
sort | no | popularity, price, class, review_score or distance | |
min_price | no | Minimum price per night in the currency | |
max_price | no | Maximum price per night in the currency | |
filters | no | The site's category filters, separated by commas (class::4, free_cancellation::1…) | |
currency | no | Three-letter currency code | GBP |
language | no | Language code for the site's text | en-gb |
units | no | metric or imperial | |
temperature_unit | no | c or f | |
Examples
Make the request
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
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
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.
{
"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