Google Hotels Price Tracker — Hotel Prices by City & Dates avatar

Google Hotels Price Tracker — Hotel Prices by City & Dates

Pricing

from $1.60 / 1,000 hotels

Go to Apify Store
Google Hotels Price Tracker — Hotel Prices by City & Dates

Google Hotels Price Tracker — Hotel Prices by City & Dates

Hotel prices from Google Hotels for any city, dates and number of guests: price per night and total, stars, rating, reviews, amenities, the cheapest booking site and its price on other sites. Run it again or on a schedule to get the price change since the last run. Currency of your choice. No login.

Pricing

from $1.60 / 1,000 hotels

Rating

0.0

(0)

Developer

Northbell

Northbell

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 hours ago

Last modified

Share

Give it a list of cities — with check-in and check-out dates and the number of guests if you like — and get one clean row per hotel from Google Hotels: price per night, total for the stay, stars, rating, review count, amenities, the cheapest booking site (and the price on other sites), address and a link. $2 per 1,000 hotels, no login, no API key, prices in the currency you choose.

Run it again — or put it on a schedule — and every hotel you have seen before also shows what changed since the last run: previousPrice, priceChange and priceChangePercent. Google only shows today's price; this Actor keeps the history for you, in your own Apify account.

What you get

One row per hotel (type: "hotel"), one free summary row per search (type: "summary"), and a free error row for a search that could not be read (type: "error").

