Google API: Search Google Hotels
Finds places to stay in a city or area for given dates on Google Hotels, with nightly and total prices, hotel class, guest ratings, amenities, address and cheapest booking site. Optional filters for price, stars and rating; vacation rentals are left out. Prices and availability can change.
Unofficial. Not affiliated with or endorsed by Google.
Inputs
Values from the run on Oct 31, 2026, shown under Output.
- Adults optional
adults Adults, for example 2.
2 (default)
Whole number from 1 to 10.
- Check in, required
check_in Check-in date (YYYY-MM-DD), for example 2026-11-12.
2026-12-02
- Currency optional
currency Three-letter currency code, for example USD.
USD (default)
- Location, required
location City or area, for example Paris.
Tokyo
- Check Out, required
check_out Check-out date (YYYY-MM-DD), for example 2026-11-15.
2026-12-04
- Min Stars optional
min_stars Minimum hotel class, for example 4.
3
Whole number from 1 to 5.
- Max Results optional
max_results Maximum hotels, for example 20.
50
Whole number from 1 to 50. Default
20.- Min Guest Rating optional
min_guest_rating Minimum rating out of five, for example 4.2.
4
Number from 1 to 5.
- Max Price Per Night optional
max_price_per_night Maximum nightly price, for example 250.
300
Number 0 or more.
Input as JSON
{ "check_in": "2026-12-02", "location": "Tokyo", "check_out": "2026-12-04", "min_stars": 3, "max_results": 50, "min_guest_rating": 4, "max_price_per_night": 300}Output
{ "hotels": [ { "name": "Mitsui Garden Hotel Toyosu Premier", "stars": 5, "currency": "USD", "latitude": 35.65513, "amenities": [ "Public bath", "Free Wi-Fi", "Parking" ], "longitude": 139.7946277, "total_price": 321, "guest_rating": 4.3, "review_count": 1262, "price_per_night": 146, "google_hotels_link": "https://www.google.com/travel/hotels/entity/ChoI7tTyvLiSqvrEARoNL2cvMTFoOTMwMTI4ZxAB?q=hotels+in+Tokyo&hl=en&curr=USD&ts=CAESCgoCCAMKAggDEAAaUAoyEi4yJTB4NjA1ZDFiODdmMDJlNTdlNzoweDJlMDE2MThiMjI1NzFiODk6BVRva3lvGgASGhIUCgcI6g8QDBgCEgcI6g8QDBgEGAIyAggBKg0KCToDVVNEYgIIARoA&ei=Ivq6atX5NO615LcPgoP-sAU&sa=…" , "cheapest_booking_site": "Mitsui Garden Hotel Toyosu Premier", "google_property_token": "ChoI7tTyvLiSqvrEARoNL2cvMTFoOTMwMTI4ZxAB", "neighborhood_or_address": "Japan, 〒135-0061 Tokyo, Koto City, Toyosu, 2 Chome−2−1 ベイサイドクロスタワ" }, { "name": "ONE@Tokyo by insomnia", "stars": 3, "currency": "USD", "latitude": 35.711788899999995, "amenities": [ "Free Wi-Fi", "Parking", "Accessible" ], "longitude": 139.81597779999998, "total_price": 222, "guest_rating": 4.3, "review_count": 1004, "price_per_night": 101, "google_hotels_link": "https://www.google.com/travel/hotels/entity/ChoI84KEy5HjiaeGARoNL2cvMTFkeGp4MnEyXxAB?q=hotels+in+Tokyo&hl=en&curr=USD&ts=CAESCgoCCAMKAggDEAAaUAoyEi4yJTB4NjA1ZDFiODdmMDJlNTdlNzoweDJlMDE2MThiMjI1NzFiODk6BVRva3lvGgASGhIUCgcI6g8QDBgCEgcI6g8QDBgEGAIyAggBKg0KCToDVVNEYgIIARoA&ei=Ivq6atX5NO615LcPgoP-sAU&sa=…" , "cheapest_booking_site": "ONE@Tokyo by insomnia", "google_property_token": "ChoI84KEy5HjiaeGARoNL2cvMTFkeGp4MnEyXxAB", "neighborhood_or_address": "1 Chome-19-3 Oshiage, Sumida City, Tokyo 131-0045, Japan" }, { "name": "Shinjuku Granbell Hotel", "stars": 4, "currency": "USD", "latitude": 35.6964448, "amenities": [ "Free Wi-Fi", "Parking ($)", "Bar" ], "longitude": 139.70572439999998, "total_price": 214, "guest_rating": 4, "review_count": 3476, "price_per_night": 98, "google_hotels_link": "https://www.google.com/travel/hotels/entity/ChkI_Zmo7NeSqYDfARoML2cvMXB0X18zcGttEAE?q=hotels+in+Tokyo&hl=en&curr=USD&ts=CAESCgoCCAMKAggDEAAaUAoyEi4yJTB4NjA1ZDFiODdmMDJlNTdlNzoweDJlMDE2MThiMjI1NzFiODk6BVRva3lvGgASGhIUCgcI6g8QDBgCEgcI6g8QDBgEGAIyAggBKg0KCToDVVNEYgIIARoA&ei=Ivq6atX5NO615LcPgoP-sAU&sa=X…" , "cheapest_booking_site": "GRANBELL HOTEL SHINJUKU", "google_property_token": "ChkI_Zmo7NeSqYDfARoML2cvMXB0X18zcGttEAE", "neighborhood_or_address": "2 Chome-14-5 Kabukicho, Shinjuku City, Tokyo 160-0021, Japan" } ], "search_link": "https://www.google.com/travel/search?q=hotels+in+Tokyo&hl=en&curr=USD&ts=CAESCgoCCAMKAggDEAAaUAoyEi4yJTB4NjA1ZDFiODdmMDJlNTdlNzoweDJlMDE2MThiMjI1NzFiODk6BVRva3lvGgASGhIUCgcI6g8QDBgCEgcI6g8QDBgEGAIyAggBKg0KCToDVVNEYgIIARoA" }Code
curl https://api.fous.com/v1/runs \ -H "Authorization: Bearer $FOUS_API_KEY" \ -H "Content-Type: application/json" \ -d '{"method":"google.com/search_hotels","input":{"check_in":"2026-12-02","location":"Tokyo","check_out":"2026-12-04","min_stars":3,"max_results":50,"min_guest_rating":4,"max_price_per_night":300}}' # Save as fous.py, then run: python3 fous.pyimport json, os, timefrom urllib.error import HTTPErrorfrom urllib.request import Request, urlopenAPI = "https://api.fous.com/v1/runs" KEY = os.environ["FOUS_API_KEY"]HEADERS = { "Authorization": f"Bearer {KEY}", "Content-Type": "application/json" ,}def call(url, body=None): data = json.dumps(body).encode() if body else None request = Request(url, data, HEADERS) try: with urlopen(request, timeout=120) as r: return r.status, json.load(r) except HTTPError as error: message = json.load(error)["error"]["message"] raise RuntimeError(message) from errorstatus, run = call(API, { "method": "google.com/search_hotels" , "input": { "check_in": "2026-12-02", "location": "Tokyo", "check_out": "2026-12-04", "min_stars": 3, "max_results": 50, "min_guest_rating": 4, "max_price_per_night": 300 }})# 202: still going after 30 s. Ask again until it ends.while status == 202: time.sleep(2) status, run = call(f"{API}/{run['id']}")print(json.dumps(run["data"], indent=2))// Save as fous.mjs, then run: node fous.mjsconst api = "https://api.fous.com/v1/runs" ;const headers = { Authorization: `Bearer ${process.env.FOUS_API_KEY}`, "Content-Type": "application/json" ,};let response = await fetch(api, { method: "POST", headers, body: JSON.stringify({ "method": "google.com/search_hotels" , "input": { "check_in": "2026-12-02", "location": "Tokyo", "check_out": "2026-12-04", "min_stars": 3, "max_results": 50, "min_guest_rating": 4, "max_price_per_night": 300 } }), signal: AbortSignal.timeout(120_000),});let run = await response.json();// 202: still going after 30 s. Ask again until it ends.while (response.status === 202) { await new Promise((done) => setTimeout(done, 2_000)); response = await fetch(`${api}/${run.id}`, { headers }); run = await response.json();}if (!response.ok) throw new Error(run.error.message);console.log(run.data);# Connect your agent to Fous once, over MCP (Streamable HTTP):# https://api.fous.com/mcp# Set FOUS_API_KEY first: create a key at https://app.fous.com/keys.# Claude Codeclaude mcp add \ --scope user \ --transport http fous https://api.fous.com/mcp \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Codexcodex mcp add fous \ --url https://api.fous.com/mcp \ --bearer-token-env-var FOUS_API_KEY# Cursor, VS Code, Windsurf, Cline and morenpx -y add-mcp https://api.fous.com/mcp -g -n fous \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Then ask your agent:# "Use Fous to run google.com/search_hotels# with {"check_in":"2026-12-02","location":"Tokyo","check_out":"2026-12-04","min_stars":3,"max_results":50,"min_guest_rating":4,"max_price_per_night":300}"Over HTTP, the answer’s data holds the output. A run still going after 30 seconds answers 202 with its id: ask GET /v1/runs/{id} until it ends.
Schema
Input schema
{ "type": "object", "required": [ "location", "check_in", "check_out" ], "properties": { "adults": { "type": "integer", "default": 2, "maximum": 10, "minimum": 1, "description": "Adults, for example 2." }, "check_in": { "type": "string", "description": "Check-in date (YYYY-MM-DD), for example 2026-11-12." }, "currency": { "type": "string", "default": "USD", "description": "Three-letter currency code, for example USD." }, "location": { "type": "string", "description": "City or area, for example Paris." }, "check_out": { "type": "string", "description": "Check-out date (YYYY-MM-DD), for example 2026-11-15." }, "min_stars": { "type": "integer", "maximum": 5, "minimum": 1, "description": "Minimum hotel class, for example 4." }, "max_results": { "type": "integer", "default": 20, "maximum": 50, "minimum": 1, "description": "Maximum hotels, for example 20." }, "min_guest_rating": { "type": "number", "maximum": 5, "minimum": 1, "description": "Minimum rating out of five, for example 4.2." }, "max_price_per_night": { "type": "number", "minimum": 0, "description": "Maximum nightly price, for example 250." } }}Output schema
{ "type": "object", "required": [ "search_link", "hotels" ], "properties": { "hotels": { "type": "array", "items": { "type": "object", "required": [ "name", "stars", "guest_rating", "review_count", "price_per_night", "total_price", "currency", "cheapest_booking_site", "amenities", "neighborhood_or_address", "google_hotels_link", "google_property_token", "latitude", "longitude" ], "properties": { "name": { "type": "string", "description": "Hotel name." }, "stars": { "type": [ "integer", "null" ], "description": "Hotel class." }, "currency": { "type": "string", "description": "Currency of prices." }, "latitude": { "type": [ "number", "null" ], "description": "Latitude." }, "amenities": { "type": "array", "items": { "type": "string" }, "description": "Main amenities." }, "longitude": { "type": [ "number", "null" ], "description": "Longitude." }, "total_price": { "type": [ "number", "null" ], "description": "Stay total with taxes and fees." }, "guest_rating": { "type": [ "number", "null" ], "description": "Guest rating out of five." }, "review_count": { "type": [ "integer", "null" ], "description": "Number of reviews." }, "price_per_night": { "type": [ "number", "null" ], "description": "Nightly price." }, "google_hotels_link": { "type": "string", "description": "Property link on Google Hotels." }, "cheapest_booking_site": { "type": [ "string", "null" ], "description": "Booking site with lowest quoted price." }, "google_property_token": { "type": [ "string", "null" ], "description": "Google property token." }, "neighborhood_or_address": { "type": [ "string", "null" ], "description": "Address or neighborhood." } } }, "description": "Hotels in Google order." }, "search_link": { "type": "string", "description": "Google Hotels search link." } }}- Price
- 1 credit per completed run (1¢ with pay as you go); failed runs are free.
- Method
google.com/search_hotels- Returns
- search link; hotels with name, stars, guest rating, review count, nightly and total price, currency, cheapest booking site, amenities, address, Google Hotels link, property token, latitude, longitude
Use it from your agent
Give your agent this line. It reads SKILL.md, gets a Fous API key and connects the Fous MCP server. Its run then takes the method google.com/search_hotels with the inputs above.
Ask your agent
- Find me hotels in Lisbon for March 14 to March 18, 2026, for 2 adults, at least 4 stars and under 180 EUR per night.
- What are the cheapest places to stay in Kyoto from 2026-04-02 to 2026-04-06 for one person? Show prices in JPY and which booking site has the best rate.
- Search Google Hotels for Chicago, check-in October 9 and check-out October 12, 3 adults, guest rating 4.3 or higher. Give me up to 15 options.
- I need a hotel in Barcelona's Gothic Quarter for 4 adults, June 20–25, 2026. Max $300 a night, and list amenities and addresses.
- Using Google, pull 5-star hotels in Dubai for 2026-12-28 through 2027-01-02 for two guests, with total stay cost and map coordinates.
See more
All Google methodsFinds a hotel on Google Hotels by name and city and returns its guest reviews in the chosen order, its Google rating and review count, and topic ratings averaged from the returned reviews that rate each topic.
google.com/get_hotel_reviewsFinds Google Flights options for a route and date with prices, local times, stops and emissions. Round-trip searches list outbound choices with their displayed round-trip fares.
google.com/search_flightsFinds the lowest Google Flights fare for each departure date in a month between two places, for one-way trips or a fixed trip length, with the cheapest option and any price insight shown.
google.com/get_cheapest_datesLists cheap round-trip destinations from a city on Google Travel Explore, sorted by fare, optionally within a region, travel month, trip length and nonstop only. Links search Google Flights for the shown dates.
google.com/list_cheap_destinationsFinds businesses and places near a location on Google Maps, in Google Maps order, with rating, hours, contact details and links when shown.
google.com/search_placesLooks up a public Google Maps place by name and location and returns its profile: address, rating, hours, phone, website and photos.
google.com/get_placeGets up to three Google Maps routes between two places, with distances, travel times and step-by-step directions.
google.com/get_directionsSearches Google Books by words, author, subject or ISBN, with language, free-ebook and newest-first options. Ratings counts are not shown by the public book feed; newest sorts the available matches by publication date.
books.google.com/search_books