Google Hotels Scraper - Prices, Booking Sites & Ratings
Pricing
from $0.10 / 1,000 hotels
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
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
14 hours ago
Last modified
Categories
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.
- 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
- Create a free Apify account: $5 of monthly credit, no card needed.
- Open Google Hotels Scraper and click Try for free.
- Type a destination into Destinations / searches, e.g.
hotels in Lisbon, and set the Check-in date and Nights. - Add filters if you need them, and set Max hotels per search.
- Click Start. Rows appear in the dataset as Google answers.
- Open the Storage tab and Export as JSON, CSV or Excel, or let a schedule run it for you.
โฌ๏ธ Input
| Parameter | Type | Description |
|---|---|---|
| ๐ What to scrape | ||
queries | List | Destinations as you would type them into Google Hotels: hotels in Lisbon, Paris, hotels near Times Square. Prefilled with hotels in Lisbon. |
hotelUrls | List | Specific hotels: a Google Hotels URL, the bare entity token (ChgIโฆ), or the hotel name with its city. |
mode | Select | search (one row per hotel, default) or offers (one row per booking site x check-in date). |
propertyKind | Select | hotels (default) or vacation_rentals. |
| ๐๏ธ Stay | ||
checkIn | Date | 2026-11-12 or days from today (30 days). Default: 30 days from today. |
checkOut / nights | Date / Integer | A check-out date, or the number of nights (1-30, default 1). |
adults, childrenAges | Integer / List | Guests: adults 1-12 (default 2), one age per child (0-17). |
currency, language, country | Select / Text | Price 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). |
device | Select | desktop (default) or mobile, which adds booking sites' mobile-only rates to booking-site prices and price offers. |
| ๐ฏ Filters (applied by Google Hotels) | ||
sortBy | Select | Relevance (default), lowest price, highest rating, most reviewed. |
minPrice, maxPrice | Integer | Nightly price range in your currency. |
hotelClass, minRating | Multi-select / Select | Star classes 2-5; guest rating 3.5+, 4.0+, 4.5+. |
amenities, propertyTypes | Multi-select | 19 amenities (pool, free breakfast, pet-friendly, EV chargerโฆ) and 9 property types (hostels, boutique hotels, apartment hotelsโฆ). |
freeCancellation, specialOffers, ecoCertified | Boolean | Google's toggles of the same names. Default: off. |
| โ๏ธ Refine results | ||
withPriceOnly, minReviews, excludeKeywords | Boolean / Integer / Text | Skip hotels without a price for your dates, with too few reviews, or whose name contains a word. |
minBedrooms, minBathrooms | Integer | Vacation 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 | ||
includeDetails | Boolean | Each hotel's booking-site prices and details, charged as hotel-details at $0.001 per hotel that gets them. Default: off. |
maxOffersPerHotel | Integer | Keep the first N booking sites per hotel. 0 = all. |
sweepDays | Integer | Offers mode: price the stay for this many consecutive check-in dates (1-60). |
| ๐ Monitoring | ||
monitorMode, monitorStoreName, priceDropPercent | Boolean / Text / Integer | Return only hotels not delivered before, plus hotels whose nightly price fell by at least priceDropPercent (default 5). |
| ๐ฆ Output | ||
maxResults | Integer | Hotels 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, compact | Integer / Boolean | Total 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, maxConcurrency | Proxy / Integer | Defaults 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. |
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).
| Field | Type | What it is | Fill |
|---|---|---|---|
name, entityToken, url | string | Property name, Google Hotels id and page | 100% |
type, propertyType | string | hotel or vacation_rental; Google's category or the rental type | 100% / 99% |
hotelClass, classLabel | number, string | Star class 1-5 (hotels) | 77% |
rating, reviewCount | number | Google rating and number of Google reviews | 99% |
ratingHistogram, reviewAspects | object, array | Reviews per star; what reviews mention (aspect, mentions, positive, negative) | 85% / 84% |
locationScores | object | Google's location score: overall, things to do, restaurants, transit, airport access | 98% |
latitude, longitude, countryCode | number, string | Position | 100% |
nearby | array | Nearby sights, transit stops and airports with walking, transit or driving minutes | 98% |
amenities, amenityCodes | array | Amenities on the hotel card | 99% |
pricePerNight, pricePerNightWithTaxes | number | Lead nightly price before / after taxes and fees | 100% |
totalPrice, totalPriceWithTaxes, taxesAndFees | number | Stay totals | 100% |
priceInsight | string | Google's price note, when Google shows one | 15% |
checkInTime, checkOutTime, description | string | Hotel facts Google lists | 70% / 66% |
cid, fid, mapsUrl | string | Google Maps ids and link | 100% / 85% / 100% |
sleeps, bedrooms, bathrooms, beds, listingSource | number, string | Vacation rentals (15% of rows in that city search) | 15% |
offers, vendorCount, cheapestSource, cheapestNightly | array, number, string | Booking-site prices (includeDetails) | 100% |
address, phone, placeId, website | string | Street address, phone, Google place id and the hotel's own website; only on rows with booking-site prices (includeDetails), empty on plain hotel rows | 75% / 70% / 75% / 90% |
officialSitePrice, priceBreakdown, externalRatings | number, object, array | Hotel's own site, stay base/taxes/fees, other sites' ratings | 55% / 100% / 100% |
price, priceWithTaxes, total, totalWithTaxes | number | Offers mode: one booking site's price | 100% / 95% |
freeCancellation, deal, originalNightly | boolean, string, number | Offers mode: cancellation flag and discounted rates | 23% / 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:
| Event | Price |
|---|---|
| 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) |
| Run | Rows | Cost |
|---|---|---|
| 20 hotels (one results page) | 20 | $0.0019 |
| 100 hotels | 100 | $0.0095 |
| 1,000 hotels | 1,000 | $0.095 |
| 100 hotels with booking-site prices | 100 | $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
compactfor 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
countrychange 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 onwithPriceOnlyto 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
How many hotels can Google Hotels Scraper return from one search?
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.
Is it legal to scrape Google Hotels?
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.

