Google Hotels Scraper - Hotel Price Tracker & Comparison
Pricing
from $0.50 / 1,000 results
Google Hotels Scraper - Hotel Price Tracker & Comparison
Hotel and vacation-rental prices from Google Hotels for any place, dates and guests: nightly prices before and after taxes, deals, ratings, amenities and location, with Google's own filters. Compare every booking site's price and room rates, price specific hotels, and track price drops between runs.
Pricing
from $0.50 / 1,000 results
Rating
0.0
(0)
Developer
Akhil rajesh
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Get hotel prices from Google Hotels for any place and dates: the nightly price before and after taxes, Google's deal badges ("19% less than usual"), ratings and reviews, star class, amenities, location and photos, for hotels and vacation rentals alike. Compare every booking site's price and room rate for the stay, price specific hotels by name or link, and get price-drop alerts: scheduled runs that return only the prices that changed.
- Any place, any dates. A city, a neighbourhood, or any Google Hotels search such as "hotels near Times Square, New York" or "vacation rentals in Banff". Dates as
2026-11-05or "2 weeks" from today, any number of nights, adults and children. - Specific hotels. Paste Google Hotels links, or write names such as "Fairmont Royal York Toronto". A name Google doesn't recognise is reported as not found, never swapped for another hotel.
- Prices in your currency. 35 currencies, whatever the place: EUR for Paris, JPY for Tokyo, or USD for all of them.
- Google's own filters. Price range, star class, guest rating, 20 amenities, property type, free cancellation, special offers, eco-certified, and Google's four sort orders.
- Every booking site's price (hotel price comparison). 13 to 27 sites per hotel in our tests, cheapest first, each with the nightly and total price before and after taxes, free cancellation and its deadline, the room and a booking link.
- Every room rate. Dozens of rates per hotel across the sites (7 to 108 in our tests), each with the room name, price, whether breakfast is included, and free cancellation. Plus review quotes, the hotel's full amenity list by category, the languages its staff speak, its address and phone.
- Price-drop alerts (hotel price tracker). Turn on Only price changes and schedule the run: each run returns just the price drops and rises since the last one, with the previous price and the change. Unchanged hotels aren't returned or charged.
- Many check-in dates in one run. Up to 60 check-in dates in a row, to see how prices move across a month.
- Deep lists. 18 properties a page, as many pages as you ask for, with no property twice.
No login, no API key and no cookie setup. Runs are quick: 20 properties take about 10 to 20 seconds, 100 about a minute, and a hotel with every booking site's price about 3 seconds.
What you get for each property
| Field | Example |
|---|---|
name, type, hotelClass | Hyatt Regency Paris Étoile, hotel, 4 |
pricePerNight, pricePerNightWithTaxes, currency | 192.05, 228, EUR (the lowest price Google shows for the stay) |
deal, dealPercentBelowUsual | Deal, 19 |
rating, reviewCount, ratingHistogram | 4.4, 6432, and the count of each star rating |
reviewHighlights | what reviews mention and how: Service, Location, Cleanliness... with positive and negative counts |
checkIn, checkOut, nights | 2026-11-05, 2026-11-08, 3 |
amenities | Free Wi-Fi, Pool, Fitness center, Bar, Restaurant... |
propertyDetails | rentals: Entire house, Sleeps 6, 2 bedrooms, 2 bathrooms |
latitude, longitude, nearbyPlaces | 48.88, 2.28, and nearby attractions, transit and airports with walking, taxi and transit times |
checkInTime, checkOutTime, description, images | 3:00 PM, 12:00 PM, a one-line description, photo links |
officialWebsite, googleHotelsUrl, googleMapsUrl | the hotel's site, its Google Hotels page for your dates, its map |
position, matchesFilters | its place in Google's list; false for the near matches Google adds outside your filters |
searchLocation, googlePlace | the place you asked for, and where Google says it searched (they differ when Google reads a landmark as somewhere else) |
With Booking-site prices on, and for every hotel under Specific hotels, each property also gets:
| Field | Example |
|---|---|
offers | every booking site's price, cheapest first (below) |
offersCount, cheapestSite | 23, Vio.com |
rooms | every room rate the sites list, cheapest first (below) |
reviewSnippets | short review quotes Google shows, such as "Great location and tasty breakfast" |
amenitiesByCategory, amenities | Internet: Free Wi-Fi...; Pools: Indoor pool, Hot tub; Parking: Parking ($), EV charger... (45 amenities for the Hyatt above) |
languagesSpoken | Arabic, English, French, Japanese... |
address, phone | 3 Pl. du Général Kœnig, 75017 Paris, France; +33 1 40 68 12 34 |
| Offer field | Example |
|---|---|
site, isOfficialSite | Expedia.ca, false |
pricePerNight, pricePerNightWithTaxes | 180.48, 216.19 |
totalPrice, totalPriceWithTaxes | 541.44, 648.56 (the whole stay) |
freeCancellation, freeCancellationUntil | true, 2026-10-30 |
roomName | Room, 2 Double Beds, Non Smoking (the site's cheapest room, where Google lists rooms) |
url | Google's link to book with that site |
| Room field | Example |
|---|---|
site, roomName | Hotels.com, Deluxe Room, 1 King Bed |
pricePerNight, pricePerNightWithTaxes, totalPrice, totalPriceWithTaxes | 304.35, 351.69, 913.04, 1055.06 |
breakfastIncluded | true, false, or null where the site doesn't say |
freeCancellation, freeCancellationUntil | true, 2026-11-04 |
features, url | Nonsmoking...; the booking link |
With Only price changes on, each returned property also carries changeType (new, priceDrop, priceRise, priceAvailable or priceUnavailable), previousPrice, priceChange and priceChangePercent.
How to use it
Enter one or more places, a check-in date and the nights, then press Start.
Hotels in a city for your dates
{ "locations": ["Paris"], "checkIn": "2026-11-05", "nights": 3, "adults": 2, "currency": "EUR", "maxResultsPerSearch": 50 }
A bare place is searched as "hotels in Paris". Write your own Google Hotels search to get something else: hostels in Berlin, vacation rentals in Banff, hotels near Times Square, New York. Name the city with a landmark: Google reads "hotels near the Colosseum" on its own as the Las Vegas venue and searches the whole United States, and "hotels near Times Square" alone finds nothing. Each row's googlePlace says where Google searched, and the run's status message points out a search Google read as somewhere else. Children go in Children's ages, one age per child.
With Google's filters
{ "locations": ["Miami Beach"], "hotelClass": ["4", "5"], "minRating": "4.5", "amenities": ["pool", "beachAccess"], "maxPrice": 400, "sortBy": "lowestPrice" }
Prices in the filters are per night, in your currency. When too few properties match, Google fills its list with near matches outside your filters; they are left out unless you turn on Include near matches, and then come with matchesFilters: false. "Lowest price" is Google's own order: close to the nightly price, though not strictly.
Hotel price comparison across booking sites
{ "locations": ["Toronto"], "checkIn": "2 weeks", "nights": 3, "maxResultsPerSearch": 10, "includeOffers": true }
Each property then comes with every booking site's price and room rate for the stay, cheapest first. This reads one more page per property, so it is charged separately and takes a little longer.
Specific hotels
{ "hotels": ["Fairmont Royal York Toronto", "https://www.google.com/travel/hotels/entity/ChcIpP7F8OHV3Y5FGgsvZy8xdGdzMDdichAB"], "checkIn": "2026-12-18", "nights": 2, "currency": "CAD" }
One hotel per line: its Google Hotels link, the id in that link, or its name with the city. Each comes with everything Booking-site prices adds. Google resolves a name it knows to that hotel; a name it doesn't know is reported as not found rather than replaced by the first hotel in town. When Specific hotels is filled, Locations is ignored.
Price-drop alerts on a schedule
{ "hotels": ["Fairmont Royal York Toronto", "Chelsea Hotel Toronto"], "checkIn": "2026-12-18", "nights": 2, "onlyChanges": true, "minPriceChangePercent": 3 }
Save this as a task and schedule it daily. The first run returns every stay, marked new, as the baseline. After that, each run returns only the stays whose price moved by at least Minimum price change (1% by default), marked priceDrop or priceRise with previousPrice, priceChange and priceChangePercent, plus stays that became priced again or stopped being priced. Unchanged stays aren't returned or charged. Connect the task to email, Slack or a webhook in its Integrations tab to receive each run's changes as a price alert.
It works for city searches too, for example the 100 best-rated hotels in a city on your dates: Max results per search then sets how many of Google's properties are watched. Google reshuffles its list from run to run, so a property that has only moved into the first 100 joins the watch list quietly; turn on Also return properties new to the list to get those too. Use a fixed check-in date, or several check-in dates, so that each run prices the same stays. The prices seen are kept in a key-value store named after the watch list; name it yourself under History name to share one history between tasks. Tasks with different guests, currency, stay length or filters keep their prices apart inside it, and tasks that run at the same time don't overwrite each other's.
Many check-in dates in one run
{ "locations": ["New York"], "checkIn": "2026-12-01", "days": 30, "nights": 1, "maxResultsPerSearch": 20 }
Each check-in date is its own search, so this returns up to 20 properties for each of the 30 nights of December. Compare pricePerNight by checkIn to see when prices peak.
Use it as a hotel prices API or from AI agents
Call it from your own code like any Apify Actor. This call waits for the run and returns the rows directly:
curl -X POST "https://api.apify.com/v2/acts/akhil_rajesh~google-hotels-scraper/run-sync-get-dataset-items" \-H "Authorization: Bearer YOUR_API_TOKEN" \-H "Content-Type: application/json" \-d '{ "locations": ["Lisbon"], "checkIn": "3 weeks", "nights": 2, "currency": "EUR", "maxResultsPerSearch": 20 }'
Or from Python:
from apify_client import ApifyClient # pip install apify-clientclient = ApifyClient("YOUR_API_TOKEN")run = client.actor("akhil_rajesh/google-hotels-scraper").call(run_input={"locations": ["Lisbon", "Porto"], "checkIn": "3 weeks", "nights": 2, "currency": "EUR", "maxResultsPerSearch": 20,})for h in client.dataset(run.default_dataset_id).iterate_items():print(h["searchLocation"], h["name"], h["pricePerNight"], h["pricePerNightWithTaxes"], h["rating"], h["deal"])
Through the Apify MCP server, assistants such as Claude, ChatGPT and Cursor can run it as a tool. Add https://mcp.apify.com?tools=akhil_rajesh/google-hotels-scraper as an MCP server, then ask in plain words, for example "find 4-star hotels in Rome under 200 euros for the first weekend of December, with free cancellation" or "which booking site is cheapest for the Chelsea Hotel in Toronto next Friday, and does its rate include breakfast?".
Sample output
A hotel with booking-site prices (lists shortened):
{"name": "Hyatt Regency Paris Étoile","type": "hotel","hotelClass": 4,"rating": 4.4,"reviewCount": 6432,"pricePerNight": 192.05,"pricePerNightWithTaxes": 228,"currency": "EUR","checkIn": "2026-11-05","checkOut": "2026-11-08","nights": 3,"latitude": 48.8805064,"longitude": 2.284538,"amenities": ["Free Wi-Fi", "Wi-Fi in public areas", "Front desk (24 hour)", "Concierge", "Free fitness center", "Pet-friendly ($)"],"amenitiesByCategory": {"Internet": ["Free Wi-Fi", "Wi-Fi in public areas", "Public internet workstation"], "Pets": ["Pet-friendly ($)", "Dogs allowed", "Cats allowed"]},"languagesSpoken": ["Arabic", "English", "French", "Japanese", "Korean", "Mandarin", "Portuguese", "Spanish"],"checkInTime": "3:00 PM","checkOutTime": "12:00 PM","address": "3 Pl. du Général Kœnig, 75017 Paris, France","phone": "+33 1 40 68 12 34","offersCount": 23,"cheapestSite": "Vio.com","offers": [{"site": "Vio.com", "isOfficialSite": false, "pricePerNight": 192.05, "pricePerNightWithTaxes": 227.5,"totalPrice": 576.14, "totalPriceWithTaxes": 682.51, "freeCancellation": null, "roomName": "Standard Room","url": "https://www.google.com/travel/lodging/clk?..."}],"rooms": [{"site": "Hotels.com", "roomName": "Deluxe Room, 1 King Bed", "pricePerNight": 304.35, "pricePerNightWithTaxes": 351.69,"totalPrice": 913.04, "totalPriceWithTaxes": 1055.06, "breakfastIncluded": true, "freeCancellation": true,"freeCancellationUntil": "2026-11-04", "url": "https://www.google.com/aclk?..."}],"googleHotelsUrl": "https://www.google.com/travel/hotels/entity/ChcIpP7F8OHV3Y5FGgsvZy8xdGdzMDdichAB?...","googleMapsUrl": "https://www.google.com/maps?cid=11087988900678711622"}
A change returned by a run with Only price changes (other fields as above). This one is real: an 18-cent move between two Toronto runs a minute apart, the kind of jitter the default 1% Minimum price change leaves out:
{ "name": "The Clarence Park", "changeType": "priceDrop", "previousPrice": 120.87, "pricePerNight": 120.69, "priceChange": -0.18, "priceChangePercent": -0.1, "currency": "CAD", "checkIn": "2026-10-19", "searchLocation": "Toronto" }
How much does it cost to scrape Google Hotels?
This Actor uses pay-per-event pricing, and platform usage is included, so there's nothing else to pay. You pay for each property returned, plus $0.001 each time a run starts. A property that comes with every booking site's price and room rate (Booking-site prices on, or any hotel under Specific hotels) costs $0.001 more, whatever your plan. The price per property depends on your Apify plan:
| Your plan | Per 1,000 properties | Per 1,000 with booking-site prices |
|---|---|---|
| Free | $0.80 | $1.80 |
| Starter | $0.75 | $1.75 |
| Scale | $0.60 | $1.60 |
| Business and above | $0.50 | $1.50 |
| Run | Properties | On Free | On Business |
|---|---|---|---|
| 20 hotels in Toronto (the default input) | 20 | $0.017 | $0.011 |
| 10 hotels with every booking site's price | 10 | $0.019 | $0.016 |
| 5 specific hotels | 5 | $0.010 | $0.009 |
| 20 hotels for each of 30 check-in dates | 600 | $0.481 | $0.301 |
| A daily price check of 100 hotels where 8 prices moved | 8 | $0.007 | $0.005 |
Properties your filters leave out, near matches you didn't ask for, and unchanged properties when Only price changes is on are not charged. When a hotel's page doesn't load, the property still comes with its list price and isn't charged the booking-site price. To cap spending, set Max results per search or a maximum cost per run in the run options; the Actor stops cleanly at the limit.
Input
| Field | Default | What it does |
|---|---|---|
locations | Toronto | Places or Google Hotels searches, one per line; up to 100 |
hotels | none | Specific hotels instead: Google Hotels links, ids, or names with the city; up to 100 |
checkIn | 14 days from today | YYYY-MM-DD, or a time from today such as 2 weeks (UTC) |
nights | 1 | 1 to 30; or give checkOut instead |
adults, childrenAges | 2, none | Up to 12 adults; one age (0-17) per child |
currency | USD | One of 35 currencies |
maxResultsPerSearch | 20 | Most properties per place and check-in date, 1 to 1,000 |
sortBy | relevance | relevance, lowestPrice, highestRating or mostReviewed |
minPrice, maxPrice | none | Per night, in your currency |
hotelClass | all | Any of 2, 3, 4, 5 |
minRating | any | 3.5, 4.0 or 4.5 |
amenities | none | Any of freeWifi, freeBreakfast, freeParking, parking, pool, indoorPool, outdoorPool, hotTub, fitnessCenter, spa, restaurant, bar, roomService, airConditioned, kidFriendly, petFriendly, wheelchairAccessible, evCharger, beachAccess, allInclusive |
propertyTypes | all | Any of bedAndBreakfasts, spaHotels, resorts, motels, inns, hostels, boutiqueHotels, beachHotels, other |
freeCancellation, specialOffers, ecoCertified | off | Google's offer filters |
includeNearMatches | off | Also return Google's near matches outside your filters |
includeOffers | off | Every booking site's price and room rate, review quotes, all amenities, address and phone for each property |
days | 1 | Search this many check-in dates in a row, up to 60 |
onlyChanges | off | Return only price changes since the last run of the same watch list |
minPriceChangePercent | 1 | With onlyChanges: ignore smaller moves; 0 reports every move |
reportNewProperties | off | With onlyChanges: also return properties new to a city search's list |
historyName | automatic | With onlyChanges: the key-value store that keeps the prices seen |
country, language | us, en | Google's country and language for the pages; prices stay in your currency. The amenities and deal badges on search results are read from English pages only |
proxy | Apify Proxy | Apify's standard datacenter proxy, or your own proxies. Residential and other per-GB proxies aren't available: the result price covers datacenter traffic only |
FAQ
Are the prices per night or for the whole stay? The main prices are per night, as Google shows them: before taxes and fees, and with them. Each booking site and room rate also gives its total for the whole stay, before and after taxes.
Why do some properties have the same price with and without taxes? Vacation rentals and some sites quote a price that already includes fees, so the two are the same.
Why did a search say it "didn't load" when Google Hotels works in my browser? Google now and then answers one session with an empty page, or with a page that shows every price with taxes already in and no price before taxes (about one session in seven on Apify's servers). The Actor asks again in a new session, which almost always gets the usual page. When all three tries come back that way, it reports the search as not loaded rather than returning prices that don't compare with the rest, and you aren't charged for it. Run it again later.
Why is a hotel missing from my list? Google shows what it ranks for your search, dates and guests, and a property that isn't bookable for those dates drops out. Raise Max results per search, loosen the filters, search the neighbourhood, or name the hotel under Specific hotels.
How does price tracking know the last price? Each watch list (the places or hotels, guests, currency, stay length and filters) keeps the prices it has seen in a key-value store in your account, and each run compares with it. A stay's history ends once its check-in date has passed. A run that is restarted on another server carries on without returning or charging a property twice.
Why did a landmark search return hotels somewhere else? Google Hotels reads some landmark names on their own as other places: "hotels near the Colosseum" came back as the whole United States, with Las Vegas hotels, and "hotels near Times Square" alone found nothing. Add the city ("hotels near the Colosseum, Rome"). Every row's googlePlace says where Google searched, and the run's status message points out a search Google read as somewhere else.
Can I use another language? Yes, with Language (hl): names and texts come translated and prices are read correctly in any language. The amenities and deal badges on the search results are read from English pages only; turn on Booking-site prices to get each hotel's full amenity list in any language.
Why does "Lowest price" not come out strictly in order? It is Google's own order, which is close to the nightly price but not exact. position keeps Google's order; sort the data yourself by pricePerNight if you need a strict order.
How far ahead can I search? Up to about 11 months, as far as Google Hotels prices stays.
Does it need a login or an API key? No. It reads the Google Hotels pages anyone can open.
Can I get full reviews or room photos? Ratings, the star histogram, review highlights and the review quotes Google shows are included. Full review texts and photo galleries aren't; ask in the Issues tab if you need them.
Other Actors by this developer
- Tennis API - Live Scores, Stats & Odds (ATP, WTA, ITF): live scores, results, match statistics, point-by-point and bookmaker odds for ATP, WTA, Challenger and ITF
- Canada Price Comparison - Amazon, Best Buy & Walmart: live price comparison across major Canadian retailers
- AutoTrader Canada Scraper - Used Cars & Prices: Canadian vehicle listings with price, mileage, trim and dealer
- Indeed Jobs Scraper - Canada, US, UK, Australia & More: job listings from Indeed in eight countries
- SEEK, JobStreet & JobsDB Jobs Scraper: jobs in Australia, New Zealand and six Asian markets
- Wellfound (AngelList) Jobs Scraper - Salary & Equity: startup jobs with salary and equity ranges
- Job Bank Scraper - Canada Jobs, Salary & NOC Codes: Canada's Job Bank listings with wages and NOC codes
Disclaimer
This Actor is an independent tool. It is not affiliated with, endorsed by or sponsored by Google or any booking site. It reads publicly available pages at a modest pace. Use the data in line with the sources' terms and the laws that apply to you.