Skip to main content
Glama

booking_search: GET /

hasdata_booking_search_getBookingSearchResults
Read-only

Get Booking Search Results

Searches Booking.com for accommodations by destination keyword and stay dates (checkInDate / checkOutDate) with guest composition (rooms, adults, children with ages) and rich filtering: property type, star rating, review score, hotel and room facilities, distance from center, reservation policy, bed preference, travel group, online payment, accessibility, plus optional price range and bedroom/bathroom counts. Each page returns 25 results. To page through a destination, take pagination.nextPageToken from the response and pass it back as nextPageToken on the next call. The legacy page parameter still works but, on large destinations, returns duplicate properties across pages, so nextPageToken is preferred. Locale is controlled by language and currency. Returns each hotel's hotelId, title and Booking URL, location info (city, address, coordinates, distance to center / nearest beach), policies (free cancellation, no prepayment, child/pet stays), price (per stay, before discount, discount, currency), rating, review summary and main photo. Use to power travel-planning agents, OTA price/inventory monitoring, hotel competitor analysis, lead-generation in the hospitality vertical, or to feed hotelId / URL into the Booking Place endpoint for full property details.

Input Schema

NameRequiredDescriptionDefault
pageNoLegacy pagination. Booking.com returns 25 results per page; pass `2` for results 26–50, `3` for 51–75, etc. On large destinations this returns duplicate properties across pages — use `nextPageToken` instead. Ignored when `nextPageToken` is provided.
sortNoSort order applied by Booking.com to the results page.
roomsYesNumber of rooms to book.
adultsYesNumber of adult guests across all rooms.
keywordYesFree-text destination query. Usually a city, region or neighborhood (e.g. `Paris`, `Manhattan, New York`); a specific property name is also accepted.
meals__NoFilter by available meal plans. Multiple values are combined with OR.
bedroomsNoMinimum number of bedrooms in the property.
childrenYesNumber of child guests across all rooms (0–10). Pass `0` if there are no children.
currencyNoCurrency of the prices returned in the response. Use `hotelCurrency` to keep each property's native currency. Provide one exact documented value (52 allowed), e.g. `hotelCurrency`, `usd`.
languageNoLanguage of the Booking.com interface and localized fields in the response.
rating__NoFilter by official star rating. Multiple values are combined with OR.
bathroomsNoMinimum number of bathrooms in the property.
price_max_NoMaximum total price for the stay, in the requested `currency`. Must be `>= 20` and greater than `price[min]`. Required if `price[min]` is omitted.
price_min_NoMinimum total price for the stay, in the requested `currency`. Must be `>= 10`. Required if `price[max]` is omitted.
checkInDateYesCheck-in date in `YYYY-MM-DD` format. Must be in the future and earlier than `checkOutDate`.
checkOutDateYesCheck-out date in `YYYY-MM-DD` format. Must be later than `checkInDate`.
childrenAgesNoComma-separated list of child ages, one entry per child (each `0`–`17`). Required when `children > 0` and the number of ages must equal `children`. Example: `1,3,7`
facilities__NoFilter by property-level facilities. Multiple values are combined with OR.
nextPageTokenNoRecommended way to paginate. Omit it on the first request; the response returns `pagination.nextPageToken`, which you pass back here to fetch the next page. When a successful response omits the token, the last page has been reached. If a token has expired, the request fails with an error — start again without `nextPageToken`.
reviewScore__NoFilter by minimum guest review score bucket. Multiple values are combined with OR.
travelGroup__NoFilter by travel-group oriented stay options. Multiple values are combined with OR.
propertyType__NoFilter by property type. Multiple values are combined with OR.
bedPreference__NoFilter by bed configuration. Multiple values are combined with OR.
onlinePayment__NoFilter by online payment options.
roomFacilities__NoFilter by in-room facilities. Multiple values are combined with OR.
reservationPolicy__NoFilter by reservation flexibility. Multiple values are combined with OR.
roomAccessibility__NoFilter by in-room accessibility features. Multiple values are combined with OR.
distanceFromCenter__NoFilter by distance from the destination center. Multiple values are combined with OR.
propertyAccessibility__NoFilter by property-level accessibility features. Multiple values are combined with OR.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • addedInput schema / properties / nextPageToken
      Added value: +{
      +  "description": "Recommended way to paginate. Omit it on the first request; the response returns `pagination.nextPageToken`, which you pass back here to fetch the next page. When a successful response omits the token, the last page has been reached. If a token has expired, the request fails with an error — start again without `nextPageToken`.",
      +  "type": "string"
      +}
    • changedInput schema / properties / page / description
      Previous value: -"Page number of the search results. Booking.com returns 25 results per page; pass `2` for results 26–50, `3` for 51–75, etc."New value: +"Legacy pagination. Booking.com returns 25 results per page; pass `2` for results 26–50, `3` for 51–75, etc. On large destinations this returns duplicate properties across pages — use `nextPageToken` instead. Ignored when `nextPageToken` is provided."
  2. Changed2 schema fields changed
    • changedInput schema / properties / currency / description
      Previous value: -"Currency of the prices returned in the response. Use `hotelCurrency` to keep each property's native currency."New value: +"Currency of the prices returned in the response. Use `hotelCurrency` to keep each property's native currency. Provide one exact documented value (52 allowed), e.g. `hotelCurrency`, `usd`."
    • removedInput schema / properties / currency / enum
      Removed value: -[
      -  "hotelCurrency",
      -  "usd",
      -  "eur",
      -  "aed",
      -  "ars",
      -  "aud",
      -  "azn",
      -  "bhd",
      -  "brl",
      -  "cad",
      -  "chf",
      -  "clp",
      -  "cny",
      -  "cop",
      -  "czk",
      -  "dkk",
      -  "egp",
      -  "fjd",
      -  "gbp",
      -  "gel",
      -  "hkd",
      -  "huf",
      -  "idr",
      -  "ils",
      -  "inr",
      -  "isk",
      -  "jod",
      -  "jpy",
      -  "krw",
      -  "kwd",
      -  "kzt",
      -  "mdl",
      -  "mop",
      -  "mxn",
      -  "myr",
      -  "nad",
      -  "nok",
      -  "nzd",
      -  "omr",
      -  "pln",
      -  "qar",
      -  "ron",
      -  "rub",
      -  "sar",
      -  "sek",
      -  "sgd",
      -  "thb",
      -  "try",
      -  "twd",
      -  "uah",
      -  "xof",
      -  "zar"
      -]
  3. Changed30 schema fields changed
    • removedInput schema / properties / bedPreference[]
      Removed value: -{
      -  "description": "Filter by bed configuration. Multiple values are combined with OR.",
      -  "items": {
      -    "enum": [
      -      "twinBeds",
      -      "doubleBed"
      -    ],
      -    "type": "string"
      -  },
      -  "type": "array"
      -}
    • addedInput schema / properties / bedPreference__
      Added value: +{
      +  "description": "Filter by bed configuration. Multiple values are combined with OR.",
      +  "items": {
      +    "enum": [
      +      "twinBeds",
      +      "doubleBed"
      +    ],
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • removedInput schema / properties / distanceFromCenter[]
      Removed value: -{
      -  "description": "Filter by distance from the destination center. Multiple values are combined with OR.",
      -  "items": {
      -    "enum": [
      -      "lessThan1Km",
      -      "lessThan3Km",
      -      "lessThan5Km"
      -    ],
      -    "type": "string"
      -  },
      -  "type": "array"
      -}
    • addedInput schema / properties / distanceFromCenter__
      Added value: +{
      +  "description": "Filter by distance from the destination center. Multiple values are combined with OR.",
      +  "items": {
      +    "enum": [
      +      "lessThan1Km",
      +      "lessThan3Km",
      +      "lessThan5Km"
      +    ],
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • removedInput schema / properties / facilities[]
      Removed value: -{
      -  "description": "Filter by property-level facilities. Multiple values are combined with OR.",
      -  "items": {
      -    "enum": [
      -      "swimmingPool",
      -      "parking",
      -      "spa",
      -      "freeWifi",
      -      "hotTubJacuzzi",
      -      "airportShuttle",
      -      "fitnessCenter",
      -      "restaurant",
      -      "nonSmokingRooms",
      -      "frontDesk24Hour",
      -      "electricVehicleChargingStation",
      -      "wheelchairAccessible",
      -      "roomService"
      -    ],
      -    "type": "string"
      -  },
      -  "type": "array"
      -}
    • addedInput schema / properties / facilities__
      Added value: +{
      +  "description": "Filter by property-level facilities. Multiple values are combined with OR.",
      +  "items": {
      +    "enum": [
      +      "swimmingPool",
      +      "parking",
      +      "spa",
      +      "freeWifi",
      +      "hotTubJacuzzi",
      +      "airportShuttle",
      +      "fitnessCenter",
      +      "restaurant",
      +      "nonSmokingRooms",
      +      "frontDesk24Hour",
      +      "electricVehicleChargingStation",
      +      "wheelchairAccessible",
      +      "roomService"
      +    ],
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • removedInput schema / properties / meals[]
      Removed value: -{
      -  "description": "Filter by available meal plans. Multiple values are combined with OR.",
      -  "items": {
      -    "enum": [
      -      "breakfastIncluded",
      -      "kitchenFacilities"
      -    ],
      -    "type": "string"
      -  },
      -  "type": "array"
      -}
    • addedInput schema / properties / meals__
      Added value: +{
      +  "description": "Filter by available meal plans. Multiple values are combined with OR.",
      +  "items": {
      +    "enum": [
      +      "breakfastIncluded",
      +      "kitchenFacilities"
      +    ],
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • removedInput schema / properties / onlinePayment[]
      Removed value: -{
      -  "description": "Filter by online payment options.",
      -  "items": {
      -    "enum": [
      -      "acceptsOnlinePayments"
      -    ],
      -    "type": "string"
      -  },
      -  "type": "array"
      -}
    • addedInput schema / properties / onlinePayment__
      Added value: +{
      +  "description": "Filter by online payment options.",
      +  "items": {
      +    "enum": [
      +      "acceptsOnlinePayments"
      +    ],
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • removedInput schema / properties / price[max]
      Removed value: -{
      -  "description": "Maximum total price for the stay, in the requested `currency`. Must be `>= 20` and greater than `price[min]`. Required if `price[min]` is omitted.",
      -  "type": "number"
      -}
    • removedInput schema / properties / price[min]
      Removed value: -{
      -  "description": "Minimum total price for the stay, in the requested `currency`. Must be `>= 10`. Required if `price[max]` is omitted.",
      -  "type": "number"
      -}
    • addedInput schema / properties / price_max_
      Added value: +{
      +  "description": "Maximum total price for the stay, in the requested `currency`. Must be `>= 20` and greater than `price[min]`. Required if `price[min]` is omitted.",
      +  "type": "number"
      +}
    • addedInput schema / properties / price_min_
      Added value: +{
      +  "description": "Minimum total price for the stay, in the requested `currency`. Must be `>= 10`. Required if `price[max]` is omitted.",
      +  "type": "number"
      +}
    • removedInput schema / properties / propertyAccessibility[]
      Removed value: -{
      -  "description": "Filter by property-level accessibility features. Multiple values are combined with OR.",
      -  "items": {
      -    "enum": [
      -      "auditoryGuidance",
      -      "toiletWithGrabRails",
      -      "visualAidsTactileSigns",
      -      "visualAidsBraille",
      -      "bathroomEmergencyCord",
      -      "raisedToilet",
      -      "loweredSink"
      -    ],
      -    "type": "string"
      -  },
      -  "type": "array"
      -}
    • addedInput schema / properties / propertyAccessibility__
      Added value: +{
      +  "description": "Filter by property-level accessibility features. Multiple values are combined with OR.",
      +  "items": {
      +    "enum": [
      +      "auditoryGuidance",
      +      "toiletWithGrabRails",
      +      "visualAidsTactileSigns",
      +      "visualAidsBraille",
      +      "bathroomEmergencyCord",
      +      "raisedToilet",
      +      "loweredSink"
      +    ],
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • removedInput schema / properties / propertyType[]
      Removed value: -{
      -  "description": "Filter by property type. Multiple values are combined with OR.",
      -  "items": {
      -    "enum": [
      -      "hostels",
      -      "bedAndBreakfast",
      -      "hotels",
      -      "apartments",
      -      "resorts",
      -      "guesthouses",
      -      "homestays",
      -      "entireHomesAndApartments"
      -    ],
      -    "type": "string"
      -  },
      -  "type": "array"
      -}
    • addedInput schema / properties / propertyType__
      Added value: +{
      +  "description": "Filter by property type. Multiple values are combined with OR.",
      +  "items": {
      +    "enum": [
      +      "hostels",
      +      "bedAndBreakfast",
      +      "hotels",
      +      "apartments",
      +      "resorts",
      +      "guesthouses",
      +      "homestays",
      +      "entireHomesAndApartments"
      +    ],
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • removedInput schema / properties / rating[]
      Removed value: -{
      -  "description": "Filter by official star rating. Multiple values are combined with OR.",
      -  "items": {
      -    "enum": [
      -      "oneStar",
      -      "twoStars",
      -      "threeStars",
      -      "fourStars",
      -      "fiveStars"
      -    ],
      -    "type": "string"
      -  },
      -  "type": "array"
      -}
    • addedInput schema / properties / rating__
      Added value: +{
      +  "description": "Filter by official star rating. Multiple values are combined with OR.",
      +  "items": {
      +    "enum": [
      +      "oneStar",
      +      "twoStars",
      +      "threeStars",
      +      "fourStars",
      +      "fiveStars"
      +    ],
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • removedInput schema / properties / reservationPolicy[]
      Removed value: -{
      -  "description": "Filter by reservation flexibility. Multiple values are combined with OR.",
      -  "items": {
      -    "enum": [
      -      "freeCancellation",
      -      "noPrepayment"
      -    ],
      -    "type": "string"
      -  },
      -  "type": "array"
      -}
    • addedInput schema / properties / reservationPolicy__
      Added value: +{
      +  "description": "Filter by reservation flexibility. Multiple values are combined with OR.",
      +  "items": {
      +    "enum": [
      +      "freeCancellation",
      +      "noPrepayment"
      +    ],
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • removedInput schema / properties / reviewScore[]
      Removed value: -{
      -  "description": "Filter by minimum guest review score bucket. Multiple values are combined with OR.",
      -  "items": {
      -    "enum": [
      -      "wonderful",
      -      "veryGood",
      -      "good",
      -      "pleasant"
      -    ],
      -    "type": "string"
      -  },
      -  "type": "array"
      -}
    • addedInput schema / properties / reviewScore__
      Added value: +{
      +  "description": "Filter by minimum guest review score bucket. Multiple values are combined with OR.",
      +  "items": {
      +    "enum": [
      +      "wonderful",
      +      "veryGood",
      +      "good",
      +      "pleasant"
      +    ],
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • removedInput schema / properties / roomAccessibility[]
      Removed value: -{
      -  "description": "Filter by in-room accessibility features. Multiple values are combined with OR.",
      -  "items": {
      -    "enum": [
      -      "upperFloorsAccessibleByElevator",
      -      "entireUnitLocatedOnGroundFloor",
      -      "walkInShower",
      -      "entireUnitWheelchairAccessible",
      -      "adaptedBath",
      -      "rollInShower",
      -      "showerChair",
      -      "emergencyCordInBathroom",
      -      "toiletWithGrabRails",
      -      "raisedToilet",
      -      "lowerSink"
      -    ],
      -    "type": "string"
      -  },
      -  "type": "array"
      -}
    • addedInput schema / properties / roomAccessibility__
      Added value: +{
      +  "description": "Filter by in-room accessibility features. Multiple values are combined with OR.",
      +  "items": {
      +    "enum": [
      +      "upperFloorsAccessibleByElevator",
      +      "entireUnitLocatedOnGroundFloor",
      +      "walkInShower",
      +      "entireUnitWheelchairAccessible",
      +      "adaptedBath",
      +      "rollInShower",
      +      "showerChair",
      +      "emergencyCordInBathroom",
      +      "toiletWithGrabRails",
      +      "raisedToilet",
      +      "lowerSink"
      +    ],
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • removedInput schema / properties / roomFacilities[]
      Removed value: -{
      -  "description": "Filter by in-room facilities. Multiple values are combined with OR.",
      -  "items": {
      -    "enum": [
      -      "privateBathroom",
      -      "balcony",
      -      "seaView",
      -      "kitchenKitchenette",
      -      "airConditioning",
      -      "bathtub",
      -      "hotTub",
      -      "view",
      -      "spaTub",
      -      "upperFloorsAccessibleByElevator",
      -      "microwave",
      -      "refrigerator",
      -      "coffeeMachine",
      -      "electricKettle",
      -      "heating",
      -      "towels",
      -      "toilet",
      -      "mountainView",
      -      "flatScreenTv",
      -      "tv",
      -      "coffeeTeaMaker",
      -      "hairdryer",
      -      "toiletPaper",
      -      "shower",
      -      "linens"
      -    ],
      -    "type": "string"
      -  },
      -  "type": "array"
      -}
    • addedInput schema / properties / roomFacilities__
      Added value: +{
      +  "description": "Filter by in-room facilities. Multiple values are combined with OR.",
      +  "items": {
      +    "enum": [
      +      "privateBathroom",
      +      "balcony",
      +      "seaView",
      +      "kitchenKitchenette",
      +      "airConditioning",
      +      "bathtub",
      +      "hotTub",
      +      "view",
      +      "spaTub",
      +      "upperFloorsAccessibleByElevator",
      +      "microwave",
      +      "refrigerator",
      +      "coffeeMachine",
      +      "electricKettle",
      +      "heating",
      +      "towels",
      +      "toilet",
      +      "mountainView",
      +      "flatScreenTv",
      +      "tv",
      +      "coffeeTeaMaker",
      +      "hairdryer",
      +      "toiletPaper",
      +      "shower",
      +      "linens"
      +    ],
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • removedInput schema / properties / travelGroup[]
      Removed value: -{
      -  "description": "Filter by travel-group oriented stay options. Multiple values are combined with OR.",
      -  "items": {
      -    "enum": [
      -      "adultsOnly",
      -      "petFriendly"
      -    ],
      -    "type": "string"
      -  },
      -  "type": "array"
      -}
    • addedInput schema / properties / travelGroup__
      Added value: +{
      +  "description": "Filter by travel-group oriented stay options. Multiple values are combined with OR.",
      +  "items": {
      +    "enum": [
      +      "adultsOnly",
      +      "petFriendly"
      +    ],
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
  4. Changed2 schema fields changed
    • addedInput schema / properties / childrenAges
      Added value: +{
      +  "description": "Comma-separated list of child ages, one entry per child (each `0`–`17`). Required when `children > 0` and the number of ages must equal `children`.\n\nExample: `1,3,7`\n",
      +  "type": "string"
      +}
    • removedInput schema / properties / childrenAgesJson
      Removed value: -{
      -  "description": "JSON-encoded array of child ages, one entry per child (each `0`–`17`). Required when `children > 0` and the array length must equal `children`. Must not be passed when `children = 0`.\n\nExample: `[1, 3, 7]`\n",
      -  "type": "string"
      -}
  5. Added

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnly, non-destructive, open-world), and the description adds substantial behavior beyond them: a fixed page size of 25, the token round-trip protocol including last-page signaling and expiry errors, and the documented duplicate-result defect of the legacy `page` parameter. It also discloses that locale/language/currency shape the response.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is front-loaded — purpose, then inputs, then pagination, then locale, then return fields, then use cases — and every section is scannable. The long enumeration of filter categories and returned fields is somewhat repetitive with the schema, which keeps it from a 5.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 29 parameters, no output schema and no nested objects, the description carries the return-value burden and does so by listing hotel identity, location, policies, price, rating and photo. Pagination, locale control and the downstream Booking Place handoff are all covered, leaving nothing an agent needs to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents every parameter including the pagination token, price bounds and filter semantics. The description's parameter content largely restates the schema at a category level (filter families, guest composition, dates) without adding syntax or constraints the schema lacks, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb+resource ('Get Booking Search Results', 'Searches Booking.com for accommodations') and enumerates the inputs that define the search (destination keyword, check-in/check-out, guest composition, filters). It explicitly distinguishes itself from the nearest sibling by saying the results feed `hotelId`/URL into the Booking Place endpoint for full property details.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives concrete usage context ('travel-planning agents, OTA price/inventory monitoring, hotel competitor analysis, lead-generation') and a clear follow-up path to the Booking Place endpoint, plus an explicit preference for `nextPageToken` over legacy `page` with the reason (duplicate properties on large destinations). It stops short of stating when NOT to use this tool versus near-alternatives such as Google Hotels or Tripadvisor search.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources