Google Hotels Scraper - Prices, Booking Sites & Ratings avatar

Google Hotels Scraper - Prices, Booking Sites & Ratings

Pricing

from $0.10 / 1,000 hotels

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

Google Hotels Scraper - Prices, Booking Sites & Ratings

Scrape Google Hotels for any city and dates at $0.095 per 1,000 hotels: nightly and total price, star class, rating histogram, amenities, coordinates, check-in times and nearby transit. Optional booking-site prices with deep links, a 60-date price grid and monitor mode. No login.

Pricing

from $0.10 / 1,000 hotels

Rating

0.0

(0)

Developer

Top Api

Top Api

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

14 hours ago

Last modified

Share

What does Google Hotels Scraper do?

Google Hotels Scraper extracts Google Hotels results from google.com/travel/hotels for any destination and stay. You type a city, area or landmark, set the dates, guests and currency, and every hotel or vacation rental comes back as one row: the price for your stay, star class, Google rating, amenities, coordinates and location scores. Built for revenue managers, travel startups and analysts who track hotel prices without copying them by hand.

Also known as: Google Hotels API ยท Google Travel hotels scraper ยท Google hotel prices scraper ยท hotel rate shopping tool.

Google Hotels search results page that Google Hotels Scraper turns into rows

  • Priced for your stay: nightly price before and after taxes, the stay total, taxes and fees, and Google's price note ("21% less than usual") for the dates, guests and currency you set
  • Whole result lists: a city search pages through everything Google lists (574 hotels for "hotels in Paris" in one run)
  • Every booking site per hotel: turn on booking-site prices to add each site's nightly and total price with its own deep link, the official-site flag and free cancellation
  • Price offers mode: one hotel across up to 60 check-in dates, one row per booking site and date
  • All of Google's filters: price range, star class, guest rating, 19 amenities, property type, free cancellation, special offers, eco-certified, sort order, vacation rentals
  • No login, cookies or Google API key: you pass destinations or hotel URLs and nothing else
  • Monitor mode: on a schedule, get only new hotels and price drops since the last run
  • Export anywhere: JSON, CSV, Excel, XML; schedules, webhooks, Make, Zapier, n8n, Google Sheets, Slack, the Apify API and MCP

What data can you get from Google Hotels?

๐Ÿจ Hotel name and type (`type`)โญ Star class (`hotelClass`)๐Ÿ‘ Google rating and review count
๐Ÿ“Š Rating histogram 5 to 1 stars๐Ÿ—ฃ๏ธ What guests mention (`reviewAspects`)๐Ÿ“ Latitude and longitude
๐Ÿ—บ๏ธ Location scores (`locationScores`)๐Ÿš‡ Nearby transit, sights and airport minutes๐Ÿ›Ž๏ธ Amenities
๐Ÿ’ฒ Nightly price, with and without taxes๐Ÿงพ Stay total, taxes and fees๐Ÿท๏ธ Price note (`priceInsight`)
๐Ÿ•’ Check-in and check-out times๐Ÿ–ผ๏ธ Photos and thumbnail๐ŸŒ Website (only with booking-site prices)
๐Ÿ”— Booking sites with deep links (`offers`)๐Ÿ“ Address and phone (only with booking-site prices)๐Ÿงญ Google Maps ids: `cid`, `fid` (`placeId` with booking-site prices)
๐Ÿ›๏ธ Rentals: sleeps, bedrooms, bathrooms, beds๐Ÿ“… Check-in, check-out, nights, guests๐Ÿ’ฑ Currency of every price

On a 100-hotel run for "hotels in Lisbon" every row had a name, coordinates, a nightly price and a Google Hotels link; 99% had a rating and amenities, 98% location scores and 77% a star class (Google mixes vacation rentals into city searches; those rows carry sleeps, bedrooms and bathrooms instead).

