google-hotels
Search Google Hotels for hotel prices, ratings, and availability using browser automation. Use when user asks to search hotels, find accommodation, compare hotel prices, check availability, or look up places to stay. Triggers include "search hotels", "find hotels", "hotels in", "where to stay", "acc
By skillhq · 455 installs
npx skills add skillhq/hotel-search --skill google-hotels
Source repository · Upstream listing
Google Hotels Search
Search Google Hotels via agent browser to find hotel prices, ratings, amenities, and availability.
When to Use
User asks to search, find, or compare hotels or accommodation
User wants hotel prices in a city, neighborhood, or near a landmark
User asks about hotel availability for specific dates
User wants the best rated or cheapest hotel in an area
When NOT to Use
Booking : This skill searches only — never complete a purchase
Vacation rentals / Airbnb : Google Hotels shows hotels, not rentals
Flights : Use the flight search skill
Historical prices : Google Hotels shows current prices only
NEVER leave Google Hotels during search — do not navigate to Booking.com, Expedia, Hotels.com, or any OTA as a search workaround. Exception: after presenting results, you MAY visit the hotel's own website for direct booking/promo checks (see [Post Search]( post search direct booking deals)).
Session Convention
Always use session hotels for isolation.
URL Fast Path (Preferred)
Build a URL with location and dates encoded. Loads results directly — 3 commands total .
URL Template
Where {QUERY} is the location/hotel name and {TS PARAM} is a base64 encoded date parameter.
Encoding Dates in the URL
Google Hotels uses a protobuf encoded ts parameter for dates. The byte layout is fixed for years 2025 2030. Use this bash function to generate it:
Constraints : Years 2025 2030, months 1 12, days 1 31, nights 1 127. These cover all realistic hotel searches.
Location Formats
Format Example
City Hotels+in+Bangkok
City + country Hotels+in+Bangkok+Thailand
Neighborhood Hotels+in+Shibuya+Tokyo
Near landmark Hotels+near+Eiffel+Tower
Region Hotels+in+Amalfi+Coast
Airport Hotels+near+BKK+airport
Specific hotel Haus+im+Tal+Munich
URL vs Interactive Features
Feature Via URL?
Location ✅ Yes (via q= )
Dates ✅ Yes (via ts= )
Guests / rooms ❌ Set interactively (default: 1 room, 2 guests)
Filters (stars, price, amenities) ❌ Set interactively
Example: Hotels in Bangkok, March 15 20
Example: Specific Hotel with Dates
Without Dates (Location Only)
If the user doesn't specify dates, omit the ts , qs , and ap parameters:
Results will show "starting from" prices. Set dates interactively if the user provides them later (see [deep dive reference]( deep dive reference)).
For detailed interactive workflows (calendar navigation, guest/room selector, filters), see the [deep dive reference]( deep dive reference).
Result Format
Present results as a single rich table:
Parallel Sessions
Only use when the user explicitly asks for a comparison between distinct searches (e.g., "Compare hotels in Shibuya vs Shinjuku").
Key Rules
Rule Why
Prefer URL fast path with ts= 3 commands with dates vs 10+ interactive
wait load networkidle Smarter than fixed wait 5000
Always encode dates in URL when available Use hotel ts to generate the ts parameter
Use fill not type for text Clears existing text first
Wait 2s after typing location Autocomplete needs API roundtrip
Click suggestions, never Enter Enter is unreliable for autocomplete
Re snapshot after every interaction DOM changes invalidate refs
Check for "View prices" Means dates aren't set yet
Never leave Google Hotels during search Exception: hotel's own site for direct booking check after results
Navigate calendar with "<" and " " Calendar may open on wrong month — use arrows to go backward or forward
Troubleshooting
Problem Solution
Consent popup Click "Accept all" or "Reject all"
URL fast path fails Fall back to google.com/travel/hotels interactive flow
No results / "View prices" Set check in and check out dates
Calendar opens on wrong month Use "<" arrow to navigate backward or " " to go forward. Always re snapshot after navigating to confirm target month is visible
Snapshot blocked by calendar overlay Press Escape to close the calendar, re snapshot, then re open the date picker and try again
Stale pricing Prices are real time and indicative — mention this caveat
Currency mismatch Google uses browser locale currency — note any discrepancy
CAPTCHA Inform user. Do NOT solve. Retry after a short wait
Map view instead of list Click "List" or "View list" toggle
Hotel not found Try variations: full name, shorter name, name + city, name + neighborhood
Post Search: Direct Booking & Deals
After presenting results, always ask the user if they'd like you to check for better deals. Phrase it like:
"Want me to check [hotel name]'s direct website for promo codes or member rates? Direct booking is often cheaper than OTAs."
When to Offer
Always when the user searches for a specific hotel by name
Always when results show a single clear winner the user is interested in
On request when comparing multiple hotels — offer for whichever they pick
What to Check
Open the hotel's own website in a new session ( session direct ) and look for:
1. Direct booking price — often 5 15% cheaper than OTAs (Booking.com, Expedia, etc.)
2. Promo codes — look for banners, pop ups, or a "offers"/"deals"/"promotions" page
3. Member/loyalty rates — "sign up for X% off first booking" or free membership discounts
4. Package deals — breakfast included, free cancellation, parking bundles
5. Seasonal promotions — holiday specials, early bird rates, last minute deals
Chain Hotel Loyalty Programs
If the hotel belongs to a major chain, mention the loyalty program — members often get better rates, room upgrades, or points:
Chain Brands Loyalty Program Typical Member Perks
IHG Holiday Inn, InterContinental, Crowne Plaza, Kimpton, Indigo IHG One Rewards Member rate (often cheapest), points earning, 4th night free on reward stays
Marriott Marriott, Sheraton, Westin, W, Ritz Carlton, Courtyard, Aloft Marriott Bonvoy Member rate, mobile check in, points/miles
Hilton Hilton, DoubleTree, Hampton, Conrad, Waldorf Astoria Hilton Honors Member discount, 5th night free on reward stays, digital key
Accor Sofitel, Novotel, ibis, Mercure, Moxy, Fairmont ALL Accor Live Limitless Member rates, status benefits
Hyatt Hyatt, Andaz, Park Hyatt, Thompson World of Hyatt Member rate, free night awards, suite upgrades
How to Identify the Chain
The Google Hotels snapshot often includes the chain name:
"Holiday Inn Express Bangkok Sukhumvit 11 by IHG" → IHG
"Courtyard by Marriott Bangkok" → Marriott
"Hilton Munich City" → Hilton
"Novotel Muenchen City" → Accor
No chain suffix → likely independent (check their website directly)
Independent Hotels
For independent/boutique hotels (like Haus im Tal):
Check their website for promo codes (often shown in banners or a dedicated "Offers" page)
Look for "Book Direct" incentives (best price guarantee, free extras)
Check if they offer a newsletter signup discount
Mention the hotel name + "promo code" in a web search if the site doesn't show any
Present the Comparison
After checking, present a direct vs OTA comparison:
Tip : Always remind the user that you cannot complete the booking — just provide the link and any promo codes found.
Deep Dive Reference
See [references/interaction patterns.md](references/interaction patterns.md) for:
Full annotated walkthrough (every command + expected output)
Location autocomplete failure modes and recovery
Date picker calendar navigation
Guest & room selector (the most complex widget)
Filters (stars, price, amenities, cancellation)
Scrolling for more results
Hotel detail drill down with provider price comparison
Direct booking & promo check workflow