Google Hotels Price Tracker — Hotel Prices by City & Dates
Pricing
from $1.60 / 1,000 hotels
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
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 hours ago
Last modified
Categories
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").
| Field | What it is |
|---|---|
search, resolvedPlace | the city you gave, and the place Google understood it as |
rank | the 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, hotelClass | the hotel, its type as Google files it (hotel, hostel, guest house, resort hotel…) and its stars (1–5) |
rating, reviewCount | Google guest rating (out of 5) and number of reviews |
pricePerNight, totalPrice, currency | the price Google shows for your dates: total for the whole stay ÷ nights, and the total, in the currency Google answered in |
priceInsight | Google's own label when it shows one, e.g. "52% less than usual" |
checkIn, checkOut, nights, adults | the stay that was priced |
lowestPriceSite, lowestPriceSitePerNight, priceBySite | the 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 |
amenities | what Google lists on the result: Free Wi-Fi, Pool, Free breakfast… |
address, latitude, longitude, googleHotelUrl | where it is, and a link that opens the hotel on Google Hotels with your dates and guests |
previousPrice, priceChange, priceChangePercent | the price when this hotel was last seen, and the difference (negative = cheaper). null the first time a hotel is seen |
previousCheckIn, previousObservedAt, stayMoved | which stay that earlier price was for, when it was read, and whether the stay dates are different now (see Notes) |
observedAt | when 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 —
priceBySiteshows 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, orcheckIn+nights) when you want to track one stay over time. citycan 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.currencyis any of the 72 Google offers.maxHotelsPerSearchis 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.
totalPriceis Google's total for the stay andpricePerNightis 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
rankis 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;
stayMovedis thentrueandpreviousCheckInshows 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):
propertyTypetells you, so you can filter them out. - Headline price and site prices are read a moment apart.
pricePerNightcomes from Google's results list andpriceBySitefrom 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 comparelowestPriceSitePerNightwithpricePerNightwhen the exact figure matters. - Fields that are only filled in some cases.
hotelClassis 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).priceInsightappears only when Google shows a "less than usual"-type label.lowestPriceSite,lowestPriceSitePerNight,priceBySiteandaddressneed 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, andaddressis often empty for vacation rentals.amenitieslists the amenities Google puts on the result card, not every amenity the hotel has.previousPrice,priceChangeandpriceChangePercentarenullfor 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.