Google Hotels Scraper - Prices, Booking Sites & Reviews avatar

Google Hotels Scraper - Prices, Booking Sites & Reviews

Pricing

from $1.50 / 1,000 hotels

Go to Apify Store
Google Hotels Scraper - Prices, Booking Sites & Reviews

Google Hotels Scraper - Prices, Booking Sites & Reviews

Google Hotels API alternative: hotels in any city with live prices, every booking site's rate (Booking.com, Expedia, Agoda, official site) across a date range, room rates, free-cancellation deadlines and guest reviews. Rate parity and hotel price monitoring. From $1.50 per 1,000.

Pricing

from $1.50 / 1,000 hotels

Rating

0.0

(0)

Developer

Alom Dev

Alom Dev

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 hours ago

Last modified

Share

Google Hotels Scraper & Price Tracker

Scrape Google Hotels for any city, area or landmark: hotel names, live prices for your dates, star class, guest rating, review count, rating breakdown, what guests say about cleanliness / location / service, address, phone, amenities, photos, coordinates and nearby places. Or track specific hotels across a date range and get every booking site's price (Booking.com, Expedia, Hotels.com, Agoda, Trip.com, the hotel's official website and 20+ more) with free-cancellation deadlines and every room type and rate, for rate parity checks and price calendars. And get guest reviews (Google, Tripadvisor and more) with the hotel's responses.

✅ Reliable by design. Pure HTTP against Google's own data, no browser. Failed requests are retried on a fresh IP, bad input is caught before the run starts, and a run that could not deliver says so ("partial" / "failed") instead of pretending to succeed with nothing. ✅ Correct dates, or no data. Google silently swaps past or too-long stays for other dates. This Actor checks every answer and never delivers prices for dates you did not ask for. ✅ Every booking site, every date. One row per hotel x check-in date x booking site, with the official-site flag, the cheapest offer marked, and booking links. ✅ Price monitoring built in. Schedule it and get only the prices that changed since the last run, with the previous price. Unchanged prices are not charged.

What can you use Google Hotels data for?

  • Revenue management & rate shopping: compare your hotel's rates with your competitive set, date by date.
  • OTA rate parity: see whether Booking.com, Expedia or Agoda undercut your official website.
  • Price calendars: find the cheapest check-in dates for a trip or an event over the next weeks.
  • Market research: map every hotel in a city with its price level, stars, rating and amenities.
  • Travel apps, AI agents & dashboards: feed clean JSON to your app, Google Sheets, BI tool or LLM workflow.

Three modes

  • Search (default): what you get when you type "hotels in Paris" into Google Hotels, for your dates and guests. Filters: price range, guest rating, star class, amenities, free cancellation, special offers (deals), sort order. Optionally add every booking site's price to each hotel (includeProviderPrices).
  • Hotel prices (price calendar): give hotels by Google Hotels link, entity token or name, and a date range. You get one row per hotel x check-in date x booking site. A free SUMMARY record lists every hotel/date with its status: offers found, no offers (sold out), or failed.
  • Reviews: give hotels (link, token or name) and get their guest reviews, newest / most relevant / highest / lowest first. You can also add reviews to the other two modes with includeReviews.

What data does Google Hotels Scraper extract?

FieldWhat it is
name, propertyTypeHotel name; hotel or vacation_rental
hotelClass, rating, reviewCountStar class (1-5), guest rating (1-5), number of reviews
pricePerNight, totalPriceLead price for your dates, per night and for the whole stay
pricePerNightWithTaxes, totalPriceWithTaxesSame including taxes & fees (see Market below)
dealLabele.g. "22% less than usual"
address, phone, website, latitude, longitudeLocation and contacts
amenities, amenitiesUnavailableWi-Fi, pool, parking...; and what the hotel does NOT have
images, description, descriptionLongPhotos (1024 px, maxImages, full gallery with booking-site prices); Google's summary and long description
ratingBreakdownShare and number of 5, 4, 3, 2 and 1-star reviews
reviewAspectsWhat reviews say per topic (Cleanliness, Location, Service, Breakfast...): mentions, positive, negative, sentiment
externalRatingsRatings on Tripadvisor, Trip.com, the chain's site... (with booking-site prices)
googleMapsUrlThe hotel on Google Maps
checkInTime, checkOutTime, nearbyPlacesHouse times; attractions, transit and airports with travel times
entityToken, googleHotelsUrl, googlePlaceIdStable Google ids and a link to the hotel on Google Hotels
offersWith includeProviderPrices: every booking site's price, link and free-cancellation terms (+ roomRates)
position, searchQuery, checkIn, checkOut, nights, adults, childrenAges, currency, marketContext

Price rows (hotel prices mode)

