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 google-flights 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 results, you MAY visit a hotel's own website for direct booking/promo checks.
Session Convention
Always use --session hotels for isolation.
URL Fast Path (Preferred)
Build a URL with location and dates encoded. Loads results in 3 commands.
Encoding Dates in the URL
Google Hotels uses a protobuf-encoded ts parameter. Use this bash function to generate it:
hotel_ts() {
local ci_y=$1 ci_m=$2 ci_d=$3 co_y=$4 co_m=$5 co_d=$6 nights=$7
local cyl=$(printf '%02x' $(( ($ci_y & 0x7f) | 0x80 )))
local cyh=$(printf '%02x' $(($ci_y >> 7)))
local col=$(printf '%02x' $(( ($co_y & 0x7f) | 0x80 )))
local coh=$(printf '%02x' $(($co_y >> 7)))
echo -n "08011a200a021a00121a12140a0708${cyl}${cyh}10$(printf '%02x' $ci_m)18$(printf '%02x' $ci_d)120708${col}${coh}10$(printf '%02x' $co_m)18$(printf '%02x' $co_d)18$(printf '%02x' $nights)32020801" \
| xxd -r -p | base64 | tr -d '\n='
}
# hotel_ts CHECKIN_YEAR MONTH DAY CHECKOUT_YEAR MONTH DAY NIGHTS
# hotel_ts 2026 3 15 2026 3 20 5 → CAEaIAoCGgASGhIUCgcI6g8QAxgPEgcI6g8QAxgUGAUyAggB
Years 2025-2030, months 1-12, days 1-31, nights 1-127.
Example: Hotels in Bangkok, March 15-20
ts=$(hotel_ts 2026 3 15 2026 3 20 5)
agent-browser --session hotels open "https://www.google.com/travel/search?q=Hotels+in+Bangkok&qs=CAE4AA&ts=${ts}&ap=MAE"
agent-browser --session hotels wait --load networkidle
agent-browser --session hotels snapshot -i
agent-browser --session hotels close
Location Formats
City: Hotels+in+Bangkok | Neighborhood: Hotels+in+Shibuya+Tokyo | Near landmark: Hotels+near+Eiffel+Tower | Specific hotel: Haus+im+Tal+Munich
Without Dates
Omit ts, qs, ap parameters — shows "starting from" prices:
agent-browser --session hotels open "https://www.google.com/travel/search?q=Hotels+in+Bangkok"
agent-browser --session hotels wait --load networkidle
agent-browser --session hotels snapshot -i
Result Format
| # | Hotel | Stars | Rating | Price/Night | Total | Via | Key Amenities |
|---|-------|-------|--------|-------------|-------|-----|---------------|
| 1 | Sukhothai Bangkok | ★★★★★ | 9.2 | $185 | $925 | Hotels.com | Pool, Spa, WiFi |
| 2 | Centara Grand | ★★★★★ | 8.8 | $165 | $825 | Booking.com | Pool, Gym, WiFi |
| 3 | Ibis Sukhumvit | ★★★ | 7.4 | $45 | $225 | Agoda | WiFi, Restaurant |
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 |
Use fill not type for text inputs |
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 | OTA navigation during search breaks flow |
| Calendar navigation with "<" / ">" | May open on wrong month — navigate and re-snapshot |
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 interactively |
| Calendar on wrong month | Use "<" / ">" arrows; re-snapshot after navigating |
| Calendar overlay blocking snapshot | Press Escape, re-snapshot, re-open date picker |
| CAPTCHA | Inform user. Do NOT solve. Retry after a short wait. |
| Map view instead of list | Click "List" or "View list" toggle |
Post-Search: Direct Booking Check
After presenting results, offer: "Want me to check [hotel]'s direct website for promo codes or member rates? Direct booking is often cheaper."
agent-browser --session direct open "https://www.example-hotel.com"
agent-browser --session direct wait --load networkidle
agent-browser --session direct snapshot -i
agent-browser --session direct close
Look for: direct booking price (often 5-15% cheaper), promo banners, "Book Direct" incentives, loyalty member rates. For chain hotels (IHG, Marriott, Hilton, Accor, Hyatt), mention their loyalty programs.
For full interactive workflow (calendar navigation, guest/room selector, filters), see references/interaction-patterns.md.