Google Hotels Scraper | $4.99 per 1,000 hotels avatar

Google Hotels Scraper | $4.99 per 1,000 hotels

Pricing

from $3.49 / 1,000 hotel scrapeds

Go to Apify Store
Google Hotels Scraper | $4.99 per 1,000 hotels

Google Hotels Scraper | $4.99 per 1,000 hotels

[$4.99 / 1K] Google Hotels with the full per-vendor price ladder: every booking site quoting each hotel for your dates, with nightly rate, stay total and a bookable deep link. Plus rating, review breakdown by OTA, address, phone and check-in times. No start fee.

Pricing

from $3.49 / 1,000 hotel scrapeds

Rating

0.0

(0)

Developer

WebData Labs

WebData Labs

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

7 days ago

Last modified

Share

Google Hotels Scraper - Every Booking Site's Price, Not Just One

Scrape Google Hotels and get the full per-vendor price ladder for your dates: Booking.com, Expedia, Hotels.com, Trip.com, Agoda, the hotel's own site and everyone else quoting that stay, each with its nightly rate, stay total and a bookable link.

Most Google Hotels scrapers hand you one headline number per hotel - the same "from" price the search page shows. That number is whichever site happened to be cheapest at that second, and it tells you nothing about the spread. This Actor opens each hotel and reads every vendor quoting it, so you can see that the same room is 63 EUR on one site and 209 EUR on another, on the same night.

Give it a city, a set of dates and a currency. Get back one row per hotel with the ladder, the rating, the review breakdown per booking site, the address, the phone and the official website.

✅ What you get / ❌ What this isn't

✅ What you get

  • The complete price ladder per hotel - typically 10 to 30 vendors, and up to 37, organic and sponsored, each tagged
  • Nightly rate and stay total from each vendor, all converted to one currency so they are directly comparable
  • A bookable deep link per vendor, with your dates already in the URL - the vendor's own link, not a Google redirect
  • Cheapest vendor, dearest vendor and the spread already computed
  • Real dates: check-in, check-out, nights, adults, children's ages and rooms all change what the vendors quote
  • Relative dates (checkInDaysAhead) so a scheduled run keeps asking about the same stay shape instead of drifting into the past
  • Rating, star breakdown, each booking site's own review score, and what guests keep mentioning
  • Address, phone, official website, check-in and check-out times, coordinates, Google Place ID
  • Photos and the hotel's description

❌ What this isn't

  • Not a booking engine. It reads public prices; it does not hold, reserve or pay for anything.
  • Not room-by-room rates. Google quotes one rate per vendor for the stay you asked about, and that is what you get. There is no per-room-type table.
  • Not a Google account scraper. Everything here is what a signed-out visitor sees.
  • Not a review dump. You get the score, the star histogram and per-site scores, not the individual review texts.
  • Not real-time. Prices are correct as of the moment the run fetched them, which is why the monitoring pattern below exists.

🔎 Why use this Actor

  • The spread is the product. Across 120 Lisbon hotels priced for the same two nights, the median gap between the cheapest and dearest vendor was 39 EUR, and the widest was 546 EUR. A one-price scrape cannot see any of that.
  • Every hotel is addressable. Each row carries the Google Hotels entity URL, so you can feed the same properties back in tomorrow and get a clean time series.
  • Dates and occupancy really work. Two adults and six adults are genuinely different prices, and this Actor sends both correctly.
  • Vacation rentals are separated, not silently mixed in. Google blends single-room rental listings into hotel results; they are tagged and excluded by default so you are not charged for the same address five times.
  • No proxy setup, no captcha, no start fee. Google Hotels serves this data over plain HTTP and the Actor keeps it that way, which is why the price is what it is.

📊 What data you get

