Google Hotels Scraper - Hotel Price Tracker & Comparison avatar

Google Hotels Scraper - Hotel Price Tracker & Comparison

Pricing

from $0.50 / 1,000 results

Go to Apify Store
Google Hotels Scraper - Hotel Price Tracker & Comparison

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

Akhil rajesh

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

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-05 or "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

FieldExample
name, type, hotelClassHyatt Regency Paris Étoile, hotel, 4
pricePerNight, pricePerNightWithTaxes, currency192.05, 228, EUR (the lowest price Google shows for the stay)
deal, dealPercentBelowUsualDeal, 19
rating, reviewCount, ratingHistogram4.4, 6432, and the count of each star rating
reviewHighlightswhat reviews mention and how: Service, Location, Cleanliness... with positive and negative counts
checkIn, checkOut, nights2026-11-05, 2026-11-08, 3
amenitiesFree Wi-Fi, Pool, Fitness center, Bar, Restaurant...
propertyDetailsrentals: Entire house, Sleeps 6, 2 bedrooms, 2 bathrooms
latitude, longitude, nearbyPlaces48.88, 2.28, and nearby attractions, transit and airports with walking, taxi and transit times
checkInTime, checkOutTime, description, images3:00 PM, 12:00 PM, a one-line description, photo links
officialWebsite, googleHotelsUrl, googleMapsUrlthe hotel's site, its Google Hotels page for your dates, its map
position, matchesFiltersits place in Google's list; false for the near matches Google adds outside your filters
searchLocation, googlePlacethe 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:

FieldExample
offersevery booking site's price, cheapest first (below)
offersCount, cheapestSite23, Vio.com
roomsevery room rate the sites list, cheapest first (below)
reviewSnippetsshort review quotes Google shows, such as "Great location and tasty breakfast"
amenitiesByCategory, amenitiesInternet: Free Wi-Fi...; Pools: Indoor pool, Hot tub; Parking: Parking ($), EV charger... (45 amenities for the Hyatt above)
languagesSpokenArabic, English, French, Japanese...
address, phone3 Pl. du Général Kœnig, 75017 Paris, France; +33 1 40 68 12 34
Offer fieldExample
site, isOfficialSiteExpedia.ca, false
pricePerNight, pricePerNightWithTaxes180.48, 216.19
totalPrice, totalPriceWithTaxes541.44, 648.56 (the whole stay)
freeCancellation, freeCancellationUntiltrue, 2026-10-30
roomNameRoom, 2 Double Beds, Non Smoking (the site's cheapest room, where Google lists rooms)
urlGoogle's link to book with that site
Room fieldExample
site, roomNameHotels.com, Deluxe Room, 1 King Bed
pricePerNight, pricePerNightWithTaxes, totalPrice, totalPriceWithTaxes304.35, 351.69, 913.04, 1055.06
breakfastIncludedtrue, false, or null where the site doesn't say
freeCancellation, freeCancellationUntiltrue, 2026-11-04
features, urlNonsmoking...; 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-client
client = 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 planPer 1,000 propertiesPer 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
RunPropertiesOn FreeOn Business
20 hotels in Toronto (the default input)20$0.017$0.011
10 hotels with every booking site's price10$0.019$0.016
5 specific hotels5$0.010$0.009
20 hotels for each of 30 check-in dates600$0.481$0.301
A daily price check of 100 hotels where 8 prices moved8$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

FieldDefaultWhat it does
locationsTorontoPlaces or Google Hotels searches, one per line; up to 100
hotelsnoneSpecific hotels instead: Google Hotels links, ids, or names with the city; up to 100
checkIn14 days from todayYYYY-MM-DD, or a time from today such as 2 weeks (UTC)
nights11 to 30; or give checkOut instead
adults, childrenAges2, noneUp to 12 adults; one age (0-17) per child
currencyUSDOne of 35 currencies
maxResultsPerSearch20Most properties per place and check-in date, 1 to 1,000
sortByrelevancerelevance, lowestPrice, highestRating or mostReviewed
minPrice, maxPricenonePer night, in your currency
hotelClassallAny of 2, 3, 4, 5
minRatingany3.5, 4.0 or 4.5
amenitiesnoneAny of freeWifi, freeBreakfast, freeParking, parking, pool, indoorPool, outdoorPool, hotTub, fitnessCenter, spa, restaurant, bar, roomService, airConditioned, kidFriendly, petFriendly, wheelchairAccessible, evCharger, beachAccess, allInclusive
propertyTypesallAny of bedAndBreakfasts, spaHotels, resorts, motels, inns, hostels, boutiqueHotels, beachHotels, other
freeCancellation, specialOffers, ecoCertifiedoffGoogle's offer filters
includeNearMatchesoffAlso return Google's near matches outside your filters
includeOffersoffEvery booking site's price and room rate, review quotes, all amenities, address and phone for each property
days1Search this many check-in dates in a row, up to 60
onlyChangesoffReturn only price changes since the last run of the same watch list
minPriceChangePercent1With onlyChanges: ignore smaller moves; 0 reports every move
reportNewPropertiesoffWith onlyChanges: also return properties new to a city search's list
historyNameautomaticWith onlyChanges: the key-value store that keeps the prices seen
country, languageus, enGoogle'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
proxyApify ProxyApify'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

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.