Hotel prices swing wildly by date. The same London hotel I checked this week ranged from £144 to £360 a night within a single week. If you're a revenue manager, a travel startup, or just planning a trip around a flexible date, you want that whole curve, not one number.

Google Hotels has the data, but Google offers no public hotel-price API. This post shows how to get a price calendar: one hotel's nightly price across up to 180 check-in dates, as a spreadsheet, in about a minute.

Disclosure: I built the tool used here, Google Hotels Scraper on Apify. It's paid per result (about $2.50 per 1,000 rows), and Apify's free plan credit covers small experiments like this one.

1. Find the hotel's link

Open the hotel on Google Hotels and copy the URL. It contains /travel/hotels/entity/.... That ID is all you need.

2. Run the price calendar

No code required: open the Actor, paste the link into Specific hotels, set your first check-in date, a 1-night stay, and Price calendar (days) = 60, then click Start.

Or from Python:

from apify_client import ApifyClient client = ApifyClient("YOUR_APIFY_TOKEN") run = client.actor("harbourdata/google-hotels-scraper").call(run_input={ "hotelUrls": ["https://www.google.com/travel/hotels/entity/ChkIseK87saGv4e2ARoML2cvMTF4dngxM2t3EAE"], "checkInDate": "2027-01-05", "checkOutDate": "2027-01-06", # 1-night stays "priceCalendarDays": 60, # the next 60 check-in dates "currency": "GBP", }) rows = list(client.dataset(run["defaultDatasetId"]).iterate_items()) 

You get one row per date, with checkInDate, pricePerNight, totalPrice, taxes, and the hotel's rating and star class.

3. Find the cheap and expensive nights

import pandas as pd df = pd.DataFrame(rows)[["checkInDate", "pricePerNight"]].dropna() df["weekday"] = pd.to_datetime(df.checkInDate).dt.day_name() print(df.nsmallest(5, "pricePerNight")) # cheapest nights print(df.groupby("weekday").pricePerNight.mean().round(0)) # average by day of week 

Dates where Google shows no price (sold out or not bookable) come back with "availability": "no_price_for_these_dates", so they're easy to filter.

4. Compare booking sites too

Turn on Include every booking site's price and each row also lists what Booking.com, Expedia, Trip.com, Agoda, the hotel's own site and others charge for that night, with booking links. That's handy for checking rate parity, meaning whether an online travel agency is undercutting the hotel's own website.

Ideas

  • Hotels: a weekly scheduled run on your own property plus 5 competitors gives you a cheap rate-shopping report.
  • Travel apps: "best night to book" features, or price-drop alerts.
  • Analysts: seasonality and event spikes. Concert and match nights stand out immediately.

If you try it and something's missing, open an issue on the Actor page. I read them all.