Search Google Hotels for any city, district or landmark and get clean JSON: price per night and total for your dates, star class, rating, review count and distribution, rating by aspect (service, location, cleanliness...), GPS, website, photos, check-in times and nearby places.
- No Selenium / Playwright - plain HTTPS requests, about 20 hotels per second
- Real dates, number of guests and any currency
- Automatic paging - hundreds or thousands of hotels per location
- Unrecognized locations raise a clear error instead of returning random hotels
pip install curl_cffi
git clone https://github.com/janik4321sdfa/google-hotels-python
cd google-hotels-pythonpython -m google_hotels Prague 2026-11-12 --nights 2 --adults 2
python -m google_hotels "Manhattan, New York" 2026-12-18 --currency EUR --limit 200 --json 80 USD/night 4.5 (1632 reviews) 4* Royal Court Hotel
180 USD/night 4.8 (1461 reviews) 4* The Julius Prague
...
from google_hotels import search
hotels = search("Prague", "2026-11-12", nights=2, adults=2, currency="EUR", limit=200)
best = [h for h in hotels if (h["rating"] or 0) >= 4.5 and (h["pricePerNight"] or 1e9) < 120]
for h in best:
print(h["name"], h["pricePerNight"], h["rating"], h["latitude"], h["longitude"], h["website"])Google Hotels keeps the search state (place, dates, guests, currency) in the ts URL parameter and the page cursor in qs - both are base64 protobuf messages built by hand in build_ts() / build_qs(). Results are parsed from the server-rendered ds:0 data block.
For scheduled monitoring of many cities and dates without getting rate-limited or maintaining the parser, use the hosted version:
Google Hotels Scraper on Apify - same data, rotating IPs, scheduling, CSV/Excel export, $2 per 1,000 hotels, you pay only for results.
Related: Google Flights (Python) - Google Flights on Apify - Google Trends on Apify
Unofficial, not affiliated with Google. Uses publicly available search results; respect Google's terms and use reasonable request rates.
MIT