Google Hotels Price Calendar – Nightly Rates by Date avatar

Google Hotels Price Calendar – Nightly Rates by Date

Pricing

from $1.00 / 1,000 date prices

Go to Apify Store
Google Hotels Price Calendar – Nightly Rates by Date

Google Hotels Price Calendar – Nightly Rates by Date

Hotel price calendar from Google Hotels: the cheapest nightly rate for every check-in date up to a year ahead, for any hotel by name or link, any currency and stay length. Optional prices per booking site (Booking.com, Expedia, official site…) for each date.

Pricing

from $1.00 / 1,000 date prices

Rating

0.0

(0)

Developer

Smoldesk Studios

Smoldesk Studios

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 hours ago

Last modified

Security

Limited permissions

Share

Google Hotels Price Calendar: the cheapest nightly rate for every check-in date, up to a year ahead

Get a hotel price calendar from Google Hotels: the cheapest nightly rate for every check-in date, up to a year ahead, for any hotel in the world. Type a hotel name (or paste its Google Hotels link), pick the dates, nights, guests and currency, and get one row per date with the price per night, stay total, taxes and fees, the weekday and a flag on the cheapest date. Turn on booking-site prices to also see what Booking.com, Expedia, Hotels.com, Agoda, Trip.com or the hotel's official site charge for each date. No API key, no login.

A full year for one hotel takes a few seconds.

What you can use it for

  • Find the cheapest dates to book a hotel, or the cheapest weekend in the next six months
  • Revenue management and rate shopping: track a competitor hotel's rates for every night of the season
  • Price monitoring: schedule a daily run and watch how rates for future dates move as they get closer
  • Seasonality research: compare weekday vs weekend, high vs low season, events and holidays across cities
  • Travel apps and AI agents: show a price calendar or let an agent pick the best dates to stay
  • OTA parity checks: compare the official site against Booking.com, Expedia and others, date by date

How to use it

1. Add hotels and dates. Type a hotel name or paste its Google Hotels link, then pick the first check-in date, how many dates, nights and guests.

Step 1: add hotels, a first check-in date and the number of dates

2. Click Start. One hotel's whole calendar comes back in seconds. Booking-site prices add one request per date.

Step 2: click Start and watch the run log

3. Get clean data. One row per check-in date with the nightly price, total, taxes and the cheapest booking site. Export it as JSON, CSV or Excel, or read it through the API.

Step 3: get one row per date and export it as JSON, CSV, Excel or via API

