Skip to main content
Glama

search_google_hotels

Find and compare hotels on Google Maps using specific criteria like check-in/out dates, price range, amenities, and ratings. Tailor results by location, language, and preferences for a personalized booking experience.

Input Schema

NameRequiredDescriptionDefault
adultsNo成人数量
amenitiesNo设施
bathroomsNo浴室数量
bedroomsNo卧室数量
brandsNo品牌
check_in_dateYes入住日期
check_out_dateYes退房日期
children_agesNo儿童年龄
currencyNo货币
eco_certifiedNo生态认证
for_displaced_individualsNo为流离失所的个人
free_cancellationNo免费取消
glNo地理位置
hlNo语言
hotel_classNo酒店等级
next_page_tokenNo下一页令牌
price_maxNo最高价格
price_minNo最低价格
property_typeNo物业类型
property_typesNo物业类型列表
qYes搜索查询
ratingNo评分
sort_byNo排序方式
special_offersNo特别优惠

Input Schema (JSON Schema)

{ "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "adults": { "description": "成人数量", "type": "string" }, "amenities": { "description": "设施", "type": "string" }, "bathrooms": { "description": "浴室数量", "type": "string" }, "bedrooms": { "description": "卧室数量", "type": "string" }, "brands": { "description": "品牌", "type": "string" }, "check_in_date": { "description": "入住日期", "type": "string" }, "check_out_date": { "description": "退房日期", "type": "string" }, "children_ages": { "description": "儿童年龄", "type": "string" }, "currency": { "description": "货币", "type": "string" }, "eco_certified": { "description": "生态认证", "type": "string" }, "for_displaced_individuals": { "description": "为流离失所的个人", "type": "string" }, "free_cancellation": { "description": "免费取消", "type": "string" }, "gl": { "description": "地理位置", "type": "string" }, "hl": { "description": "语言", "type": "string" }, "hotel_class": { "description": "酒店等级", "type": "string" }, "next_page_token": { "description": "下一页令牌", "type": "string" }, "price_max": { "description": "最高价格", "type": "string" }, "price_min": { "description": "最低价格", "type": "string" }, "property_type": { "description": "物业类型", "type": "string" }, "property_types": { "description": "物业类型列表", "type": "string" }, "q": { "description": "搜索查询", "type": "string" }, "rating": { "description": "评分", "type": "string" }, "sort_by": { "description": "排序方式", "type": "string" }, "special_offers": { "description": "特别优惠", "type": "string" } }, "required": [ "q", "check_in_date", "check_out_date" ], "type": "object" }

Implementation Reference

  • src/index.js:177-232 (registration)
    Registration of the MCP tool 'search_google_hotels' using server.tool(), which includes the tool name, input schema, and inline handler function.
    server.tool( 'search_google_hotels', { q: z.string().describe('搜索查询'), check_in_date: z.string().describe('入住日期'), check_out_date: z.string().describe('退房日期'), gl: z.string().optional().describe('地理位置'), hl: z.string().optional().describe('语言'), currency: z.string().optional().describe('货币'), property_type: z.string().optional().describe('物业类型'), sort_by: z.string().optional().describe('排序方式'), price_min: z.string().optional().describe('最低价格'), price_max: z.string().optional().describe('最高价格'), property_types: z.string().optional().describe('物业类型列表'), amenities: z.string().optional().describe('设施'), rating: z.string().optional().describe('评分'), free_cancellation: z.string().optional().describe('免费取消'), special_offers: z.string().optional().describe('特别优惠'), for_displaced_individuals: z.string().optional().describe('为流离失所的个人'), eco_certified: z.string().optional().describe('生态认证'), hotel_class: z.string().optional().describe('酒店等级'), brands: z.string().optional().describe('品牌'), bedrooms: z.string().optional().describe('卧室数量'), bathrooms: z.string().optional().describe('浴室数量'), adults: z.string().optional().describe('成人数量'), children_ages: z.string().optional().describe('儿童年龄'), next_page_token: z.string().optional().describe('下一页令牌') }, async (args) => { const params = { engine: 'google_hotels', q: args.q, check_in_date: args.check_in_date, check_out_date: args.check_out_date }; // 添加可选参数 const optionalParams = [ 'gl', 'hl', 'currency', 'property_type', 'sort_by', 'price_min', 'price_max', 'property_types', 'amenities', 'rating', 'free_cancellation', 'special_offers', 'for_displaced_individuals', 'eco_certified', 'hotel_class', 'brands', 'bedrooms', 'bathrooms', 'adults', 'children_ages', 'next_page_token' ]; for (const key of optionalParams) { if (args[key] !== undefined) { params[key] = args[key]; } } const result = await makeSearchapiRequest(params); return { content: [{ type: 'text', text: JSON.stringify(result, null, 2) }] }; } );
  • Handler function that builds the API parameters for google_hotels engine, adds optional params, calls the shared makeSearchapiRequest helper, and returns JSON stringified result.
    async (args) => { const params = { engine: 'google_hotels', q: args.q, check_in_date: args.check_in_date, check_out_date: args.check_out_date }; // 添加可选参数 const optionalParams = [ 'gl', 'hl', 'currency', 'property_type', 'sort_by', 'price_min', 'price_max', 'property_types', 'amenities', 'rating', 'free_cancellation', 'special_offers', 'for_displaced_individuals', 'eco_certified', 'hotel_class', 'brands', 'bedrooms', 'bathrooms', 'adults', 'children_ages', 'next_page_token' ]; for (const key of optionalParams) { if (args[key] !== undefined) { params[key] = args[key]; } } const result = await makeSearchapiRequest(params); return { content: [{ type: 'text', text: JSON.stringify(result, null, 2) }] }; }
  • Zod schema defining input parameters for the tool, including required q, check_in_date, check_out_date and various optional filters.
    { q: z.string().describe('搜索查询'), check_in_date: z.string().describe('入住日期'), check_out_date: z.string().describe('退房日期'), gl: z.string().optional().describe('地理位置'), hl: z.string().optional().describe('语言'), currency: z.string().optional().describe('货币'), property_type: z.string().optional().describe('物业类型'), sort_by: z.string().optional().describe('排序方式'), price_min: z.string().optional().describe('最低价格'), price_max: z.string().optional().describe('最高价格'), property_types: z.string().optional().describe('物业类型列表'), amenities: z.string().optional().describe('设施'), rating: z.string().optional().describe('评分'), free_cancellation: z.string().optional().describe('免费取消'), special_offers: z.string().optional().describe('特别优惠'), for_displaced_individuals: z.string().optional().describe('为流离失所的个人'), eco_certified: z.string().optional().describe('生态认证'), hotel_class: z.string().optional().describe('酒店等级'), brands: z.string().optional().describe('品牌'), bedrooms: z.string().optional().describe('卧室数量'), bathrooms: z.string().optional().describe('浴室数量'), adults: z.string().optional().describe('成人数量'), children_ages: z.string().optional().describe('儿童年龄'), next_page_token: z.string().optional().describe('下一页令牌') },
  • Shared helper function used by all search tools to make HTTP requests to searchapi.io, handle API key, timeout, and errors.
    async function makeSearchapiRequest(params) { // 确保API Key被添加到参数中 params.api_key = SEARCHAPI_API_KEY; try { const response = await axios.get(SEARCHAPI_URL, { params, timeout: 30000 // 30秒超时 }); return response.data; } catch (error) { let errorDetail = null; if (error.response) { try { errorDetail = error.response.data; } catch (e) { errorDetail = error.response.statusText; } } const errorMessage = `调用searchapi.io时出错: ${error.message}`; if (errorDetail) { return { error: `${errorMessage}, 详情: ${JSON.stringify(errorDetail)}` }; } return { error: errorMessage }; } }

Other Tools

Related Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/lianshuang-photo/searchapi-mcp-nodejs'

If you have feedback or need assistance with the MCP directory API, please join our Discord server