FieldWhat it is
hotelName, entityToken, googleHotelsUrlThe hotel
checkIn, checkOut, nights, adults, childrenAges, currency, marketThe stay that was priced
provider, isOfficialSite, rankBooking site, whether it's the hotel's own site, position in Google's list
pricePerNight, totalPrice (+ ...WithTaxes)That site's price
isLowestPrice, hotelLowestPricePerNightCheapest offer for this hotel and date
roomName, bookingUrlRoom type (for featured offers) and the booking link (a Google redirect)
freeCancellation, freeCancellationUntil(Date)Refundable or not, as Google states it for that site, and until when (null = Google does not say)
roomRatesWith includeRoomRates: every room type x rate of Google's featured sites - price, free cancellation + deadline, breakfast included, max guests, beds
previousPricePerNightIn monitoring mode: the price in the previous run

Review rows

FieldWhat it is
hotelName, entityToken, hotelRating, hotelReviewCountThe hotel
sourceGoogle, or the site Google shows the review from (Tripadvisor, TrustYou, Trip.com...)
rating, ratingScale, textThe review (some Google reviews are a rating without text)
publishedRelative, stayMonth"3 weeks ago" as Google shows it; month of the stay
tripType, travelGroupvacation / business; family / couple / friends / solo (Google reviews that state it)
subRatingsRooms, service, location scores (Google reviews)
ownerResponse, ownerResponseRelativeThe hotel's reply
reviewerName, highlights, photos, reviewUrlReviewer, tags like "Quiet" / "Great value", review photos, link to the original
{
"type": "price", "hotelName": "Novotel Paris Les Halles", "checkIn": "2026-11-10", "checkOut": "2026-11-12",
"provider": "Booking.com", "isOfficialSite": false, "isLowestPrice": false, "rank": 7,
"pricePerNight": 269, "pricePerNightWithTaxes": 315, "totalPrice": 539, "totalPriceWithTaxes": 631,
"currency": "USD", "market": "US", "freeCancellation": false, "bookingUrl": "https://www.google.com/travel/lodging/clk?...",
"roomRates": [{ "roomName": "Superior Room with Two Queen Beds", "pricePerNight": 613, "pricePerNightWithTaxes": 693,
"freeCancellation": true, "freeCancellationUntil": "Nov 9", "breakfastIncluded": true, "maxGuests": 4, "features": ["2 queen beds"] }]
}

Why this Google Hotels scraper?

This ActorTypical Google Hotels scrapers
How it worksGoogle's own JSON over HTTPOften a headless browser
Bad input (past dates, wrong links)Clear error before the run, or the one bad entry is skipped and reportedOften a crashed or empty run
Dates Google silently changedDetected, never deliveredDelivered as if correct
Blocked / flaky requestsRetried on a fresh IP; an honest "partial" statusOften "succeeded" with 0 results
Every booking site per hotel✅ with official-site flag and free-cancellation deadlineOften lead price only
Room types x rates✅ breakfast / refundable per rateRarely
Guest reviews✅ Google + Tripadvisor & co., owner responses, traveler typeOften a separate actor
Date-range price calendar✅ up to a year of check-in datesUsually one date
Only-changed-prices monitoring✅Rarely
Short timeoutsStops in time and keeps its resultsCan time out and lose the status

Every release is tested end to end on the Apify platform across 20 scenarios: US and non-US cities, other currencies and markets, families, pagination to 200+ hotels, filters, deals, booking-site prices, room rates, price calendars, reviews, past dates, broken links, unknown hotels, monitoring, short timeouts, and scale runs (1,500 hotels from 6 cities in ~2 minutes; 4 hotels x 21 dates = 2,600 prices in ~2.5 minutes).

How much does it cost to scrape Google Hotels?

Platform usage is included. Failed, duplicate and unchanged (monitoring) rows are never charged.

Apify planHotels (search) per 1,000Price-calendar rows per 1,000Reviews per 1,000
Free$2.50$1.00$1.00
Starter (Bronze)$2.00$0.80$0.80
Scale (Silver)$1.75$0.70$0.70
Business (Gold) and above$1.50$0.60$0.60

A hotel row is one hotel from a search, with all its details. A price-calendar row is one booking site's price for one hotel and date (its room rates included). A review row is one guest review; reviews are only fetched when you ask for them.

Examples on the Free plan:

  • 200 hotels in a city = $0.50.
  • A 4-star Paris hotel has ~25-35 booking sites per date, so one hotel x 30 dates ≈ 900 rows = $0.90. Use providers (e.g. ["booking.com", "expedia", "official"]) to keep only the sites you care about.

How to use it

  1. Click Try for free.
  2. Pick the mode. For search, type what you'd type into Google Hotels (hotels in Lisbon, resorts in Cancun). For hotel prices, paste Google Hotels links or names with the city.
  3. Set the check-in date (a date, or +14 = 14 days from today), nights, guests, currency and market.
  4. Click Start and download JSON, CSV or Excel, or read the dataset via API.

