Live Google Hotels search: properties with rates and ratings, plus photos and reviews.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Fetch the full set of photos for a single Google Hotels property via SerpAPI. Requires a `property_token` taken from a google_hotels_search result. Paginate with next_page_token.
Property token from a google_hotels_search result identifying the property whose photos to fetch.
Force a fresh SerpAPI fetch and bypass this server's result cache. Default false.
Enterprise-only ZeroTrace mode: don't store search params/metadata on SerpAPI. Default false.
Token from a prior response to fetch the next page of photos.
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
claude mcp add --transport http google-hotels https://mcp.wondel.ai/google-hotels/mcp
Fetch the full set of photos for a single Google Hotels property via SerpAPI. Requires a `property_token` taken from a google_hotels_search result. Paginate with next_page_token.
| Argument | Type | Description |
|---|---|---|
| no_cache | boolean | Force a fresh SerpAPI fetch and bypass this server's result cache. Default false. |
| zero_trace | boolean | Enterprise-only ZeroTrace mode: don't store search params/metadata on SerpAPI. Default false. |
| property_token* | string | Property token from a google_hotels_search result identifying the property whose photos to fetch. |
| next_page_token | string | Token from a prior response to fetch the next page of photos. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"property_token"
],
"properties": {
"no_cache": {
"type": "boolean",
"description": "Force a fresh SerpAPI fetch and bypass this server's result cache. Default false."
},
"zero_trace": {
"type": "boolean",
"description": "Enterprise-only ZeroTrace mode: don't store search params/metadata on SerpAPI. Default false."
},
"property_token": {
"type": "string",
"description": "Property token from a google_hotels_search result identifying the property whose photos to fetch."
},
"next_page_token": {
"type": "string",
"description": "Token from a prior response to fetch the next page of photos."
}
}
}Fetch reviews for a single Google Hotels property via SerpAPI. Requires a `property_token` taken from a google_hotels_search result. Filter by category_token or source_number, order with sort_by, and paginate with next_page_token.
| Argument | Type | Description |
|---|---|---|
| hl | string | Language code, e.g. 'en', 'es', 'pt-br'. |
| sort_by | integer | Sort order: 1 = most helpful, 2 = most recent, 3 = highest rating, 4 = lowest rating. |
| no_cache | boolean | Force a fresh SerpAPI fetch and bypass this server's result cache. Default false. |
| zero_trace | boolean | Enterprise-only ZeroTrace mode: don't store search params/metadata on SerpAPI. Default false. |
| source_number | integer | Filter reviews by a specific review source (provider) number, as listed in a prior response. |
| category_token | string | Token to filter reviews by a category/topic (from a prior reviews response). |
| property_token* | string | Property token from a google_hotels_search result identifying the property whose reviews to fetch. |
| next_page_token | string | Token from a prior response to fetch the next page of reviews. |
Search Google Hotels live via SerpAPI. Returns properties (hotels and, with vacation_rentals, rentals) with names, prices/rates, overall ratings, review counts, amenities, images and location, plus the brands/property_types/amenities filter ids you can feed back in. Requires q (a destination, area or hotel name), check_in_date and check_out_date (YYYY-MM-DD). Every property in the results carries a `property_token`: pass it back here (keeping the same check_in_date/check_out_date) to get that one property's full details, or hand it to google_hotels_photos and google_hotels_reviews. Paginate with next_page_token. Prices are in `currency` (default USD). Result shape: { source, fetchedAt, query, search_metadata, search_parameters, search_information, brands, ads, properties: [...], serpapi_pagination } โ the list key is `properties` (ads are separate). Each property: { type, name, property_token, link, gps_coordinates, rate_per_night: { lowest, extracted_lowest }, total_rate, prices: [{ source, num_guests, rate_per_night }], overall_rating, reviews, hotel_class (label), extracted_hotel_class (number), amenities, images: [{ thumbnail, original_image }], nearby_places, description }. With property_token the single property's fields come back at the top level instead of `properties`.
| Argument | Type | Description |
|---|---|---|
| q* | string | Search query: a destination, area, or hotel name (e.g. 'Bali resorts', 'hotels in Paris'). |
| gl | string | Country code for the search, e.g. 'us', 'uk', 'de'. |
| hl | string | Language code, e.g. 'en', 'es', 'pt-br'. |
| adults | integer | Number of adults. Default 2. |
| brands |
We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 2, 2026.
No readOnlyHint / destructiveHint annotations, so clients can't tell a read from a write without asking.
Fix: Add annotations to each tool, e.g. { readOnlyHint: true } for tools that only read.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"property_token"
],
"properties": {
"hl": {
"type": "string",
"description": "Language code, e.g. 'en', 'es', 'pt-br'."
},
"sort_by": {
"type": "integer",
"maximum": 4,
"minimum": 1,
"description": "Sort order: 1 = most helpful, 2 = most recent, 3 = highest rating, 4 = lowest rating."
},
"no_cache": {
"type": "boolean",
"description": "Force a fresh SerpAPI fetch and bypass this server's result cache. Default false."
},
"zero_trace": {
"type": "boolean",
"description": "Enterprise-only ZeroTrace mode: don't store search params/metadata on SerpAPI. Default false."
},
"source_number": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Filter reviews by a specific review source (provider) number, as listed in a prior response."
},
"category_token": {
"type": "string",
"description": "Token to filter reviews by a category/topic (from a prior reviews response)."
},
"property_token": {
"type": "string",
"description": "Property token from a google_hotels_search result identifying the property whose reviews to fetch."
},
"next_page_token": {
"type": "string",
"description": "Token from a prior response to fetch the next page of reviews."
}
}
}| string |
| Filter by hotel brand: comma-separated brand ids (see brands in a prior response). Not applicable to vacation rentals. |
| rating | integer | Minimum overall rating: 7 = 3.5+, 8 = 4.0+, 9 = 4.5+. |
| sort_by | integer | Sort order: 3 = lowest price, 8 = highest rating, 13 = most reviewed. Omit for SerpAPI's default relevance ranking. |
| bedrooms | integer | Minimum number of bedrooms. Vacation rentals only. Default 0. |
| children | integer | Number of children. Default 0. |
| currency | string | Currency of returned prices (ISO code, e.g. 'USD', 'EUR'). Default USD. |
| no_cache | boolean | Force a fresh SerpAPI fetch and bypass this server's result cache. Default false. |
| amenities | string | Filter by amenities: comma-separated amenity ids (see amenities in a prior response). |
| bathrooms | integer | Minimum number of bathrooms. Vacation rentals only. Default 0. |
| max_price | integer | Maximum price per night in the selected currency. |
| min_price | integer | Minimum price per night in the selected currency. |
| zero_trace | boolean | Enterprise-only ZeroTrace mode: don't store search params/metadata on SerpAPI. Default false. |
| hotel_class | string | Filter by hotel class (stars): comma-separated values from 2 to 5, e.g. '4,5'. |
| check_in_date* | string | Check-in date, YYYY-MM-DD. |
| children_ages | string | Ages of the children as comma-separated values, e.g. '5,8'. Each age 1-17; the count should match `children`. |
| eco_certified | boolean | Only show eco-certified properties. Default false. |
| check_out_date* | string | Check-out date, YYYY-MM-DD. |
| property_token | string | Token for a single property from a prior search result; returns that property's full details. Still pass check_in_date and check_out_date. |
| property_types | string | Filter by property type: comma-separated type ids (see property_types in a prior response). |
| special_offers | boolean | Only show properties with special offers. Default false. |
| next_page_token | string | Token from a prior response to fetch the next page of results. |
| vacation_rentals | boolean | Search vacation rentals instead of hotels. Default false (hotels). |
| free_cancellation | boolean | Only show properties offering free cancellation. Default false. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"q",
"check_in_date",
"check_out_date"
],
"properties": {
"q": {
"type": "string",
"description": "Search query: a destination, area, or hotel name (e.g. 'Bali resorts', 'hotels in Paris')."
},
"gl": {
"type": "string",
"maxLength": 2,
"minLength": 2,
"description": "Country code for the search, e.g. 'us', 'uk', 'de'."
},
"hl": {
"type": "string",
"description": "Language code, e.g. 'en', 'es', 'pt-br'."
},
"adults": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Number of adults. Default 2."
},
"brands": {
"type": "string",
"description": "Filter by hotel brand: comma-separated brand ids (see brands in a prior response). Not applicable to vacation rentals."
},
"rating": {
"type": "integer",
"maximum": 9,
"minimum": 7,
"description": "Minimum overall rating: 7 = 3.5+, 8 = 4.0+, 9 = 4.5+."
},
"sort_by": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Sort order: 3 = lowest price, 8 = highest rating, 13 = most reviewed. Omit for SerpAPI's default relevance ranking."
},
"bedrooms": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Minimum number of bedrooms. Vacation rentals only. Default 0."
},
"children": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Number of children. Default 0."
},
"currency": {
"type": "string",
"description": "Currency of returned prices (ISO code, e.g. 'USD', 'EUR'). Default USD."
},
"no_cache": {
"type": "boolean",
"description": "Force a fresh SerpAPI fetch and bypass this server's result cache. Default false."
},
"amenities": {
"type": "string",
"description": "Filter by amenities: comma-separated amenity ids (see amenities in a prior response)."
},
"bathrooms": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Minimum number of bathrooms. Vacation rentals only. Default 0."
},
"max_price": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Maximum price per night in the selected currency."
},
"min_price": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Minimum price per night in the selected currency."
},
"zero_trace": {
"type": "boolean",
"description": "Enterprise-only ZeroTrace mode: don't store search params/metadata on SerpAPI. Default false."
},
"hotel_class": {
"type": "string",
"description": "Filter by hotel class (stars): comma-separated values from 2 to 5, e.g. '4,5'."
},
"check_in_date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Check-in date, YYYY-MM-DD."
},
"children_ages": {
"type": "string",
"description": "Ages of the children as comma-separated values, e.g. '5,8'. Each age 1-17; the count should match `children`."
},
"eco_certified": {
"type": "boolean",
"description": "Only show eco-certified properties. Default false."
},
"check_out_date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Check-out date, YYYY-MM-DD."
},
"property_token": {
"type": "string",
"description": "Token for a single property from a prior search result; returns that property's full details. Still pass check_in_date and check_out_date."
},
"property_types": {
"type": "string",
"description": "Filter by property type: comma-separated type ids (see property_types in a prior response)."
},
"special_offers": {
"type": "boolean",
"description": "Only show properties with special offers. Default false."
},
"next_page_token": {
"type": "string",
"description": "Token from a prior response to fetch the next page of results."
},
"vacation_rentals": {
"type": "boolean",
"description": "Search vacation rentals instead of hotels. Default false (hotels)."
},
"free_cancellation": {
"type": "boolean",
"description": "Only show properties offering free cancellation. Default false."
}
}
}