FieldTypeDescription
namestringHotel name
propertyTypestringhotel or vacation_rental
priceDisplay / pricestring / numberThe headline nightly rate Google shows in the results list
lowestPricenumberThe lowest rate any vendor quotes on the detail view
priceLadderarrayOne entry per vendor: vendor, nightlyPrice, stayTotal, sponsored, bookingUrl, googleClickUrl, partnerId
vendorCountnumberHow many vendors quoted this hotel for these dates
cheapestVendor / cheapestVendorPrice / cheapestVendorUrlstring / number / stringThe best organic quote and where to book it
highestVendorPrice / priceSpreadnumberThe dearest organic quote and the gap to the cheapest
checkInDate / checkOutDate / nightsstring / numberThe stay these prices are for
currencystringCurrency every price in the row is quoted in
rating / reviewCount / ratingHistogramnumber / number / objectGoogle's guest rating, review count and star breakdown
reviewsBySourcearrayEach booking site's own score and review count for the hotel
reviewTopicsarrayWhat guests keep mentioning, with mention counts and sentiment
hotelClass / starsstring / number4-star hotel and the numeric class
address / phone / websitestringProperty contact details
checkInTime / checkOutTimestringWhen you can arrive and must leave
latitude / longitude / googlePlaceId / ftidnumber / stringLocation and the ids that tie this row to Google Maps
amenitiesarrayNamed amenities, where Google publishes them
description / photoUrls / thumbnailUrlstring / arrayEditorial description and photos
url / entityTokenstringThe hotel's Google Hotels page, and the token to re-price it later
searchQuery / resultPage / positionstring / numberWhere in your search this hotel came from
priceLadderStatusstringok, or why the ladder could not be read for this row

👥 Who it's for

  • Revenue managers and hotel owners watching what OTAs charge for their own rooms and their comp set, night by night.
  • Travel affiliates and metasearch builders who need a price feed across every OTA from one source instead of integrating each one.
  • Rate parity and distribution teams checking that no channel is undercutting the direct rate.
  • Market analysts measuring what a city costs on a given date, and how that moves as the date approaches.
  • Anyone building a "book on the cheapest site" tool - the bookable deep link per vendor is already in the row.

⚙️ How to monitor hotel prices for a date

  1. Put your destination in Searches, for example hotels in Lisbon. A bare city name works too.
  2. Set the stay. For a one-off, fill in Check-in date and Check-out date. For a monitor, leave those empty and set Or check in this many days from today to something like 21, with Nights at 2.
  3. Set Adults, Rooms and any Children's ages - occupancy changes every quote.
  4. Pick your Currency. Every vendor in the ladder is converted to it, so the numbers compare directly.
  5. Leave Include the per-vendor price ladder on. That second fetch per hotel is the whole point.
  6. Set Max hotels to how many properties you want. Start at the default 25.
  7. Run it, then open the Cheapest vendor per hotel view in the results to see the spread at a glance.
  8. To track the same properties over time, copy the url values from your first run into Specific hotels, then schedule the Actor daily. With a relative check-in, every run asks about the same stay shape.

📥 Input

{
"searchQueries": ["hotels in Lisbon"],
"checkInDaysAhead": 21,
"nights": 2,
"adults": 2,
"rooms": 1,
"currency": "EUR",
"includePriceLadder": true,
"maxItems": 25,
"minRating": 4
}
FieldTypeDefaultDescription
searchQueriesarray-Destinations, place names, or pasted Google Hotels search URLs
hotelUrlsarray-Specific google.com/travel/hotels/entity/... URLs or bare entity tokens
checkInDate / checkOutDatestring-Absolute stay, as 2026-11-10. Wins over the relative offset
checkInDaysAheadinteger-Relative check-in for scheduled runs
nightsinteger1Used when no check-out date is given
adultsinteger2Guests in the booking
childrenAgesarray-One age per child; Google prices children by age
roomsinteger1Rooms the party needs
currencystringUSDThree-letter code every price is converted to
includePriceLadderbooleantrueOff = one headline price per hotel, one fetch, faster
includeVacationRentalsbooleanfalseKeep the rental listings Google mixes into hotel results
maxItemsinteger25Hotels to return across all searches. 0 = no cap
minRating / minStars / maxNightlyPriceinteger-Filters applied to the search card, before the paid detail fetch

📤 Output