FieldWhat it is
search, resolvedPlacethe city you gave, and the place Google understood it as
rankthe order the hotels were found in. Google reshuffles its list on every request, so this is not a stable ranking (see Notes)
id, name, propertyType, hotelClassthe hotel, its type as Google files it (hotel, hostel, guest house, resort hotel…) and its stars (1–5)
rating, reviewCountGoogle guest rating (out of 5) and number of reviews
pricePerNight, totalPrice, currencythe price Google shows for your dates: total for the whole stay ÷ nights, and the total, in the currency Google answered in
priceInsightGoogle's own label when it shows one, e.g. "52% less than usual"
checkIn, checkOut, nights, adultsthe stay that was priced
lowestPriceSite, lowestPriceSitePerNight, priceBySitethe site with the lowest price (often the hotel's own site), its price per night, and the price per night on up to 10 sites, cheapest first
amenitieswhat Google lists on the result: Free Wi-Fi, Pool, Free breakfast…
address, latitude, longitude, googleHotelUrlwhere it is, and a link that opens the hotel on Google Hotels with your dates and guests
previousPrice, priceChange, priceChangePercentthe price when this hotel was last seen, and the difference (negative = cheaper). null the first time a hotel is seen
previousCheckIn, previousObservedAt, stayMovedwhich stay that earlier price was for, when it was read, and whether the stay dates are different now (see Notes)
observedAtwhen the row was read

The summary row has hotelsRead, medianPrice, cheapestName, cheapestPrice, highestPrice, hotelsComparedWithLastRun, priceDrops, priceRises and notes (anything you should know about that search, such as Google answering in another currency).

Run it again and again

  • On a schedule — save your input as a task and add a Schedule: the same searches every day. Send each run to Google Sheets, Slack or email with an integration on the task.
  • Watch for changes — Keep the same input on the schedule. Each run is its own dataset with the date it ran, so the series builds up run by run and you can compare one day with the last.
  • In bulk — Put every city and date range in Searches in one run.

Use it for

  • Trip and event price watching — fix your dates, schedule a daily run and see which hotels got cheaper
  • Market snapshots — the median and cheapest nightly price in a city for a weekend, a conference or a season
  • Price comparison across booking sites — priceBySite shows where each hotel is cheapest
  • Hospitality and travel research — stars, ratings, amenities and prices for a whole city in one table

Input

{
"searches": [
{ "city": "Lisbon", "checkIn": "2026-11-10", "checkOut": "2026-11-12", "adults": 2 },
"Paris"
],
"currency": "EUR",
"maxHotelsPerSearch": 50
}
  • A plain name ("Paris") is priced for a stay that starts 30 days after the run, for 2 nights, for 2 adults.
  • Use fixed dates (checkIn + checkOut, or checkIn + nights) when you want to track one stay over time.
  • city can also be a phrase such as "boutique hotels in Kyoto" or "hotels near Eiffel Tower".
  • adults (1–10) can be set per search or once for all. currency is any of the 72 Google offers. maxHotelsPerSearch is 1–500.
  • Put all your searches in one run: the run-start fee is charged once.

The history is kept per hotel in a named key-value store in your Apify account, so the second run of the same Actor already shows changes. Schedule it (Apify → Schedules) for a daily history.

Pricing

$2 per 1,000 hotels, plus $0.01 per run. Error rows and summary rows are free. The $0.01 run-start fee is the one charge every run pays, even one that returns nothing.

Notes

  • What the price is. The price Google Hotels shows for one room for your guests, with the taxes and fees Google adds in. totalPrice is Google's total for the stay and pricePerNight is that total divided by the nights. Prices are read as an English-language visitor from the United States and the Actor has no country setting. (In a test on 8 October 2026 the market setting made no difference to the prices of 12 Lisbon hotels for the US, Germany, Japan and Brazil, but we only ran it from one place and do not claim prices are the same in every country.)
  • Currency. You choose it and Google converts at its own rate. Every row carries the currency Google actually answered in. If that were ever different from your setting, the summary row says so. Price changes smaller than 0.5% are reported as 0: they are currency conversion noise, not a new price.
  • Google shows a different slice of a city each time. In our tests the same search returned about two thirds of the same hotels on a second call, in a different order. So rank is only the order of discovery, and a price change is only shown for a hotel that appears in both runs. The Actor remembers up to 1,500 hotels per search for 120 days and does not forget hotels that did not show up last time, so coverage grows with every run. For a steadier set, ask for more hotels (up to 500) or search something narrower, such as "4 star hotels in Lisbon".
  • Fixed dates or rolling dates. With fixed dates every change is like for like. With plain city names the stay starts 30 days after each run, so tomorrow's run prices a stay one day later; stayMoved is then true and previousCheckIn shows which stay the old price was for.
  • Dates Google accepts. Check-in from today up to 320 days ahead (later than that Google shows almost no prices), 1–30 nights. For dates outside that Google quietly answers for other dates; the Actor notices and returns an error row instead of prices for the wrong stay.
  • Large groups. Google prices one room for all the adults you give. From about 5 adults up, few hotels have a room that sleeps everyone and the rest come back without a price, so you get far fewer rows (in a test, Oslo for 2 nights with 6 adults gave 3 priced hotels in the first 14 pages of about 270 listings, and 8 adults gave 1). The summary row then says Google listed only that many hotels with a price. For a big group, search per room: 2 or 3 adults at a time.
  • Vacation rentals (apartments Google mixes into the list) are left out unless you switch them on. Sponsored hotel ads are never included. Google also lists a few places that are not hotels but offer rooms (a ski resort, an RV park): propertyType tells you, so you can filter them out.
  • Headline price and site prices are read a moment apart. pricePerNight comes from Google's results list and priceBySite from the hotel's own page. For roughly 1 hotel in 10 in our tests (11 of 165 in one, 10 of 75 in another) the cheapest site was more than 1% above or below the headline price, so compare lowestPriceSitePerNight with pricePerNight when the exact figure matters.
  • Fields that are only filled in some cases. hotelClass is empty for the many hostels, capsule hotels, guest houses and inns that Google gives no star class (about a third of the rows in our test). priceInsight appears only when Google shows a "less than usual"-type label. lowestPriceSite, lowestPriceSitePerNight, priceBySite and address need Read booking sites and address (on by default; it costs one extra request, about 1.5 seconds, per hotel). They are empty when Google returns no page for that hotel, and address is often empty for vacation rentals. amenities lists the amenities Google puts on the result card, not every amenity the hotel has. previousPrice, priceChange and priceChangePercent are null for a hotel not seen before.
  • A misspelled place. Google then guesses a wider area, often a whole country. The summary row says what Google understood (resolvedPlace) and adds a note when that does not look like what you typed.
  • Public data only: what anyone sees on Google Hotels without signing in. No reviewer names, phone numbers or email addresses are returned.

Looking for stays and flights too? See Airbnb Listings Tracker and Google Flights Price Tracker.

For AI agents

{"searches": ["Lisbon"], "maxHotelsPerSearch": 5} returns 5 hotel rows (type: "hotel") with pricePerNight, totalPrice, currency, hotelClass, rating and lowestPriceSite, plus one summary row with medianPrice and cheapestName. Rows have type: hotel, summary or error. To watch one stay, pass fixed checkIn and checkOut and run it again later: priceChange is then the difference from the last run, negative when the hotel got cheaper.

**Something broke or looks wrong?** Open an issue on this Actor's Issues tab and I'll look at it. **Found it useful?** A short review on the Store page helps other people find it.