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.
Authorization
ApiKeyAuth In: header
Query Parameters
City, region, neighbourhood, or country to search for, as free text.
1 <= length <= 120Arrival 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.
Departure date, YYYY-MM-DD. Must be given together with checkin and must be after it.
Guests in the party. Booking's own nbAdults; it affects which properties can accommodate the search and what they cost.
1 <= value <= 302Rooms wanted. Booking's own nbRooms.
1 <= value <= 301Row 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.
0 <= value <= 100000How 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.
1 <= value <= 10025curl -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" } } ] }}