Google Hotels MCP server
Registry name: io.github.johnisanerd/google-hotels. Maintained by AlphaOSINT (Apify developer johnvc, GitHub johnisanerd).
What it does
Search hotels and vacation rentals for a place and dates and get nightly prices, ratings, amenities, property details, and optionally reviews and photos.
Lodging prices and availability for a destination and date range, which flight or maps tools don’t return. Use it for travel agents, rate monitoring and market research.
Paid service on Apify’s hosted endpoint
This server is not self-hosted. It runs on Apify’s hosted MCP endpoint (mcp.apify.com), which starts the Apify Actor johnvc/google-hotels-search-scraper for each tool call. You need an Apify account, and every call is billed to that account at the Actor’s prices below. Apify’s own pricing and terms apply to the account.
| Charge | Price (USD) | What it covers |
|---|---|---|
| Setup | $0.02 | One-time setup fee per Actor run. We charge this to cover the cost of setting up the instance, provisioning memory, etc. |
| Page Processed | $0.02 | Fee per page of hotel search results processed. Returns hotel property listings with details, prices, ratings, and filters for that page. |
| Autocomplete Suggestion | $0.005 | Fee per autocomplete suggestion returned. Each suggestion includes the location or hotel name and, for hotels, a property token for chaining into details, photos, or reviews. |
| Photo Returned | $0.001 | Fee per hotel photo returned, including full-size and thumbnail URLs, gallery section, dimensions, and source. |
| Review Returned | $0.005 | Fee per guest review returned, including rating, review text, date, source platform, reviewer details, and the property’s response. |
Prices shown are Apify’s free-plan rates; paid Apify plans get lower per-event prices. Apify also bills a token amount per run start and per stored row ($0.00001, $0.00005). Prices change from time to time; the Actor’s page on Apify shows the current ones.
Data source and terms
Google Hotels public search results, collected by scraping. The server returns the data as published at the time of the call. You are responsible for using it in line with the source’s terms and the laws that apply to you. AlphaOSINT is not affiliated with the source.
Endpoint
- Transport: Streamable HTTP
- URL:
https://mcp.apify.com/?tools=johnvc/google-hotels-search-scraper - Auth: Apify OAuth, or
Authorization: Bearer <APIFY_TOKEN>
Setup
Claude Code
claude mcp add --transport http google-hotels "https://mcp.apify.com/?tools=johnvc/google-hotels-search-scraper"
VS Code (.vscode/mcp.json)
{
"servers": {
"google-hotels": {
"type": "http",
"url": "https://mcp.apify.com/?tools=johnvc/google-hotels-search-scraper"
}
}
}
Cursor (~/.cursor/mcp.json)
{
"mcpServers": {
"google-hotels": {
"url": "https://mcp.apify.com/?tools=johnvc/google-hotels-search-scraper"
}
}
}
Claude Desktop (Settings → Connectors → Add custom connector, paste the URL). Older versions without remote connectors can bridge through mcp-remote in claude_desktop_config.json:
{
"mcpServers": {
"google-hotels": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://mcp.apify.com/?tools=johnvc/google-hotels-search-scraper"
]
}
}
}
Each client opens an Apify sign-in (OAuth) on first use. To use a token instead, send Authorization: Bearer <APIFY_TOKEN> as a header; create one under Apify Console → Settings → API & Integrations.
Tools
| Tool | What it does |
|---|---|
johnvc--google-hotels-search-scraper |
Runs the Actor with the parameters below and returns the result rows. |
get-actor-run |
Status of a run started by the tool, for long runs. |
get-dataset-items |
Pages through a run’s full output by datasetId when it is larger than the inline result. |
get-key-value-store-record |
Reads a record a run stored, such as a run report. |
abort-actor-run |
Stops a run. |
Apify’s endpoint adds the four helper tools automatically whenever an Actor tool is loaded.
Parameters of johnvc--google-hotels-search-scraper
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
search_type |
string: search, autocomplete, photos, reviews | "search" |
Select what to fetch. ‘search’ (default) returns hotel search results for a query, or full property details when property_token is provided (stay dates optional - they default to tomorrow for one night). ‘autocomplete’… | |
q |
string | "hotels in Paris" |
Hotel search query (e.g., ‘hotels in Paris’, ‘Bali Resorts’, ‘vacation rentals in Miami’). REQUIRED for search (unless property_token is provided) and for autocomplete. For autocomplete, partial queries like ‘hotels in… | |
property_token |
string | Google Hotels property token for a single specific property - obtain this from the property_token field in a previous search or autocomplete result. REQUIRED for photos and reviews modes, and for property details in sea… | ||
gl |
string | "us" |
Country code for localization (ISO 3166-1 alpha-2, e.g., ‘us’, ‘fr’, ‘uk’). Optional. Defaults to ‘us’ if not specified. Applies to search, autocomplete, and reviews. | |
hl |
string | "en" |
Language code for localization (ISO 639-1, e.g., ‘en’, ‘fr’, ‘es’). Optional. Defaults to ‘en’ if not specified. Applies to search, autocomplete, and reviews. | |
currency |
string | "USD" |
Currency code for prices (ISO 4217, e.g., ‘USD’, ‘EUR’, ‘GBP’). Optional. Defaults based on country if not specified. Applies to search and autocomplete. | |
check_in_date |
string | "2026-11-27" |
Check-in date in YYYY-MM-DD format (e.g., ‘2026-12-13’). Required when searching by query (q) in search mode. Optional when fetching property details by property_token: defaults to tomorrow, and the effective date is ec… | |
check_out_date |
string | "2026-11-29" |
Check-out date in YYYY-MM-DD format (e.g., ‘2026-12-14’). Recommended when searching by query (q) in search mode. Must be after check_in_date. Optional when fetching property details by property_token: defaults to check… | |
adults |
integer | 2 |
Number of adult guests. Optional. Defaults to 2 if not specified. Search mode only. | |
children |
integer | 0 |
Number of child guests. Optional. Defaults to 0 if not specified. Search mode only. | |
children_ages |
string | Comma-separated list of children ages as integers (e.g., ‘5,8,12’). Required if children > 0. Optional otherwise. Search mode only. | ||
min_price |
string | "0.00" |
Minimum price filter in the specified currency. Optional. Must be a valid number (e.g., ‘50’ or ‘99.99’). Default: ‘0.00’ (no minimum). Search mode only. | |
max_price |
string | "0.00" |
Maximum price filter in the specified currency. Optional. Must be a valid number (e.g., ‘200’ or ‘299.99’). Default: ‘0.00’ (no maximum). Search mode only. | |
stars |
string | Comma-separated list of star ratings to filter by (e.g., ‘3,4,5’ for 3, 4, or 5 star hotels). Each value must be an integer between 1 and 5. Optional. Search mode only. | ||
amenities |
string | Comma-separated list of amenity IDs to filter by (integer IDs). Optional. See the Actor README for the full list of supported amenity IDs. Search mode only. | ||
hotel_class |
string | Comma-separated list of hotel star-class levels to filter by. Valid values: 2 (2-star), 3 (3-star), 4 (4-star), 5 (5-star). Value 1 is not supported. Example: ‘3,4,5’ for mid-range and luxury hotels. Optional. Not compa… | ||
guest_rating |
string | "0.0" |
Minimum guest rating filter (0.0 to 5.0). Optional. Must be a valid number (e.g., ‘4.0’ or ‘4.5’). Default: ‘0.0’ (no minimum). Search mode only. | |
property_type |
string | Comma-separated list of property type IDs to filter by (integer IDs). Optional. See the Actor README for the full list of supported property type IDs. Search mode only. | ||
vacation_rentals |
boolean | false |
Whether to include vacation rentals in search results. Optional. Defaults to false. Search mode only. | |
rental_type |
string | Comma-separated list of rental type IDs to filter by (integer IDs). Only relevant when vacation_rentals is true. Optional. Search mode only. | ||
bedrooms |
integer | Number of bedrooms filter for vacation rentals. Only relevant when vacation_rentals is true. Optional. Search mode only. | ||
bathrooms |
integer | Number of bathrooms filter for vacation rentals. Only relevant when vacation_rentals is true. Optional. Search mode only. | ||
reviews_sort_by |
string: 1, 2, 3, 4 | Sort order for reviews mode. ‘1’ = most helpful (default), ‘2’ = most recent, ‘3’ = highest score, ‘4’ = lowest score. Only used when Search Type is ‘reviews’. Optional. | ||
reviews_category_token |
string | Token to filter reviews by a specific review category or topic (e.g., cleanliness, service). Obtain category tokens from the reviews breakdown of a property details result. Only used when Search Type is ‘reviews’. Optio… | ||
max_pages |
integer | 1 |
Maximum number of result pages to fetch (1-indexed). Set to 0 for no limit (fetch all available pages). Default: 1. Applies to search, photos, and reviews pagination; autocomplete always uses a single request. Results f… | |
output_file |
string | Optional filename to save results as JSON. If not provided, will auto-generate based on query and timestamp. |
Example arguments:
{
"helloWorld": 123
}
Output
The tool returns JSON rows with these fields.
| Field | Type | Description |
|---|---|---|
search_parameters |
object | The complete set of input parameters used for this search, echoed back in each result page for traceability. |
search_metadata |
object | Aggregate statistics about the search run - total results available, pages processed, and pagination status. |
search_timestamp |
string | ISO 8601 timestamp of when this search page was executed (e.g., ‘2026-12-13T10:30:00.123456’). |
page_number |
integer | 1-indexed page number this dataset item represents. Each page of results is pushed as a separate dataset item. |
ads |
array | Sponsored hotel listing advertisements returned on this page, typically from OTA booking platforms. |
filters |
array | Filter options available for narrowing down results. Only present on the first page of results. |
refine_by |
array | Additional refinement options surfaced by Google Hotels for the current query. Only present on the first page. |
property_details |
object | Full details for a single property. Only present when property_token is used as input instead of a search query. |
error |
boolean | True when this dataset item represents an error record rather than search results. |
error_message |
string | Human-readable description of the error that occurred, if error is true. |
error_type |
string | Machine-readable error category (e.g., ‘InsufficientFunds’, ‘DataValidationError’, ‘SearchError’). |
timestamp |
string | ISO 8601 timestamp of when the error occurred. Only present on error records. |
search_type |
string | Which mode produced this item: ‘search’ (hotel search pages and property details), ‘autocomplete’ (one item per suggestion), ‘photos’ (one item per photo), or ‘reviews’ (one item per review). |
query |
string | The search query used for autocomplete suggestions. Only present on autocomplete items. |
position |
integer | 1-indexed position of this suggestion, photo, or review within the run’s results. |
value |
string | The autocomplete suggestion text (e.g., a city, region, or hotel name). Only present on autocomplete items. |
suggestion_type |
string | Category of the autocomplete suggestion (e.g., a location or a specific hotel). Only present on autocomplete items. |
location |
string | Address or location context for the autocomplete suggestion, when available. Only present on autocomplete items. |
property_token |
string | Unique Google Hotels property identifier. On autocomplete items it identifies a suggested hotel (feed it back into photos, reviews, or property details). On photos and reviews items it echoes the requested property. |
suggestion |
object | Full autocomplete suggestion object including highlighted words and identifiers. Only present on autocomplete items. |
section_title |
string | Title of the photo gallery section this photo belongs to (e.g., ‘At a glance’, ‘Rooms’). Only present on photos items. |
photo_url |
string | URL of the full-size photo. Only present on photos items. |
thumbnail_url |
string | URL of the photo thumbnail. Only present on photos items. |
photo |
object | Full photo object including dimensions, source, and posting date. Only present on photos items. |
rating |
number | Star rating given by the reviewer. Only present on reviews items. |
review_date |
string | Date the review was posted (relative or absolute, as reported by Google Hotels). Only present on reviews items. |
review_snippet |
string | Text of the guest review. Only present on reviews items. |
review_source |
string | Platform the review came from (e.g., Google, Tripadvisor). Only present on reviews items. |
user_name |
string | Display name of the reviewer. Only present on reviews items. |
review |
object | Full review object including subratings, hotel highlights, images, and the property’s response. Only present on reviews items. |
Links
- Actor on Apify: johnvc/google-hotels-search-scraper
- Data source page on AlphaOSINT: /sources/google-hotels-api/
- All AlphaOSINT MCP servers: /mcp/