Price calendar input

{
"mode": "hotelPrices",
"hotels": ["https://www.google.com/travel/hotels/entity/ChcIo_TJ-bLYkfIUGgsvZy8xdGtzbW56dhAB", "Hilton Paris Opera"],
"checkInDate": "+7",
"lastCheckInDate": "+36",
"nights": 2,
"adults": 2,
"currency": "EUR",
"providers": ["booking.com", "expedia", "official"]
}

Tip: run a search first and copy entityToken values into hotels - tokens are exact, names must match Google's hotel name (we only accept confident matches and tell you the closest names otherwise).

Reviews input

{
"mode": "reviews",
"hotels": ["Novotel Paris Les Halles", "https://www.google.com/travel/hotels/entity/ChcIo_TJ-bLYkfIUGgsvZy8xdGtzbW56dhAB"],
"maxReviews": 200,
"reviewsSort": "newest"
}

Monitoring: only changed prices

Set deltaMode: true and a monitor name (monitorName), then create a schedule. Each run delivers only hotels/offers that are new or whose price changed since the previous run with that name, with previousPricePerNight. With reviews, only reviews not delivered before. If nothing changed, the run says so ("empty: nothing changed since the previous run...") and costs nothing. Relative dates ("+30") keep a scheduled run valid forever; fixed dates that pass are skipped with a warning.

Market, currency and taxes

  • currency (USD, EUR, GBP, JPY...) is honoured for any market.
  • country (the market, default US) is the country Google believes you are browsing from. It changes which booking sites appear and how prices are shown: in the US market, pricePerNight excludes taxes & fees and pricePerNightWithTaxes includes them; most other markets show one tax-inclusive price, so pricePerNightWithTaxes is empty there. Non-US markets are served from residential IPs in that country (a bit slower, same price for you).

Google Hotels API in Python, JavaScript, Make, Zapier, n8n and AI agents

Run it from the Apify API with the Python or JavaScript client, schedule it, or connect it to Make, Zapier, n8n and Google Sheets. AI agents can call it through the Apify MCP server. See the API tab for ready-made code.

from apify_client import ApifyClient # pip install "apify-client>=3"
client = ApifyClient("<YOUR_API_TOKEN>")
run = client.actor("alom/google-hotels-scraper").call(run_input={
"searchQueries": ["hotels in Lisbon"], "checkInDate": "+30", "nights": 2, "maxResults": 50,
})
for hotel in client.dataset(run["defaultDatasetId"]).iterate_items():
print(hotel["name"], hotel["pricePerNight"], hotel["rating"])

Limitations

  • Prices are what Google Hotels shows for the market and moment of the run. Sites change prices constantly, and your own Google results can differ (signed-in deals, member prices, your country).
  • Up to a few hundred hotels per query in big cities (Google's list order; verified to 300+ unique hotels for Paris). For full coverage, split by area (hotels in Montmartre, hotels near Eiffel Tower) - duplicates are removed.
  • Booking links are Google redirect links, as on the site; they are meant to be opened, not stored for months.
  • Room types x rates exist only for Google's featured booking sites (usually 3-5 per hotel); for the other sites Google shows one lead price with its free-cancellation terms (or nothing - then freeCancellation is null). Pay-at-property and per-site deal badges are not in Google's data we read.
  • Reviews: Google shows relative dates ("3 weeks ago"), not exact ones. tripType / travelGroup labels are derived from Google's codes (verified against ~1,000 reviews); unknown codes stay in travelerTypeCodes.
  • Amenities come from Google's amenity codes; we only name the codes we could verify, so the list may be shorter than on the hotel page.
  • Families: fewer booking sites sell rooms with children - fewer offers is Google's data, not a scraping gap.
  • Dates more than ~11 months ahead usually have few prices on Google; stays are limited to 30 nights by Google.
  • Google Hotels mixes in vacation rentals; turn off includeVacationRentals to exclude them.

FAQ

Is there an official Google Hotels API? Google's Hotel Center / Hotel Prices APIs are for hotels and partners to send their rates to Google, and require onboarding. There is no public API to read the comparison results. This Actor returns what the Google Hotels website shows, as structured data.

Is it legal to scrape Google Hotels? The Actor reads publicly available hotel and price information without logging in. You are responsible for how you use the data.

Why does a hotel have no price? Google had no bookable offer for your dates and guests (sold out, closed, or too far ahead). Hotels without a price still appear in search; in a price calendar the date is listed as no-offers in the SUMMARY record and costs nothing.

Can I track prices every day? Yes: schedule the Actor with relative dates and monitoring on, and send the results to Google Sheets, a webhook or your database.

More scrapers from the same developer

Feedback

Missing a field, found a bug, or need a feature? Open an issue in the Issues tab and I'll take a look. If this Actor saved you time, a short review on the Store page helps other people find it.