Google Hotels Scraper: Prices, OTA Rates and Rate Parity
Pricing
from $1.99 / 1,000 hotel prices
Google Hotels Scraper: Prices, OTA Rates and Rate Parity
Scrape Google Hotels prices for any city or hotel across a calendar of check-in dates, in any currency, with stay length and occupancy echoed on every row, plus per-site offers (Booking.com, Expedia, the hotel's own site) for rate-parity checks.
Pricing
from $1.99 / 1,000 hotel prices
Rating
0.0
(0)
Developer
Aniruddha Garje
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
9 hours ago
Last modified
Categories
Share
Get Google Hotels prices for any city search across a calendar of check-in dates, in the currency you choose. Every row carries the stay length and occupancy. Turn on offers to add the price each booking site shows (Booking.com, Expedia, Agoda, the hotel's own site and more) for rate parity checks. I built it to read the data Google embeds in its own pages with plain HTTP requests, with no browser.
At a glance
| Use it when | You need Google Hotels nightly prices for a city over one or many check-in dates, optionally with each booking site's price. |
| Input you need | A search in queries, for example "hotels in Paris" (required); dates as checkInFrom/checkInTo or checkInFromDaysAhead/checkInToDaysAhead; nights, adults, currency, country. |
| What you get | One row per hotel and check-in date with nightly price, stay and occupancy echoed, and the place Google matched; with includeOffers, one row per booking site. |
| Cost | $1.99 per 1,000 hotel prices; $1.00 per 1,000 booking-site offers. |
| Limits | The result list can differ from what a browser shows. Named-hotel tracking by link is coming soon. |
I built this Actor and test it against what the live site shows. The check runs again every week.
What you get
One row per hotel and check-in date (type: "hotel"):
| Field | Example |
|---|---|
name, hotelId, url | Oden Hôtel Paris Ivry, Google Hotels link |
checkInDate, checkOutDate, nights | 2026-11-12, 2026-11-14, 2 (as Google reported them) |
adults, children, childAges | 2, 0, [] |
currency, pricePerNight, pricePerNightText, totalPriceText | USD, 97.95, $98, $196 |
hotelClass, rating, reviewCount | 4, 4.7, 158 |
latitude, longitude, countryCode, website, description | |
dealText | 16% less than usual |
query, resolvedPlace, country | The search, the place Google read it as (for example Paris), and the searcher country |
With Include per-site offers on, one extra row per booking site (type: "offer") with provider, pricePerNight and totalPrice for that hotel and date.
What this Actor handles for you
- Blocked pages are retried, never charged. Google sometimes answers with a rate-limit page. This Actor detects it, switches to a fresh IP and retries, and it never saves or charges a blocked page. Each run writes
RUN_STATSwith pages fetched, blocked responses and failed requests, so you can see the success rate yourself. - The stay length you asked for.
nightsis sent to Google the same way Google's own date picker does, and the check-in date, check-out date and nights Google actually priced are read back from Google's data and echoed on every row. - Filters. Hotel class (for example 4 stars) and amenities (for example free Wi-Fi) are applied by Google itself, the same way its own filter panel applies them. Minimum rating and price range are applied to the results. There is no free-cancellation filter.
- A full date calendar, checked up front. One search runs for every check-in date between
checkInFromandcheckInTo, so the calendar has no gaps. Past dates are rejected before the run starts, with a clear message, so they cost nothing. For scheduled runs, setcheckInFromDaysAheadandcheckInToDaysAhead(days after the run date) instead of fixed dates, so the calendar moves forward with every run and never expires. - Your currency. Set a three-letter ISO 4217 currency code; measured with USD, INR and IDR.
Input
| Field | Default | What it does |
|---|---|---|
queries | City searches as typed into Google, for example hotels in Paris | |
hotelUrls | [] | Coming soon: named-hotel tracking. A run with hotel links stops at once and costs nothing |
checkInFrom, checkInTo | tomorrow | Price calendar range as fixed dates |
checkInFromDaysAhead, checkInToDaysAhead | The same range as days after the run date, for scheduled runs | |
nights | 1 | Stay length |
adults, children, childrenAges | 2, 0 | Occupancy |
currency | USD | Three-letter ISO 4217 code, for example USD |
country | US | Searcher country; also pins the proxy country, because Google's prices follow the requester's country |
filters | {} | hotelClass, amenities, minRating, priceMin, priceMax |
includeOffers | false | Per-site offers as a separate paid event |
includeUnavailable | false | Also return hotels without a price for that date (pricePerNight null, available false). These rows are not charged |
maxHotelsPerQuery | 50 | Hard cost cap per search and date |
Pricing
Pay per result: $1.99 per 1,000 hotel prices and $1.00 per 1,000 booking-site offers. You pay only for rows saved to your dataset, never for errors, blocked pages or duplicates. If you set a maximum cost per run, the Actor stops cleanly when it is reached.
Reliability
Each search is first matched to a place by Google, and every row carries that place as resolvedPlace. If Google does not recognise a search, it is skipped and not charged, and the run's status message lists it. Add a region to choose between places with the same name, for example "hotels in Springfield, Massachusetts".
The result list can differ from what a browser shows. Google changes its hotel list between visits: in our test on 8 October 2026, two browser visits 12 minutes apart had 87% of their hotels in common. Prices for the hotels returned matched the browser to within 10% in 99% of cases in the same test.
A restarted or migrated run resumes where it stopped and does not deliver or charge the same row twice.
Named-hotel tracking: coming soon
Tracking specific hotels by their Google Hotels link (hotelUrls) is coming soon. Until then, run a city search with Include per-site offers on and checkInFromDaysAhead and checkInToDaysAhead set, schedule it daily, and compare pricePerNight per provider for the hotels you follow.
Use cases
Each one is a ready task you can open, run and copy:
- Hotel price calendar for one city: one price per check-in date from 7 to 31 days ahead. The dates move with every run.
- Hotel prices with booking-site offers: each booking site's price for the same hotel and night, for rate parity checks.
- Scheduled hotel price check, 14 days ahead: the same stay priced every day, with no dates to update.
You can also take weekly price snapshots across several cities in one run.
Read more
I write up what the data shows, with the run ID behind every number: