Google Hotels Prices by Date: rates per booking site
DeprecatedPricing
from $1.95 / 1,000 hotel priceds
Google Hotels Prices by Date: rates per booking site
DeprecatedGoogle Hotels prices for your dates, per booking site: Booking.com, Expedia, Agoda, Trip.com and more, with price per night and total stay. Search by city or by hotel ID. Same input as the popular Google Hotels scraper. Pay per hotel.
Pricing
from $1.95 / 1,000 hotel priceds
Rating
0.0
(0)
Developer
Steadydata Team
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
20 hours ago
Last modified
Categories
Share
Google Hotels prices for your dates, per booking site: Booking.com, Expedia, Agoda, Trip.com and more, with price per night and total stay. Search by city or by hotel ID. Same input as the popular Google Hotels scraper. Pay per hotel.
Why this scraper
- Only delivered results are charged. Inputs that fail come back as clear error records at no cost.
- Your dates, checked on every page. Google sometimes shows prices for other dates than the ones you asked for. This actor checks that the dates in each answer are yours, and a hotel without prices for your dates is skipped and not charged, so a row never carries a price for the wrong stay.
- Every booking site, not just the cheapest. One row per hotel with the full list: Booking.com, Expedia, Hotels.com, Agoda, Trip.com, the hotel's own site and more, each with price per night, total for the stay and the booking link. Measured on 07-10-2026: 11 to 33 sites per hotel in Amsterdam and Lisbon.
- Same input as the popular Google Hotels scraper.
locations,checkInDate,checkOutDate,adults,currency,countryCode,maxResults: a schedule or integration built for that actor keeps working when you point it here. A location can also be a hotel ID or a Google Hotels link, for watching one hotel. - No browser. Plain page requests, so no page-load timeouts; a city of 5 hotels ran in 12 seconds on 07-10-2026.
Who this is for
Revenue managers and hotel owners checking their own rate against the booking sites (rate parity). Travel startups and agents comparing prices per date. Analysts and price-watchers who run the same hotels every day and want a clean history per date and per site.
Who this is not for
This is not a booking tool: it returns prices and links, it does not reserve rooms. Prices are Google's figures at the moment of the run; the final price on the booking site can differ by taxes, fees or availability. Holiday rentals that Google lists as apartments (IDs starting with ChoQ) often have no per-site price list on Google; those are skipped with a reason in the run log and not charged. A city page holds about 20 hotels, so a city gives at most 20 rows per date; for more, list hotel IDs. Room types per site are not included yet.
Input fields
| Field | Type | Required or default | What it does |
|---|---|---|---|
locations | list of text | required | One per row, up to 100: a city as Google knows it (Lisbon, New York), a Google Hotels hotel ID (starts with Ch), or a Google Hotels hotel link. |
checkInDate | text | required | Arrival date as YYYY-MM-DD. |
checkOutDate | text | required | Departure date as YYYY-MM-DD, after check-in; up to 30 nights. |
additionalCheckInDates | list of text | Extra arrival dates as YYYY-MM-DD, up to 30, each with the same number of nights as above: one run then covers a whole date range for price watching. | |
adults | number | 2 | Number of adult guests. |
currency | text | USD | Three-letter currency code for all prices, for example USD, EUR, GBP. |
countryCode | text | us | Two-letter market code; it also sets the country of the proxy exit. |
languageCode | text | en | Language for hotel and room names. |
maxResults | number | 10 | Cost ceiling per city. Google shows about 20 hotels on a city page. |
Input example
{"locations": ["Lisbon"],"checkInDate": "2026-11-19","checkOutDate": "2026-11-20","adults": 2,"currency": "USD","countryCode": "us","languageCode": "en","maxResults": 10}
Output example
| Field | Type | What it holds |
|---|---|---|
location | text | The input row this hotel came from: the city, or the hotel ID you gave. |
hotelName | text | The hotel's name as Google Hotels shows it. |
checkInDate | text | Arrival date of the stay these prices are for (YYYY-MM-DD). |
checkOutDate | text | Departure date of the stay these prices are for. |
nights | number | Number of nights between the two dates. |
adults | number | Guests the prices are for. |
currency | text | Currency of every price in the row. |
pricePerNight | number | Lowest price per night across all booking sites. |
totalRate | number | Lowest total for the whole stay across all booking sites. |
cheapestSource | text | The booking site with the lowest price per night. |
sourceCount | number | How many booking sites have a price for these dates. |
bookingSources | list | Every site: vendorName, ratePerNight, ratePerNightDisplay, totalRate, totalRateDisplay, isSponsored, bookingUrl. |
hotelId | text | Google's hotel ID; put it in locations to watch this hotel directly. |
googleHotelsUrl | text | The Google Hotels price page for these dates. |
countryCode | text | The market the prices were read in. |
Error codes: INVALID_INPUT, INVALID_DATES, UNKNOWN_CITY, BLOCKED, NO_PRICES, FETCH_FAILED.
A real row from a run on 07-10-2026, with the list of 22 sites cut to two and the links shortened:
{"location": "Amsterdam","hotelName": "CityHub Amsterdam","checkInDate": "2026-11-19","checkOutDate": "2026-11-21","nights": 2,"adults": 2,"currency": "USD","pricePerNight": 85.75,"totalRate": 171.5,"cheapestSource": "Tripadvisor.com","sourceCount": 22,"bookingSources": [{"vendorName": "Tripadvisor.com","ratePerNight": 85.75,"ratePerNightDisplay": "$86","totalRate": 171.5,"totalRateDisplay": "$172","isSponsored": false,"bookingUrl": "https://www.google.com/travel/lodging/clk?pc=AA80OszicmLAlCs..."},{"vendorName": "Vio.com","ratePerNight": 87.61,"ratePerNightDisplay": "$88","totalRate": 175.22,"totalRateDisplay": "$175","isSponsored": false,"bookingUrl": "https://www.google.com/travel/lodging/clk?pc=AA80Osxop0lCu1i..."}],"hotelId": "ChkIuJKIjfb1pJVwGg0vZy8xMWJicmwzMnh3EAE","googleHotelsUrl": "https://www.google.com/travel/hotels/entity/ChkIuJKIjfb1pJVwGg0vZy8xMWJicmwzMnh3EAE/prices...","countryCode": "US","status": "ok"}
Pricing
Pay per event: one hotel-priced event per hotel delivered with prices for your dates, with the full list of booking sites in that one row. Hotels without prices for your dates, cities Google does not know and failed pages are not charged, and there is no separate platform-usage surcharge.
FAQ
How do I watch prices for several dates?
Put the extra arrival dates in additionalCheckInDates (up to 30). Each takes the same number of nights as checkInDate to checkOutDate, and you get one row per hotel per arrival date, from one run; a city page is read only once. Every row carries its own checkInDate and checkOutDate, so runs from a daily schedule line up into one price history per hotel and date.
How do I watch one specific hotel?
Run a city once, take the hotelId of the hotel from the result, and put that ID in locations from then on. A Google Hotels hotel link works as well.
Why is a hotel from the city page missing? Because Google had no prices for it on your dates, or it is a holiday rental without a per-site price list. The run log names every skipped hotel with the reason; skipped hotels are not charged.
Which currency and market are used?
currency sets the currency of every price. countryCode sets the market Google shows and the country of the proxy exit; booking sites can differ per market.
Is this an alternative to the Amadeus Self-Service hotel API? For hotel prices per date and per booking site, yes. Amadeus switched off its self-service APIs on 17 July 2026. This actor reads Google Hotels; it does not book rooms.
Is personal data collected? No. The rows hold hotels, prices and links; no reviews, names or guest data.
What happens when the source changes? Sources change from time to time; that is the nature of this work. The actor is monitored daily and fixed fast, and while it is broken you are not charged, because only delivered results cost anything.
Can I call it from my own code, like an API? Yes. Every run is available through the Apify API: start it with one HTTP request, then read the results as JSON, CSV or Excel from the dataset endpoint, or use the official Python and JavaScript clients. The input is the same JSON as in the input example above, so a scheduled script, a Make or Zapier step or an AI agent can call it without any changes.