toolzerhub API Docs

Search properties

Searches Booking.com for destination and returns one page of properties with coordinates, address, star rating, review count, description, photo and paid-placement markers. Supports real pagination via offset/rows_per_page. Prices require checkin and checkout.

1 credit / requestBilled only on success
GET
/v1/booking/search

Authorization

ApiKeyAuth
x-api-key<token>

In: header

Query Parameters

destination*string

City, region, neighbourhood, or country to search for, as free text.

Length1 <= length <= 120
checkin?string

Arrival date, YYYY-MM-DD. Optional; with dates the search returns availability and prices for that stay, without them every row's price is null. Must be given together with checkout, which must be after it. No other range checking is done.

checkout?string

Departure date, YYYY-MM-DD. Must be given together with checkin and must be after it.

adults?integer

Guests in the party. Booking's own nbAdults; it affects which properties can accommodate the search and what they cost.

Range1 <= value <= 30
Default2
rooms?integer

Rooms wanted. Booking's own nbRooms.

Range1 <= value <= 30
Default1
offset?|

Row offset for pagination, in steps of rows_per_page. This calls Booking's own search API, not the search page, which cannot paginate at all. Read total_results and has_more to know when to stop — depth varies by destination. Capped at 10000 as a sanity bound, not a measured limit.

Range0 <= value <= 10000
Default0
rows_per_page?integer

How many properties to return, 1-100. Booking's own frontend sends 25, which is the default here; 100 is measured working and turns a 353-property city into four calls instead of fifteen. It is not raised past the largest value actually measured.

Range1 <= value <= 100
Default25
curl -X GET "https://example.com/v1/booking/search?destination=San+Francisco" \  -H "x-api-key: YOUR_API_KEY"
{  "data": {    "destination": "San Francisco",    "checkin": "2026-09-10",    "checkout": "2026-09-12",    "adults": 2,    "rooms": 1,    "offset": 0,    "rows_per_page": 25,    "count": 25,    "total_results": 353,    "results_per_page": 25,    "has_more": true,    "exhausted": false,    "priced_for_stay": false,    "pricing_note": "**No dates were given, so no row carries a price.** Booking returns availability and pricing only for a specific stay — a dateless search returns the properties and nothing about what they cost. Pass `checkin` and `checkout` to get prices. An absent `price` here is the question you asked, not missing data.",    "results": [      {        "property_id": "56066",        "slug": "club-quarters-san-francisco",        "country_code": "us",        "url": "https://www.booking.com/hotel/us/club-quarters-san-francisco.html",        "name": "Club Quarters Hotel",        "description": "string",        "star_rating": 4,        "star_rating_scale_max": 5,        "review_score": 8.2,        "review_score_scale_max": 10,        "review_count": 5043,        "external_review_score": 8.76,        "external_review_count": 37,        "photo_url": "https://cf.bstatic.com/xdata/images/hotel/square600/282380075.webp",        "destination_id": 20015732,        "accommodation_type_id": 204,        "is_closed": true,        "is_sold_out": true,        "is_sustainable": true,        "is_ad": false,        "native_ad_id": "string",        "is_preferred": true,        "is_preferred_plus": true,        "location": {          "address": "424 Clay Street",          "city": "San Francisco",          "country_code": "us",          "latitude": 37.795,          "longitude": -122.4,          "display_location": "Financial District",          "distance_from_centre": "0.6 miles from downtown",          "public_transport_distance": "string",          "is_centrally_located": true,          "is_within_best_location_score_area": true        },        "price": {          "per_night_display": "$193",          "stay_total_display": "$386",          "stay_total_amount": 386,          "currency": "USD"        }      }    ]  }}