{
"name": "easyHotel Lisbon",
"propertyType": "hotel",
"checkInDate": "2026-11-10",
"checkOutDate": "2026-11-12",
"nights": 2,
"currency": "EUR",
"priceDisplay": "€70",
"lowestPrice": 70.0,
"vendorCount": 19,
"cheapestVendor": "Amimir.com",
"cheapestVendorPrice": 70.0,
"highestVendorPrice": 84.0,
"priceSpread": 14.0,
"priceLadder": [
{
"vendor": "Booking.com",
"nightlyPrice": 84.0,
"stayTotal": 168.0,
"sponsored": false,
"bookingUrl": "https://www.booking.com/searchresults.en.html?checkin=2026-11-10..."
},
{
"vendor": "easyHotel.com",
"nightlyPrice": 76.0,
"stayTotal": 153.0,
"sponsored": false,
"bookingUrl": "https://www.easyhotel.com/hotels/portugal/lisbon/lisbon?startDate=2026-11-10..."
}
],
"rating": 4.1,
"reviewCount": 1963,
"reviewsBySource": [
{ "source": "Tripadvisor", "rating": 3.5, "ratingMax": 5, "reviewCount": 236 }
],
"address": "R. de Santa Marta 60, 1150-006 Lisboa",
"phone": "21 052 0600",
"website": "https://www.easyhotel.com/hotels/portugal/lisbon/lisbon",
"checkInTime": "3:00 PM",
"checkOutTime": "12:00 PM",
"url": "https://www.google.com/travel/hotels/entity/ChkIy6arwemv3I1AGg0vZy8xMWcxaGY4YndtEAE"
}

Five ready-made dataset views: Hotels, Cheapest vendor per hotel, Full price ladder, Ratings and reviews, and Property details. Export any of them to CSV, JSON or Excel.

💵 How much does it cost to scrape Google Hotels?

$4.99 per 1,000 hotels. No start fee, no monthly rental, and you are only charged for rows that reach your dataset - a hotel excluded by minRating, minStars, maxNightlyPrice or the vacation-rental filter costs you nothing, because those filters run before the paid fetch.

JobHotelsCost
Default first run, one city25$0.12
A city's full hotel list for one date200$1.00
Twenty tracked properties, daily for a month600$3.00
Four cities, four dates1,600$7.98

The levers: maxItems caps the row count directly, and turning includePriceLadder off halves the work per hotel if you only need a list with one price each.

🚀 Ready-made examples

Each of these is a saved configuration you can open, tweak and run:

🔁 Run it on the Apify platform

Schedule it daily to build a price history, call it from the API, or wire the dataset into Make, Zapier, Google Sheets, a webhook or your own database. Runs, logs and failures are monitored on the platform.

⚠️ Limits and caveats

  • A price is a snapshot. Hotel rates move hourly. Two runs an hour apart can legitimately disagree.
  • The headline price and the ladder can differ by a few percent. The results list and the detail view are two Google surfaces refreshed on different clocks. Both numbers are Google's; the ladder is the one priced for your exact dates.
  • Google's result count is not a hotel count. A city search claims 15,000 matches, but the pages start repeating after a few hundred properties. The Actor stops when a page brings nothing new rather than chasing that number.
  • Some properties have no ladder. Small guest houses are often quoted by a single site, or by none for your dates. priceLadderStatus says which case you hit.
  • Sponsored slots are included but tagged. They quote different rates to the organic listings, so cheapestVendor and priceSpread are computed from the organic ones only.
  • No per-room-type breakdown. See the ❌ list above.
  • Prices are converted by Google, so a currency you pick is a conversion of the vendor's own currency, not necessarily the amount that will be charged at booking.
  • Booking.com Scraper - when you want one OTA in depth rather than every OTA at once.
  • Google Maps Business Scraper - the same properties as local businesses, with contact data.
  • Airbnb Market Intelligence - the short-let side of the same market.

❓ FAQ

Is scraping Google Hotels legal? This Actor reads publicly visible pages that any signed-out visitor can load, and collects no personal data. You are responsible for how you use the output, including any terms that apply to the booking sites you link on to.

Can I get prices for a specific date range? Yes - that is the core feature. Set checkInDate and checkOutDate, or use checkInDaysAhead plus nights for a monitor that never goes stale.

Does it return Booking.com and Expedia prices? Yes, along with Hotels.com, Trip.com, Agoda, Priceline, Skyscanner, the hotel's own site and whoever else is live for your dates. Across 120 Lisbon hotels we measured a median of 12 vendors each, and up to 30.

Can I track one hotel over time? Put its Google Hotels URL in hotelUrls and schedule the Actor. Each run adds one row per day.

Why do some hotels show only one vendor? Because only one site is quoting them for your dates. Small properties and rental listings are usually in this group.

Do I need a proxy? No. There is no proxy input because proxying is handled internally when it is needed at all.

🛠️ Support

Something wrong with a run? Send the run URL, the input you used, and what you expected instead. Issues with a specific hotel are easiest to fix when you include its url from the dataset.