How to scrape a Google Hotels price calendar

  1. Create a free Apify account (no credit card needed).
  2. Open this Actor and add your Hotels: a name like Hilton Paris Opera, a Google Hotels link (https://www.google.com/travel/hotels/entity/Ch…) or an entity ID.
  3. Set the first check-in date (empty = tomorrow), the number of check-in dates (up to 366), nights per stay, guests and currency.
  4. Optional: turn on Booking-site prices for each date.
  5. Click Start. Download the results as JSON, CSV, Excel or HTML, or fetch them through the Apify API.
  6. To track prices over time, schedule the run (daily or weekly) in Apify Console.

Tips:

  • Common hotel names? Add the city: Ibis Kuala Lumpur City Centre, Hilton Paris Opera. If a name doesn't match a single hotel, the Actor tells you so and charges nothing. A Google Hotels link always works.
  • Stays of 1 to 28 nights are supported; prices are per night and the total covers the whole stay.
  • Dates without a rate (sold out, closed, not bookable through Google) are skipped and not charged. Turn off Only dates with a price to get a row for every date and track sell-outs.

Output: one row per hotel and check-in date

{
"type": "date-price",
"hotelName": "Hilton Paris Opera",
"entityId": "ChoIkoe_uKT777foARoNL2cvMTFiNnpyNG0xNhAB",
"googleUrl": "https://www.google.com/travel/hotels/entity/ChoIkoe_uKT777foARoNL2cvMTFiNnpyNG0xNhAB",
"hotelInput": "Hilton Paris Opera",
"adults": 2,
"childrenAges": [],
"checkIn": "2027-08-21",
"checkOut": "2027-08-23",
"weekday": "Saturday",
"nights": 2,
"available": true,
"pricePerNight": 266.41,
"pricePerNightText": "€266",
"pricePerNightWithTaxes": 291.36,
"pricePerNightBeforeTaxes": 249.44,
"displayedPriceIncludesTaxes": false,
"totalPrice": 582.72,
"totalPriceText": "€533",
"totalBeforeTaxes": 498.88,
"totalTaxesAndFees": 83.84,
"currency": "EUR",
"isCheapestDate": true,
"scrapedAt": "2026-11-04T00:12:38.639117+00:00"
}
  • isCheapestDate marks the lowest all-in nightly rate in the dates you asked for (ties are all marked).
  • Taxes: Google shows the nightly rate with or without taxes depending on the visitor's country (from US IPs, usually without). pricePerNight / pricePerNightText are the rate exactly as Google displays it and displayedPriceIncludesTaxes tells you which one it is. For comparisons use pricePerNightWithTaxes / totalPrice (all-in) or pricePerNightBeforeTaxes / totalBeforeTaxes. These come from Google's tax breakdown and are filled in whenever Google provides it.

With booking-site prices

{
"hotelName": "JW Marriott Hotel Kuala Lumpur",
"checkIn": "2026-11-08",
"checkOut": "2026-11-09",
"pricePerNight": 96.83,
"pricePerNightWithTaxes": 119.42,
"currency": "USD",
"cheapestSite": "JW Marriott Hotel Kuala Lumpur",
"cheapestSitePrice": 120,
"bookingSitePrices": [
{"site": "Hotels.com", "isOfficialSite": false, "pricePerNight": 121, "pricePerNightText": "$121", "totalPrice": 132, "details": "Save on the app · Earn rewards everywhere"},
{"site": "Expedia.com", "isOfficialSite": false, "pricePerNight": 121, "pricePerNightText": "$121", "totalPrice": 132, "details": "Free Wi-Fi"},
{"site": "JW Marriott Hotel Kuala Lumpur", "isOfficialSite": true, "pricePerNight": 120, "pricePerNightText": "$120", "totalPrice": 129, "details": "Free cancellation until Nov 5"}
]
}

Google usually lists 3–6 sites per date. Site prices are per night as the site shows them, totalPrice is the site's total for the stay with taxes. Which sites appear depends on the Country setting and on what Google shows for that hotel. The calendar price is Google's lowest rate for the date and can differ a little from the sites listed.

Input

{
"hotels": ["Hilton Paris Opera", "https://www.google.com/travel/hotels/entity/ChUI17vV0u_fprYCGgkvbS8wZGQ5MDMQAQ"],
"startDate": "2026-12-01",
"days": 90,
"nights": 2,
"adults": 2,
"currency": "EUR",
"includeBookingSites": false
}
FieldWhat it does
hotelsHotel names, Google Hotels links or entity IDs
startDate / days / endDateCheck-in dates to price: from startDate (default tomorrow) for days dates (max 366), or up to endDate
nightsStay length, 1–28
adults, childrenAgesGuests; prices follow the room Google would offer for that party
currencyAny three-letter code: USD, EUR, GBP, JPY, AUD, SGD, MYR, INR…
onlyAvailableDatesSkip (and don't charge) dates with no rate. On by default
includeBookingSitesPrices per booking site for each date
maxBookingSiteDatesFetch booking-site prices only for the first N dates of each hotel
language, countryGoogle hl / gl

Pricing

Pay per result, no subscription. You only pay for dates that are saved.

EventPrice
Date price (one hotel, one check-in date)$1.00 per 1,000 dates
Booking-site prices for a date (all sites listed for that date)$1.50 per 1,000 dates
Actor start$0.00005 per run

Examples: a full year for one hotel (366 dates) costs about $0.37. Thirty dates with booking-site prices cost $0.075. Apify's free plan includes $5 of monthly usage, enough for about 5,000 dates.

Use with AI agents (Claude, ChatGPT, Cursor, MCP)

Add the Actor as a tool through the Apify MCP server: https://mcp.apify.com?actors=smoldesk/google-hotel-price-calendar. Then paste this into your agent's system prompt or tool notes, so it knows when to call it:

Tool: smoldesk/google-hotel-price-calendar (Google Hotels Price Calendar, Apify)
Use it when: the user wants a hotel's cheapest nightly rate for each check-in date (up to a year ahead), the cheapest dates to stay, how a hotel's price changes by weekday or season, or booking-site prices per date. Give a hotel name with the city, or a Google Hotels link. No login needed.
Don't use it when: the user wants a list of hotels in a city with prices for one set of dates (use smoldesk/google-hotels-scraper), room-by-room availability, flights, or a booking.
How to call: run the Actor with JSON input and read the dataset items. Results cost money per item, so keep the counts small unless the user asks for more.
Example input: {"hotels": ["Marina Bay Sands Singapore"], "days": 60, "nights": 2, "adults": 2, "currency": "SGD"}

Questions an agent can answer with it:

  • What's the cheapest weekend to stay at Marina Bay Sands in the next two months?
  • How much more does this hotel cost on Fridays and Saturdays than midweek?
  • Track this hotel's price for every date in December and tell me when it drops.

Your agent can pay for its own runs. This Actor is approved for agentic payments on Apify, so an agent with a Skyfire token or an x402 wallet can call it and pay per result without an Apify account. Skyfire: use https://mcp.apify.com?payment=skyfire. x402: buy a prepaid Apify token with USDC. Setup: Apify agentic payments docs.

Use with AI (LangChain / LlamaIndex / CrewAI)

Each row is a flat record that an LLM or agent can read directly (hotel, date, weekday, price, taxes, cheapest flag). With LangChain (pip install langchain-apify):

from langchain_apify import ApifyWrapper
from langchain_core.documents import Document
apify = ApifyWrapper() # reads APIFY_API_TOKEN
loader = apify.call_actor(
actor_id="smoldesk/google-hotel-price-calendar",
run_input={"hotels": ["Hilton Paris Opera"], "days": 60, "nights": 2, "currency": "EUR"},
dataset_mapping_function=lambda v: Document(
page_content=f"{v['hotelName']}: check-in {v['checkIn']} ({v['weekday']}), {v['nights']} nights, "
f"{v['pricePerNight']} {v['currency']} per night, total {v['totalPrice']}",
metadata={k: v.get(k) for k in ("entityId", "checkIn", "pricePerNight", "isCheapestDate")},
),
)
docs = loader.load()

Already have a run? Use ApifyDatasetLoader(dataset_id="<run's dataset ID>", dataset_mapping_function=...). LlamaIndex: ApifyActor from llama-index-readers-apify. CrewAI: use the Apify MCP server above.

Limitations

  • Calendar prices are Google's lowest rate per date, not a list of every room type. For per-site rates, turn on booking-site prices.
  • Some hotels don't show prices on Google at all (they aren't bookable through Google). The Actor reports this and charges nothing for them.
  • Google's calendar covers about a year ahead and stays of up to 28 nights.
  • If Google starts answering with captcha pages, the Actor slows down and stops early with what it has (shown in the status message) rather than hammering the site.

FAQ

Is it legal to scrape Google Hotels? The Actor collects only public prices that Google shows any visitor, with no login. Check the rules that apply to your use and don't republish data in ways the source forbids.

Do I need a Google account, API key or proxies? No. Requests go out from the run's own IP. You can switch on an Apify datacenter proxy in the input if you prefer.

How is this different from the Google Hotels Scraper? That Actor lists the hotels in a city for one set of dates. This one takes specific hotels and prices them across many dates.

Can I get prices for a whole city across dates? Run the Google Hotels Scraper for the city, take the entityId of the hotels you want, and pass them here.

Feedback

Missing a field or found a bug? Open an issue on the Issues tab. We usually answer within a day. If the Actor saved you time, a short review on this page helps other people find it.

More Actors from Smoldesk Studios

  • Contact Details Scraper: emails, phone numbers, social profiles and contact forms from any list of websites, with email domains checked and junk removed, charged only when contacts are found
  • Google Maps Scraper: places with phones, websites, ratings and hours from any search, plus emails and social profiles from each business website, lead filters and new-place monitoring
  • WeChat Articles Scraper: WeChat Official Account (公众号) articles from keyword search, full text as Markdown, images, account IDs and publish dates, no login
  • Google Hotels Scraper: hotel prices for your dates in any currency, ratings, review aspects and booking-site prices, worldwide
  • Google Trends Scraper: interest over time, by region and city, related queries and Trending now — no API key
  • Google Ads Transparency Scraper: every ad a competitor runs on Google Search, YouTube and Shopping — creatives, landing pages, countries, EU impressions and new-ad alerts
  • YouTube Scraper: videos, Shorts, channels and comments from search, channels and playlists — exact views, likes, publish dates and durations, no API key
  • YouTube Comments Scraper: comments and replies from videos, channels, playlists or keyword searches, with likes, pinned/hearted flags and authors
  • YouTube Channel Scraper: subscribers, exact total views, join date, country and social links of any channel, plus its latest videos
  • Weibo Scraper: Weibo search with date ranges, posts, comments, profiles and hot search (热搜), no login
  • Toutiao Scraper: Toutiao (今日头条) news search with dates, comments and the hot board, no login
  • Bilibili Scraper: videos, stats, danmaku, comments and creators from China's video site, no login
  • Tennis Scraper: ATP, WTA, Challenger and ITF results and fixtures with odds from 15 bookmakers, H2H, players and rankings, back to the 2000s
  • Telegram Channel Scraper: public channel posts, views, reactions and subscribers
  • Substack Scraper: newsletters, subscriber counts and posts
  • Shopify Store Analyzer: apps, contacts and products of any Shopify store
  • Career Site Jobs Scraper: live jobs from 12,000+ company career sites (Greenhouse, Lever, Workday, Ashby) with salary and seniority
  • SEEK, JobStreet & JobsDB Scraper: jobs and salaries across Australia and Southeast Asia