Google Hotels Scraper
Pricing
from $2.00 / 1,000 hotel results
Google Hotels Scraper
Hotel lists for any destination and per-site prices for the hotels you pick, from Google Hotels. Check many dates at once and see how each price moved since the last run.
Pricing
from $2.00 / 1,000 hotel results
Rating
0.0
(0)
Developer
Lyklo
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
7 days ago
Last modified
Categories
Share
Get hotel prices from Google Hotels in two ways:
- Destinations: type a place such as Kyoto or hotels near Times Square and get the hotels Google lists there, with the lowest price, stars, rating and location.
- Hotels you pick: give the hotels you care about and get every booking site's price for them (Booking.com, Expedia, Agoda, the hotel's own site and more), for as many check-in dates as you need.
Turn on Compare with the last run and schedule it, and each result also says whether the price went down, went up, sold out or came back since the previous run.
The data comes from the public Google Hotels pages at google.com/travel. This is an independent tool. It is not made, endorsed or sponsored by Google.
Who it's for
- Hotel revenue managers who check their competitors' rates every morning. List your own hotel and 5 to 15 competitors, check the next 30 check-in dates, and schedule a daily run. You see each competitor's price per date, which site sells it cheapest, and what moved overnight, for a small part of what rate-shopping software costs.
- Travel and data teams who need hotel lists for a city with prices, ratings and coordinates: price comparison, vacation-rental pricing, market research, or an AI agent that answers travel questions.
How to use it
- Put places under Destinations, or hotels under Hotels, or both. A hotel can be a Google Hotels link, a hotel ID from an earlier run, or its name.
- Pick the check-in date (or leave it empty for 14 days after each run), the number of nights, and how many check-in dates to check in a row.
- Run it. To watch prices, turn on Compare with the last run, save the input as a task, and give it a schedule in Apify. Use a different Watch name for each task.
- Send the results where you work with Apify's integrations: a Google Sheet, Slack, a webhook, or the API.
Example: price two hotels for each night of December, comparing with yesterday.
{"hotels": ["Hotel Granvia Kyoto", "https://www.google.com/travel/hotels/entity/ChkI8oXIy_mdvvdPGg0vZy8xMWg4MWhkd3FjEAE"],"checkInDate": "2026-12-01","checkInDays": 31,"adults": 2,"currency": "USD","trackChanges": true,"watchName": "kyoto-station"}
What you get
One row per hotel and check-in date.
| Field | What it is |
|---|---|
name, hotelId, url | The hotel, its Google Hotels ID (reuse it under Hotels) and its Google Hotels page |
checkIn, checkOut, nights, adults | The stay the price is for |
pricePerNight, totalPrice, currency | Google's lowest price, taxes and fees included, and the total for the stay |
totalPriceBreakdown | The total split into base price, taxes and fees |
offers | Each booking site's price per night and for the stay, whether it is the hotel's own site, free cancellation and its deadline, and notes such as member rates. Cheapest first |
lowestOffer | The cheapest site, for quick filtering |
change, previousPricePerNight, priceChange, priceChangePercent | With Compare with the last run: down, up, same, soldOut, available (back after being sold out) or new |
hotelClass, rating, reviewCount, ratingBreakdown | Stars, guest rating, number of reviews, and reviews per star |
latitude, longitude, address, phone, website | Where it is and how to reach it. Full address and phone come with booking-site prices |
description, checkInTime, checkOutTime, thumbnail | Google's short description, check-in and check-out times, one photo |
query, rank, source | Which destination or hotel input the row came from, and its place in the destination list |
offers, lowestOffer, address and phone are on rows for the hotels you listed, and on destination rows when Add prices from each booking site is on.
Pricing
You pay per result, and comparing with the last run is free.
| Event | Price |
|---|---|
| Run start | $0.003 per run (with the default memory) |
| Hotel result: one hotel for one check-in date | $2.00 per 1,000 |
| Booking-site prices added to a result | $3.00 per 1,000 results that have at least one price |
Some examples:
- 100 hotels in a city for one date: $0.20.
- Your hotel and 9 competitors, 30 check-in dates, every day: 300 results with booking-site prices a day, $1.50 a day or about $45 a month.
Set a maximum cost per run in Apify if you want a hard limit. The run stops when it is reached, and only the results you were charged for are saved.
Good to know
- Currency. Booking-site prices come in the currency you choose. Destination lists without booking-site prices come in US dollars. Every row has a
currencyfield. - Guests. Booking-site prices use the number of adults you set. Destination lists without booking-site prices are for Google's default of 2 guests. Children are not supported yet.
- Destination lists change order. Google reorders hotels between pages and between runs, so a destination list is a snapshot, and a hotel can show up as
newon the next run. To track prices, list the hotels under Hotels. - Dates. Google sometimes cannot price a date (sold out, or too far ahead). Such hotels show a
nullprice or are skipped, and the run log says so. - Failed runs. If errors keep the run from returning any result (Google refusing requests, or answers in a format the scraper cannot read), the run fails instead of finishing empty, so a scheduled task shows the problem. A hotel ID that Google does not know only adds a warning.
- Watching. The previous prices for each watch name are kept in a key-value store in your Apify account named
google-hotels-scraper-<watch name>. Two runs with the same watch name cannot run at once; the second one stops with a message. - Booking links. Rows link to the hotel's Google Hotels page rather than to booking sites, because Google's booking links are ad clicks.