Google Hotels Scraper
Pricing
from $0.80 / 1,000 results
Google Hotels Scraper
Pricing
from $0.80 / 1,000 results
Rating
0.0
(0)
Developer
MrDoe
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
What does Google Hotels Scraper do?
Google Hotels Scraper extracts hotel search results from Google Hotels/Travel for any location - anonymously, no login, no Google account, no browser. Give it a place (a city, a neighborhood, or a google.com/travel/hotels URL) and it returns every hotel and vacation rental Google lists there, with price, star class, rating, review count, and coordinates.
Why use this Actor?
- Price comparison - pull nightly rates for every hotel in a city for your exact stay dates in one shot.
- Market sizing -
hotelCounton the location-summary row tells you how many properties Google lists for a place (often 100+ per city). - Multi-city runs - batch several locations (
locations) in one run to compare markets side by side.
How to use it
- Fill Location with a place name (e.g.
"Paris","Times Square, New York") or a fullgoogle.com/travel/hotels/...URL, or fill Locations for a batch. - Set Check-in/Check-out dates (defaults to a rolling 2-night stay starting 2 days out), Currency, and Adults.
- Set Max hotels to cap the number of rows.
- Click Start.
locations wins over location when filled; duplicates and blanks are dropped automatically.
Input
| Field | Type | Description |
|---|---|---|
location / locations | string / array | A place name or a full google.com/travel/hotels/... URL. Batch field wins when filled. |
checkIn / checkOut | string (date) | YYYY-MM-DD. Default to a rolling 2-night stay starting 2 days from today. |
currency | string | 3-letter currency code for returned prices. Default USD. |
adults | integer | Adult guests per room used for pricing. Default 2. |
maxItems | integer | Caps the number of hotel rows produced per run (across all locations). Default 10. |
proxyConfiguration | object | A residential proxy is recommended for reliability at scale (see Limitations). |
Output
One flat row per item, distinguished by kind:
hotel- one per hotel/vacation rental found for a location.locationSummary- one per location query, carries the total hotel count found.
Hotel row:
{"kind": "hotel","status": "success","query": "New York","name": "The Manhattan at Times Square Hotel","location": "New York","checkIn": "2026-08-31","checkOut": "2026-09-01","propertyType": "hotel","hotelClass": 4,"rating": 4.2,"reviewCount": 10190,"price": "$187","priceAmount": 187,"currency": "USD","latitude": 40.7622856,"longitude": -73.9826404,"mapsUrl": "https://www.google.com/maps/search/?api=1&query=...","propertyToken": "ChkIooCAqvyy0fDgARoML2cvMWhoZ18zbWdzEAE"}
Location summary row:
{"kind": "locationSummary","status": "success","query": "New York","location": "New York","checkIn": "2026-08-31","checkOut": "2026-09-01","currency": "USD","hotelCount": 146,"hotelsListed": 10}
How it works
Google's Hotels/Travel UI calls an internal batchexecute JSON-RPC endpoint client-side to fetch results. Live-verified 2026-08-28 (with network-traffic logging via a real browser, then replayed from a cold, cookie-less process): a plain HTTP GET of the initial google.com/travel/hotels/<location> page returns real, complete HTML with the resolved location's bounding box, display name, and Google place ID (CID) embedded directly in it - no JS execution needed to read them. Those values are then used to build a plain HTTP POST to the same batchexecute endpoint Google's own client calls (rpcids=Ya3XAc), which returns the full hotel list as nested JSON. This worked with no cookies, no session, and no BotGuard token even from a brand-new process, so no browser is used at runtime - this Actor is pure got-scraping (the cheapest tier on the escalation ladder). One call typically returns 100+ hotels for a city (146 for New York, 135 for Paris in testing) in a single response.
Limitations
- No CAPTCHA/bot-protection was encountered at any point during testing (unlike this repo's TripAdvisor Actors, which need Camoufox to beat DataDome) - Google's read-only Hotels data endpoint simply doesn't gate on it the way its own client-side BotGuard header would suggest. This could change; a residential proxy is offered as a safety margin but was not required to get real data in testing.
- Address, amenities, and per-hotel review text are not included. The
Ya3XAclist endpoint returns name/price/class/rating/coordinates only - a full address or a paginated review list would need a separate per-hotel detail call this Actor doesn't make. - One call per location, not paginated further. Google's response already returns a large batch (100+ hotels for a major city) in a single call; this Actor does not chase a "load more" continuation token beyond that first batch.
- Vague or unrecognized locations fail cleanly. If Google can't resolve the location text to a place (bounding box + CID), the row comes back
status: "error"with a clear message - it will not silently default to an unrelated location. - Prices reflect the
currencyyou set and Google's own live pricing at fetch time - not guaranteed to match what you'd see at checkout on the booking site Google ultimately routes you to.
Pricing
This Actor uses pay-per-event pricing - one small run-start charge, then a per-row charge for each hotel row. See the Pricing tab for current rates. Failed lookups land as status: "error" rows and are never charged.
FAQ
Do I need a Google account or API key? No - it runs entirely against Google's public, logged-out Travel pages and their internal read-only API.
Why did my location come back "error"? Google couldn't resolve the text you gave it to a specific place. Try a more specific location (e.g. add a country/state) or pass the exact google.com/travel/hotels/... URL for that place.
Can I get individual room rates, not just a headline price? Not in this version - Google's list endpoint returns one representative nightly price per property, not a full room-type breakdown.
Disclaimer
This Actor is an independent tool, not affiliated with or endorsed by Google. It only accesses data Google serves publicly, including via its own client-side API calls made from a logged-out browser. Use it in compliance with Google's terms of use and applicable law in your jurisdiction. Found a bug or have a feature request? Use the Issues tab on this Actor's page.