Google Hotels Prices by Date: rates per booking site avatar

Google Hotels Prices by Date: rates per booking site

Deprecated

Pricing

from $1.95 / 1,000 hotel priceds

Go to Apify Store
Google Hotels Prices by Date: rates per booking site

Google Hotels Prices by Date: rates per booking site

Deprecated

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.

Pricing

from $1.95 / 1,000 hotel priceds

Rating

0.0

(0)

Developer

Steadydata Team

Steadydata Team

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

20 hours ago

Last modified

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

FieldTypeRequired or defaultWhat it does
locationslist of textrequiredOne 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.
checkInDatetextrequiredArrival date as YYYY-MM-DD.
checkOutDatetextrequiredDeparture date as YYYY-MM-DD, after check-in; up to 30 nights.
additionalCheckInDateslist of textExtra 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.
adultsnumber2Number of adult guests.
currencytextUSDThree-letter currency code for all prices, for example USD, EUR, GBP.
countryCodetextusTwo-letter market code; it also sets the country of the proxy exit.
languageCodetextenLanguage for hotel and room names.
maxResultsnumber10Cost 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

FieldTypeWhat it holds
locationtextThe input row this hotel came from: the city, or the hotel ID you gave.
hotelNametextThe hotel's name as Google Hotels shows it.
checkInDatetextArrival date of the stay these prices are for (YYYY-MM-DD).
checkOutDatetextDeparture date of the stay these prices are for.
nightsnumberNumber of nights between the two dates.
adultsnumberGuests the prices are for.
currencytextCurrency of every price in the row.
pricePerNightnumberLowest price per night across all booking sites.
totalRatenumberLowest total for the whole stay across all booking sites.
cheapestSourcetextThe booking site with the lowest price per night.
sourceCountnumberHow many booking sites have a price for these dates.
bookingSourceslistEvery site: vendorName, ratePerNight, ratePerNightDisplay, totalRate, totalRateDisplay, isSponsored, bookingUrl.
hotelIdtextGoogle's hotel ID; put it in locations to watch this hotel directly.
googleHotelsUrltextThe Google Hotels price page for these dates.
countryCodetextThe 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.