Search hotels
search_hotelsSearch a destination or latitude/longitude (with country) for explicit hotel-local dates (including today), or date_intent: tonight. Tonight is resolved server-side in the destination time zone, never UTC. Returns hotel summaries and the lowest eligible full-stay total from Expedia, Booking, Agoda and Brek, with direct provider booking links. Search starts at a 20 km core radius, expanding to 40 km then 60 km while fewer than 50 matching static candidates exist, within the same tool call and deadline. Explicit max_distance_km disables expansion. Providers are queried once after the final candidate scope is chosen. Default order is nearest 5 km distance bands first, then greatest Brek price advantage over the cheapest other provider in each band. The advantage uses comparable full-stay totals in the same currency; missing comparisons go last within their band. Preserve the returned hotel order unless the user requests another sort. Supports star ranges or exact stars, guest-review minimum and review count, facilities, property types, distance and full-stay price budgets. Hotel and rate filters can be combined; budgets cover all nights and requested rooms, including mandatory taxes and fees. Guest scores and hotel star classifications have separate filters. no_matching_offer means prices/terms failed the requested filters, not sold out. Room types and room-level rate plans are not included. No HotelUse account or API credits required. Device detection is automatic with a desktop fallback. For a fresh search supply destination or latitude/longitude with country, and either check_in/check_out or date_intent. Search pagination accepts only quote_session_id and cursor. Omit unknown optional values; do not send null. On follow-ups that change destination, dates, guests, hotel/rate filters or sort, call search_hotels again once with the updated criteria and preserve unchanged itinerary/preferences from the latest relevant search. Do not filter or reorder an earlier result page and present it as a new destination search: that page may omit matching hotels. For nearest, closest, or distance order use sort: distance_asc. The geographic_scope.radius_km value is the search radius, never any hotel’s distance. Per-hotel distance_meters is measured from the destination center. For cheapest hotels use sort: stay_total_asc. For "4-star only" use hotel_filters.star_ratings: [4]; for "4- and 5-star only" use [4,5], not star_rating_min: 4 (which includes 4.5). Never broaden explicit criteria silently. Omit providers unless the user requests specific providers; the server handles occupancy support. A successful partial response is the result of this search: show the returned prices and do not automatically repeat the search to fill missing provider quotes. An explicit user refresh calls the tool again. Pagination with quote_session_id/cursor is only for unchanged criteria.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | For nearest, closest, or sorting by distance use distance_asc (exact straight-line distance ascending). Default: nearest 5 km distance bands first (0–5, 5–10, 10–15, 15–20 km), then greatest Brek price advantage over the cheapest other provider within each band (other provider total minus Brek total, in context.currency). Only comparable full-stay totals including mandatory taxes and fees qualify. Missing comparisons are last within their band; ties use lowest total, distance and hotel ID. Unpriced hotels are last. distance_price_asc retains lowest-price ordering within the same bands. stay_total_asc sorts all matched hotels by total without distance bands. distance_asc uses straight-line distance; stay_total_desc uses descending whole-stay price; review_score_desc uses the displayed normalized guest score, then review count. Unpriced hotels remain last in every order. Sorting happens before pagination. | distance_brek_savings_desc |
| rooms | No | ||
| cursor | No | Copy the returned next_cursor exactly. Do not calculate an offset or mix new filters with a quote page. | |
| device | No | Optional traveler device. Omission uses trusted client hints, then desktop. Room follow-ups inherit the effective search device. Mobile app rates require an approved native-app integration. | |
| locale | No | Traveler BCP 47 language, such as en-GB, independent of the destination. | |
| region | No | ||
| country | No | ||
| check_in | No | Hotel-local calendar date; today is allowed in the destination time zone, even after UTC midnight. | |
| currency | No | Requested display currency. Omission defaults to client visitor country, then locale, then USD. | |
| latitude | No | Search center latitude. Supply together with longitude. Explicit coordinates take precedence over city/region. | |
| check_out | No | ||
| longitude | No | Search center longitude. Supply together with latitude. | |
| page_size | No | ||
| providers | No | ||
| date_intent | No | A one-night stay resolved server-side in the destination or hotel time zone. Mutually exclusive with check_in/check_out. | |
| destination | No | ||
| user_locale | No | Optional traveler locale from client context, such as en-GB. Independent of the hotel destination. | |
| rate_filters | No | ||
| hotel_filters | No | ||
| quote_session_id | No | Copy the exact quote_session_id from the result being paged. | |
| residency_country | No | ||
| user_location_country | No | Optional traveler country from client context, used for default currency and residency. Independent of the hotel destination. |