Google Hotels Scraper avatar

Google Hotels Scraper

Pricing

from $0.80 / 1,000 results

Go to Apify Store
Google Hotels Scraper

Google Hotels Scraper

Pricing

from $0.80 / 1,000 results

Rating

0.0

(0)

Developer

MrDoe

MrDoe

Maintained by Community

Actor 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 - hotelCount on 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

  1. Fill Location with a place name (e.g. "Paris", "Times Square, New York") or a full google.com/travel/hotels/... URL, or fill Locations for a batch.
  2. Set Check-in/Check-out dates (defaults to a rolling 2-night stay starting 2 days out), Currency, and Adults.
  3. Set Max hotels to cap the number of rows.
  4. Click Start.

locations wins over location when filled; duplicates and blanks are dropped automatically.

Input

FieldTypeDescription
location / locationsstring / arrayA place name or a full google.com/travel/hotels/... URL. Batch field wins when filled.
checkIn / checkOutstring (date)YYYY-MM-DD. Default to a rolling 2-night stay starting 2 days from today.
currencystring3-letter currency code for returned prices. Default USD.
adultsintegerAdult guests per room used for pricing. Default 2.
maxItemsintegerCaps the number of hotel rows produced per run (across all locations). Default 10.
proxyConfigurationobjectA 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 Ya3XAc list 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 currency you 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.