Add Google Hotels to Claude Desktop as an MCP server (2-minute setup)
If you use Claude Desktop or Claude Code, you can ask Claude in plain English to find and compare hotels for a trip. Prices are live from Google Hotels, with the rate every booking site is charging (Booking.com, Expedia,
If you use Claude Desktop or Claude Code, you can ask Claude in plain English to find and compare hotels for a trip. Prices are live from Google Hotels, with the rate every booking site is charging (Booking.com, Expedia, Agoda, Hotels.com, Vrbo, β¦), and the answer comes back as structured JSON that Claude turns into a short recommendation.
The glue is a small open-source MCP server I built: huynhtanan/google-hotels-mcp. This post is a 2-minute install plus one real example.
Disclosure: the server calls three paid Apify actors I wrote. The Apify Free plan ships $5 of credit per month β about 60 full-city searches β before you need to upgrade. No card required to sign up.
1. Get an Apify token
Sign up at https://console.apify.com/account/integrations and copy your Personal API token. Takes about 20 seconds.
2. Add the MCP server to Claude Desktop
Open claude_desktop_config.json (Settings β Developer β Edit Config) and add:
{
"mcpServers": {
"google-hotels": {
"command": "uvx",
"args": [
"--from",
"git+https://github.com/huynhtanan/google-hotels-mcp.git",
"google-hotels-mcp"
],
"env": { "APIFY_TOKEN": "apify_api_..." }
}
}
}
Restart Claude Desktop. In the slash-command menu you'll now see three tools: search_hotels, hotel_price_calendar, search_vacation_rentals.
If you prefer Claude Code, one line does it:
claude mcp add google-hotels -- uvx --from git+https://github.com/huynhtanan/google-hotels-mcp.git google-hotels-mcp
(then set APIFY_TOKEN as an env var).
3. Ask Claude a real question
"Find hotels in Lisbon from 2026-11-10 to 2026-11-13, two adults, EUR, best value under β¬120 per night."
Claude calls search_hotels and gets 40 live results. Below are the top 3 cheapest with the live rating from Google (one of 40 items returned, trimmed for the post β the raw JSON is 100 lines):
Patio SΓ£o Vicente Guest Houses β¬109/night 4.9β
(349 reviews) 4-star hotel
Home - Lisbon Hostel β¬73/night 4.8β
(2,370 reviews) 2-star hotel
Magnolia Guesthouse, Lisbon β¬71/night 4.7β
(139 reviews) β
Here is the actual tool response for one item (lightly trimmed):
{
"name": "Patio SΓ£o Vicente Guest Houses",
"rating": 4.9,
"reviewsCount": 349,
"ratingDistribution": {"3": 3, "4": 16, "5": 330},
"hotelClassText": "4-star hotel",
"pricePerNight": 109,
"pricePerNightText": "β¬109",
"totalPrice": 372.1,
"totalBeforeTaxes": 328.48,
"currency": "EUR",
"checkIn": "2026-11-10",
"checkOut": "2026-11-13",
"nights": 3,
"checkInTime": "3:00 PM",
"checkOutTime": "11:00 AM",
"latitude": 38.7155846,
"longitude": -9.1280593,
"nearbyPlaces": [
{"name": "National Pantheon", "travelTime": "6 min"},
{"name": "Voz OperΓ‘rio", "travelTime": "2 min"}
],
"reviewTopics": [
{"topic": "Location", "mentions": 88, "positive": 84, "positiveShare": 0.977}
],
"website": "https://www.patiosaovicente.com/",
"googleHotelsUrl": "https://www.google.com/travel/hotels/entity/..."
}
So Claude sees not just the price, but the rating distribution (how many 5-star reviews, how many 1-star), the review topics with sentiment, nearby places with walking time, direct website and Google Hotels URL. That is enough context to actually recommend a hotel instead of just listing names.
Two more prompts that are useful
Daily price calendar for one property. The hotel_price_calendar tool returns one row per date for ~3 months, so you can ask:
"Give me a 3-month price calendar for this Hoxton Paris URL and show the 7 cheapest dates."
Each row is { "date": "2026-12-14", "price": 189, "currency": "EUR", "available": true }.
Vacation rentals, Airbnb vs Vrbo. The search_vacation_rentals tool hits Google's rentals page:
"Compare 3-bedroom vacation rentals in Lisbon for 2026-11-15 to 2026-11-22, 4 guests, show the Airbnb rate and the Vrbo rate side-by-side."
With include_provider_prices=true, each rental comes back with a providers array containing the price Airbnb, Vrbo, Booking.com and the other 15+ OTAs are each quoting.
Pricing
Pay-as-you-go on the Apify Free plan.
| Call | Cost |
|---|---|
1 hotel in search_hotels
|
$0.002 |
| 1 hotel with per-OTA rates | $0.004 |
1 date in hotel_price_calendar
|
$0.0015 |
| 1 vacation rental | $0.002 |
A full-city search with 20 hotels and per-OTA rates is about $0.08. The $5 free monthly credit covers about 60 of those.
How it compares
A hosted MCP by HasData exists for Google Hotels. The difference:
| huynhtanan/google-hotels-mcp | HasData hosted MCP | |
|---|---|---|
| Open source | β MIT | β |
| Tools | 3 (hotels, calendar, rentals) | 1 (hotels) |
| Daily price calendar | β | β |
| Vacation rentals | β Airbnb + Vrbo + Booking.com | β |
| Per-provider rates | β 15+ OTAs | β |
| Install |
uvx or pip + Apify token |
hosted, their key |
If you only need a one-off hotel search, HasData is fine. If you want calendars, rentals, or you want to see the raw actor code, go with this one.
Links
- Repo: https://github.com/huynhtanan/google-hotels-mcp (stars welcome)
- Glama listing: https://glama.ai/mcp/servers/huynhtanan/google-hotels-mcp
- Hotels actor: https://apify.com/zet46/google-hotels-scraper
- Price-calendar actor: https://apify.com/zet46/google-hotels-price-calendar
- Vacation-rentals actor: https://apify.com/zet46/google-vacation-rentals-scraper
Issues and PRs welcome. The server is a single ~180-line Python file wrapping three HTTP calls, so adding tools (reviews, nearby amenities, specific OTA deep-link) is a small change.
Originally published by Dev.to AI. Aggregated on AIWithGhost for educational purposes β full credit and traffic to the original publisher.