How to scrape Google Hotels with Google Hotels Scraper

  1. Create a free Apify account: $5 of monthly credit, no card needed.
  2. Open Google Hotels Scraper and click Try for free.
  3. Type a destination into Destinations / searches, e.g. hotels in Lisbon, and set the Check-in date and Nights.
  4. Add filters if you need them, and set Max hotels per search.
  5. Click Start. Rows appear in the dataset as Google answers.
  6. Open the Storage tab and Export as JSON, CSV or Excel, or let a schedule run it for you.

โฌ‡๏ธ Input

ParameterTypeDescription
๐Ÿ” What to scrape
queriesListDestinations as you would type them into Google Hotels: hotels in Lisbon, Paris, hotels near Times Square. Prefilled with hotels in Lisbon.
hotelUrlsListSpecific hotels: a Google Hotels URL, the bare entity token (ChgIโ€ฆ), or the hotel name with its city.
modeSelectsearch (one row per hotel, default) or offers (one row per booking site x check-in date).
propertyKindSelecthotels (default) or vacation_rentals.
๐Ÿ—“๏ธ Stay
checkInDate2026-11-12 or days from today (30 days). Default: 30 days from today.
checkOut / nightsDate / IntegerA check-out date, or the number of nights (1-30, default 1).
adults, childrenAgesInteger / ListGuests: adults 1-12 (default 2), one age per child (0-17).
currency, language, countrySelect / TextPrice currency (56 to choose from, default USD), Google language hl (default en: names, descriptions and class labels follow it; amenities on hotel rows stay in English) and market gl (default us).
deviceSelectdesktop (default) or mobile, which adds booking sites' mobile-only rates to booking-site prices and price offers.
๐ŸŽฏ Filters (applied by Google Hotels)
sortBySelectRelevance (default), lowest price, highest rating, most reviewed.
minPrice, maxPriceIntegerNightly price range in your currency.
hotelClass, minRatingMulti-select / SelectStar classes 2-5; guest rating 3.5+, 4.0+, 4.5+.
amenities, propertyTypesMulti-select19 amenities (pool, free breakfast, pet-friendly, EV chargerโ€ฆ) and 9 property types (hostels, boutique hotels, apartment hotelsโ€ฆ).
freeCancellation, specialOffers, ecoCertifiedBooleanGoogle's toggles of the same names. Default: off.
โœ‚๏ธ Refine results
withPriceOnly, minReviews, excludeKeywordsBoolean / Integer / TextSkip hotels without a price for your dates, with too few reviews, or whose name contains a word.
minBedrooms, minBathroomsIntegerVacation rentals only: keep rentals with at least this many bedrooms / bathrooms (rentals that list no count are skipped when set). Hotel rows are not affected.
โž• Extra data
includeDetailsBooleanEach hotel's booking-site prices and details, charged as hotel-details at $0.001 per hotel that gets them. Default: off.
maxOffersPerHotelIntegerKeep the first N booking sites per hotel. 0 = all.
sweepDaysIntegerOffers mode: price the stay for this many consecutive check-in dates (1-60).
๐Ÿ” Monitoring
monitorMode, monitorStoreName, priceDropPercentBoolean / Text / IntegerReturn only hotels not delivered before, plus hotels whose nightly price fell by at least priceDropPercent (default 5).
๐Ÿ“ฆ Output
maxResultsIntegerHotels per search. Default 100 (prefill 20); 0 = everything Google lists (its list for a big city ends after about 550-650 hotels). In price offers mode: hotels taken per destination (0 = the first 20).
maxItems, maxPhotosPerHotel, compactInteger / BooleanTotal row cap; photos per hotel (default 10); core fields only for AI agents and MCP (price offers rows keep the booking site, its prices and link).
โš™๏ธ Advanced
proxyConfiguration, maxConcurrencyProxy / IntegerDefaults work for most runs: a direct connection first, the Apify proxy if Google blocks it. Pick RESIDENTIAL with a country to see that country's point of sale.

Google Hotels Scraper output table with prices and booking sites

Input JSON

