TRAVELECOMMERCE API MCP READY

Google Hotels API

Hotel and vacation-rental data from Google Hotels across four modes — search, full property details, photos and guest reviews. Filter by price, star class, guest rating, amenities and property type, with autocomplete for resolving a location or property name to a token.

MEDIAN LAGon demand
PARAMETERS19
TOTAL USERS339
MONTHLY ACTIVE92
RUNS SUCCEEDED99.9%
RATING4.97 (5)

Input parameters

PARAMETERTYPEREQDEFAULTDESCRIPTION
search_type enum no search search · autocomplete · photos · reviews — the mode decides which other fields apply
q string no 'hotels in Paris', 'Bali resorts'. Required for search (unless property_token is given) and for autocomplete.
property_token string no Identifies one property. Required for photos and reviews; obtained from a prior search or autocomplete.
check_in_date date no YYYY-MM-DD. Required when searching by query.
check_out_date date no Must be after check-in
adults integer no 2 Adult guests
children integer no 0 Child guests; children_ages is then required
gl string no us Country code for localization
hl string no en Language code
currency string no Defaults from the country when unset
min_price string no 0.00 Floor in the chosen currency
max_price string no 0.00 Ceiling; 0.00 means no maximum
hotel_class string no Comma-separated star classes 2–5. Not compatible with vacation_rentals.
guest_rating string no 0.0 Minimum guest rating, 0.0–5.0
amenities string no Comma-separated amenity IDs; see the Actor README for the list
vacation_rentals boolean no false Include rentals alongside hotels
bedrooms integer no Rentals only
reviews_sort_by enum no 1 Reviews mode: 1 most helpful · 2 most recent · 3 highest · 4 lowest
max_pages integer no 1 0 = no limit. Applies to search, photos and reviews. — drives your bill

Worked examples

Basic search — city and dates
{
  "q": "hotels in Paris",
  "check_in_date": "2026-08-27",
  "check_out_date": "2026-08-29"
}
Filtered — four-star and up, well rated
{
  "q": "hotels in Barcelona",
  "check_in_date": "2026-09-10",
  "check_out_date": "2026-09-14",
  "hotel_class": "4,5",
  "guest_rating": "4.5"
}
Autocomplete — resolve a partial name to a token
{
  "search_type": "autocomplete",
  "q": "hotels in par"
}
Reviews for one property — newest first
{
  "search_type": "reviews",
  "property_token": "PROPERTY_TOKEN_FROM_SEARCH",
  "reviews_sort_by": "2"
}
Vacation rentals — rentals with three bedrooms
{
  "q": "vacation rentals in Miami",
  "check_in_date": "2026-11-01",
  "check_out_date": "2026-11-08",
  "vacation_rentals": true,
  "bedrooms": 3
}
POWER-USER TIP
Autocomplete first, then photos or reviews — Photos and reviews both need a property_token, and there is no way to guess one. Run autocomplete — a single cheap request — to turn a name or partial query into a token, then spend on the mode you actually wanted.
POWER-USER TIP
hotel_class and vacation_rentals are mutually exclusive — Star class does not apply to rentals, and setting both silently narrows results to nothing useful. Pick one axis per run.

Coverage

4
search modes — search · autocomplete · photos · reviews
8
filter axes — price · star class · guest rating · amenities · property type · rental type · bedrooms · bathrooms
4
review sort orders — most helpful · most recent · highest · lowest

Tasks

Saved runs with the inputs already filled in — each one a standalone page and a working configuration example.

Request a task →

Code

curl

curl -X POST "https://api.apify.com/v2/acts/johnvc~google-hotels-search-scraper/run-sync-get-dataset-items" \
  -H "Authorization: Bearer $APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"q":"hotels in Paris","check_in_date":"2026-08-27","check_out_date":"2026-08-29"}'

Python

from apify_client import ApifyClient

client = ApifyClient("APIFY_TOKEN")
run = client.actor("johnvc/google-hotels-search-scraper").call(
    run_input={
        "q": "hotels in Barcelona",
        "check_in_date": "2026-09-10", "check_out_date": "2026-09-14",
        "hotel_class": "4,5",
    }
)
for h in client.dataset(run.default_dataset_id).iterate_items():
    print(h.get("name"), h.get("rate_per_night"))

What people use it for

Alternatives