{
"queries": ["hotels in Rome"],
"checkIn": "45 days",
"nights": 3,
"adults": 2,
"currency": "EUR",
"hotelClass": ["4", "5"],
"maxResults": 50,
"includeDetails": true
}

Type the destination the way you would on Google Hotels

queries is Google's own search box. hotels in Lisbon, Lisbon, boutique hotels in Alfama and hotels near Times Square all work. Google always answers with hotels: a misspelt or unknown place is matched to the nearest thing it recognises, so check the first rows of a new search.

Use relative dates for scheduled runs

"checkIn": "30 days" with "nights": 2 always prices a stay 30 days ahead, so a daily schedule builds a price history for the same lead time. Absolute dates (2026-11-12) price one fixed stay.

Look up hotels by URL or token, not by Maps place id

hotelUrls takes a Google Hotels URL (https://www.google.com/travel/hotels/entity/ChgIโ€ฆ), the token alone, or a hotel name with its city. A hotel name resolves to Google's first match for it. A Google Maps place id (ChIJโ€ฆ) cannot be opened on Google Hotels.

โฌ†๏ธ Output

Every hotel becomes one dataset item. A hotel row from a run for "hotels in Rome" with booking-site prices on (shortened):

{
"type": "hotel",
"name": "Stendhal Luxury Suites",
"entityToken": "ChkI7PTB7839_oJ_Gg0vZy8xMXJuY3d3bDY3EAE",
"hotelClass": 4,
"rating": 4.6,
"reviewCount": 119,
"locationScores": { "overall": 4.5, "thingsToDo": 4.9, "restaurants": 4.7, "airportAccess": 3.3 },
"latitude": 41.9036189,
"longitude": 12.4876103,
"address": "Via Sistina, 4, 00187 Roma RM, Italy",
"amenities": ["Free breakfast", "Free Wi-Fi", "Parking", "Air conditioning"],
"pricePerNight": 185.46,
"pricePerNightWithTaxes": 220.8,
"totalPriceWithTaxes": 662.41,
"currency": "USD",
"priceInsight": "21% less than usual",
"checkIn": "2026-11-22",
"checkOut": "2026-11-25",
"cid": "9596812607083390924",
"vendorCount": 15,
"cheapestSource": "Hotels.com",
"officialSitePrice": 205.78,
"offers": [{ "source": "Stendhal Luxury Suites", "official": true, "nightly": 205.78, "nightlyWithTaxes": 224.69, "partnerUrl": "https://www.reserve-online.net/?property=STENDSUI&checkin=2026-11-22โ€ฆ" }]
}

And one row of price offers mode (one booking site, one check-in date):

{
"name": "Altis Grand Hotel",
"source": "Booking.com",
"official": false,
"rank": 9,
"checkIn": "2026-11-08",
"checkOut": "2026-11-10",
"currency": "USD",
"price": 280.98,
"priceWithTaxes": 306.8,
"totalWithTaxes": 613.61,
"freeCancellation": false,
"partnerUrl": "https://www.booking.com/searchresults.en.html?dest_id=38507&highlighted_hotels=38507โ€ฆ",
"device": "desktop"
}

Google Hotels fields

Fill is measured on Apify runs: hotel fields on 100 hotels in Lisbon (run KPeZSQPPPbJYoWXZA), booking-site fields on 20 hotels in Rome (Q4A0z5CTzhw3Zu3j0), offer fields on 678 offers (Lv0LXyJGweVKpwBMw).

FieldTypeWhat it isFill
name, entityToken, urlstringProperty name, Google Hotels id and page100%
type, propertyTypestringhotel or vacation_rental; Google's category or the rental type100% / 99%
hotelClass, classLabelnumber, stringStar class 1-5 (hotels)77%
rating, reviewCountnumberGoogle rating and number of Google reviews99%
ratingHistogram, reviewAspectsobject, arrayReviews per star; what reviews mention (aspect, mentions, positive, negative)85% / 84%
locationScoresobjectGoogle's location score: overall, things to do, restaurants, transit, airport access98%
latitude, longitude, countryCodenumber, stringPosition100%
nearbyarrayNearby sights, transit stops and airports with walking, transit or driving minutes98%
amenities, amenityCodesarrayAmenities on the hotel card99%
pricePerNight, pricePerNightWithTaxesnumberLead nightly price before / after taxes and fees100%
totalPrice, totalPriceWithTaxes, taxesAndFeesnumberStay totals100%
priceInsightstringGoogle's price note, when Google shows one15%
checkInTime, checkOutTime, descriptionstringHotel facts Google lists70% / 66%
cid, fid, mapsUrlstringGoogle Maps ids and link100% / 85% / 100%
sleeps, bedrooms, bathrooms, beds, listingSourcenumber, stringVacation rentals (15% of rows in that city search)15%
offers, vendorCount, cheapestSource, cheapestNightlyarray, number, stringBooking-site prices (includeDetails)100%
address, phone, placeId, websitestringStreet address, phone, Google place id and the hotel's own website; only on rows with booking-site prices (includeDetails), empty on plain hotel rows75% / 70% / 75% / 90%
officialSitePrice, priceBreakdown, externalRatingsnumber, object, arrayHotel's own site, stay base/taxes/fees, other sites' ratings55% / 100% / 100%
price, priceWithTaxes, total, totalWithTaxesnumberOffers mode: one booking site's price100% / 95%
freeCancellation, deal, originalNightlyboolean, string, numberOffers mode: cancellation flag and discounted rates23% / 4%

How can I use Google Hotels data?

  • ๐Ÿจ Hotel revenue managers: rate shopping and rate parity, comparing your official-site price with every booking site for the same dates
  • ๐Ÿ“ˆ Travel analysts: price curves by city, star class and lead time, built from a daily schedule with relative dates
  • ๐Ÿงณ Travel startups and agencies: a hotel inventory for a destination with coordinates, ratings, amenities and live prices
  • ๐Ÿ—บ๏ธ Real-estate and tourism researchers: where hotels and vacation rentals sit, what they charge and how Google scores their location
  • ๐Ÿ”” Deal hunters: monitor mode returns only new hotels and price drops for a watch list
  • ๐Ÿค– AI and data teams: compact rows for LLM agents through the Apify API or MCP

How much does it cost to scrape Google Hotels?

Google Hotels Scraper is pay-per-event, with no start fee:

EventPrice
hotel: one hotel or rental row$0.000095 ($0.095 per 1,000 hotels)
hotel-details: booking-site prices and details for one hotel (only when includeDetails is on)$0.001
offer: one booking-site row in price offers mode$0.0008 ($0.80 per 1,000 offers)
RunRowsCost
20 hotels (one results page)20$0.0019
100 hotels100$0.0095
1,000 hotels1,000$0.095
100 hotels with booking-site prices100$0.1095
1 hotel x 30 check-in dates, offers mode (678 offers measured)678$0.54

There is nothing else to pay: Apify platform usage is included in these prices.

Integrations, API, scheduling & MCP

  • Schedules: run Google Hotels Scraper daily from the Schedules tab; with a relative check-in date and monitor mode each run returns only new hotels and price drops.
  • Webhooks: fire a URL when a run finishes and push rows to a sheet, a database or Slack.
  • No-code: Make, Zapier, n8n, Google Sheets, Airtable and Slack through Apify integrations.
  • API: call it from Node.js or Python with apify-client: code on the API tab and in the Apify API reference.
  • MCP / AI agents: connect Claude, Cursor or any MCP client through the MCP tab and ask for hotel prices in plain language; turn on compact for shorter rows.

More travel and maps scrapers by TopApi

๐Ÿ›๏ธ Booking.com Hotels Scraper: Booking.com prices, rooms and availability๐Ÿ’ฌ Google Maps Reviews Scraper: the review text behind each hotel's rating (pass its `cid` or `placeId`)๐Ÿ“ Google Geocoding Scraper: addresses to coordinates and back
๐ŸŽ Apple Maps Scraper: places, ratings and coordinatesโญ Yelp Reviews Scraper: Yelp ratings and reviews of restaurants and venues๐ŸŒ Website Content Crawler: the text of hotel websites as Markdown
๐Ÿ“Š SimilarWeb Scraper: traffic and rank of booking sites and hotel websites๐Ÿ  Zillow Scraper: property listings and price history๐Ÿงญ All TopApi actors

Limits & empty runs

  • How deep a search goes: Google lists 18-20 hotels per page and stops when its list ends: 574 to 624 hotels for "hotels in Paris" in two runs on the same day. Split a city into neighbourhoods or filters to go further.
  • Prices are Google's answer for your market: currency, dates, guests and country change the prices; the number of booking sites differs by hotel and by check-in date (0 to 32 across the first 20 hotels of "hotels in Rome" over 2 runs; 20 to 28 for one Lisbon hotel over 3 check-in dates). With the default connection prices are those Google shows to a US visitor in your currency; choose RESIDENTIAL with a country for a local point of sale.
  • Hotels without a price for your dates come back with priceStatus: "no_price" (8% of rows in the 574-hotel Paris run); turn on withPriceOnly to skip them.
  • Empty dataset: Google listed nothing for the destination with your filters, every hotel was removed by your Refine filters, or monitor mode found nothing new. The run's status message says which.
  • Not available: room types for every booking site (Google shows rooms only for a few featured offers; they come in rooms), and review text (use Google Maps Reviews Scraper).

FAQ

As many as Google lists for it: 574-624 for "hotels in Paris", about 20 per page. Set maxResults to 0 for everything, and add more searches (districts, star classes, price bands) for wider coverage.

Can Google Hotels Scraper get prices from every booking site?

Yes. Turn on includeDetails and each hotel gets an offers list: every booking site Google shows with its nightly and total price, taxes, free cancellation, the official-site flag and the booking site's own deep link.

Can I get Google Hotels prices for many dates in one run?

Yes. Set mode to offers, add the hotels and set sweepDays (up to 60). Each check-in date returns one row per booking site.

Can I run Google Hotels Scraper on a schedule to track price changes?

Yes. Save your input as a task, add a schedule and use a relative check-in date such as 30 days. With monitorMode on, each run returns only hotels not delivered before and those whose price dropped by priceDropPercent or more.

Does Google Hotels Scraper cover vacation rentals?

Yes. Set propertyKind to vacation_rentals. Rental rows add sleeps, bedrooms, bathrooms, beds, floor area when listed, and the listing source.

Can I integrate Google Hotels Scraper with other apps?

Yes: Make, Zapier, n8n, Google Sheets, Slack and more via Apify integrations, or webhooks when a run finishes.

Can I use Google Hotels Scraper with the Apify API?

Yes. Start runs and read datasets with apify-client for Node.js or Python; the API tab has ready-to-paste code.

Can I use Google Hotels Scraper through an MCP server?

Yes. Open the MCP tab, connect Claude Desktop, Cursor or another MCP client, and ask for hotels and prices in plain language. compact keeps the rows short.

Do I need a Google account, cookies or a Google Hotels API key?

No. There is no public Google Hotels API for reading prices; Google Hotels Scraper reads the public Google Hotels pages any visitor sees, with no login, cookies or API key.

Why did my Google Hotels Scraper run return no hotels?

Most often the filters left nothing (a price range below what the city charges, or several amenities at once), the dates were sold out with withPriceOnly on, or monitor mode found no new hotels and no price drops. The status message and the RUN_SUMMARY record give the counts.

Google Hotels Scraper reads publicly displayed hotel data and prices, the same figures any visitor sees without logging in, and the rows describe hotels and rates, not people. Terms of service and local law differ, so check that your use complies. See Apify's overview: is web scraping legal?

Your feedback

We keep improving Google Hotels Scraper. Found a bug or missing a field? Open an issue on the Issues tab.