Google Hotels Scraper — Hotel Prices & OTA Rates API | $0.90/1k
Pricing
from $0.72 / 1,000 results
Google Hotels Scraper — Hotel Prices & OTA Rates API | $0.90/1k
Scrape Google Hotels for any destination and dates: hotel name, star class, rating, review count, price per night and total with taxes, deals, amenities, lat/lng and Google hotel link. Optional price from every booking site (OTA rates). Filter by class and property type. CSV, JSON, Excel.
Pricing
from $0.72 / 1,000 results
Rating
0.0
(0)
Developer
Raffy
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
5 days ago
Last modified
Categories
Share
What does Google Hotels Scraper do?
Google Hotels Scraper reads Google Hotels (google.com/travel) and turns every property it lists for a destination and your dates into one clean row: hotel name, star class, guest rating and review count, price per night and total price for the stay (with taxes and fees), Google's deal badge, amenities, check-in and check-out times, coordinates, the hotel's website and its Google Hotels link.
Google Hotels compares prices from Booking.com, Expedia, Hotels.com, Agoda, the hotels' own sites and dozens more, so one search here gives you the market price of a whole city. Switch on Include every booking site's price and each row also gets the nightly and total price from every booking site, with the cheapest one named. It works like a Google Hotels API: type a destination, pick dates and guests, and export CSV, Excel or JSON.
- Try it: the prefill (Lisbon, 2 adults, 2 nights starting in two weeks) returns 20 properties in well under a minute.
- No proxy setup, no Google account: the Actor uses Apify's datacenter proxy, which is included in the price.
Use cases for this Google Hotels scraper
- Hotel revenue management - track competitors' nightly rates for your dates, every day, and see when a "less than usual" deal appears.
- Travel agencies and booking startups - fill a hotel search with prices, star class, ratings, amenities and coordinates.
- Rate parity checks - with booking-site prices on, compare a hotel's own-site rate with Booking.com, Expedia and the rest.
- Market research - average price by star class and neighbourhood, seasonality by repeating the same search for other dates.
- AI agents and travel assistants - structured JSON a model can filter by price, rating and amenities.
- Automation - schedule runs and send the results to Google Sheets, Airtable or Slack via Make, n8n or Zapier.
What data can Google Hotels Scraper extract?
| Field | Example | Notes |
|---|---|---|
name | Dos Reis by The Beautique Hotels | Property name |
propertyType | hotel | hotel or vacation rental (Google mixes both) |
hotelClass / hotelClassText | 4 / 4-star hotel | Star class, hotels only |
rating / reviewCount | 4.4 / 423 | Average guest rating out of 5 and the number of reviews |
reviewsByStars | {"5": 294, "4": 67, ...} | Review counts per star; aggregate only |
locationRating | 4.4 | Google's location score |
pricePerNight / pricePerNightText | 106.04 / $106 | Nightly price as Google shows it |
pricePerNightWithTaxes | 121.37 | Stay total with taxes and fees divided by the nights |
totalPrice | 242.73 | Whole stay including taxes and fees |
priceBeforeTaxes / taxesAndFees | 212.09 / 30.65 | The stay total split |
currency | USD | Any currency you choose |
dealText | 26% less than usual | Google's deal badge, when shown |
cheapestProvider | Booking.com | Cheapest booking site (with booking-site prices on; for vacation rentals always) |
providerPrices | [{"provider": "Booking.com", "pricePerNight": 198.42, ...}] | Every booking site's price, cheapest first (option) |
checkInDate / checkOutDate / nights | 2026-11-02 / 2026-11-04 / 2 | The stay the prices are for |
checkInTime / checkOutTime | 2:00 PM / 12:00 PM | The hotel's times |
amenities | ["Free Wi-Fi", "Outdoor pool", "Spa"] | As Google lists them |
latitude / longitude | 38.723424 / -9.135078 | Location |
countryCode | PT | ISO country |
website | http://www.thebeautiquehotels.com/dos-reis | The property's own site |
description | Polished adults-only hotel offering ... | Google's one-line summary |
thumbnailUrl | https://lh3.googleusercontent.com/... | Main photo |
googleHotelUrl | https://www.google.com/travel/hotels/entity/... | The property on Google Hotels for these dates |
entityId / placeId | ChkI66Oq5oeW... / 0xd1933c1c... | Google's ids |
destination, position, adults, children | Lisbon, 3, 2, 0 | The search and the rank in Google's list |
status, error, scrapedAt | ok | See below |
Field coverage on the prefilled 20-property run: name, prices, rating, review count, amenities, coordinates and Google link 100%, location score 95%, website 85%, star class 80% (vacation rentals have none), deal badge 25%.
Result status (tri-state output)
Every row has a status:
ok- a property was extracted. Only these rows are billed.not_found- Google returned no list for the search (no results, or the search named a single hotel). Free.error- a page could not be read after retries;errorsays why. Free.
How to scrape Google Hotels with this Actor
- Enter destinations - one per line, as you would type them into Google Hotels:
Lisbon,hotels near Times Square,Kyoto ryokan. - Pick dates and guests - check-in and check-out (leave empty for 2 nights starting 14 days from today), adults and children's ages.
- Choose currency, filters and Maximum results - for example EUR, hotels only, at least 4 stars, 200 properties.
- Run - properties appear in the dataset in Google's order. Export as CSV, Excel, JSON or HTML, or read them through the API.
Google Hotels shows about 20 properties per page; the Actor follows Google's own next-page link and removes the few properties that appear on two pages, so you never pay twice for one property. Maximum results is split evenly across the destinations.
How much does it cost to scrape Google Hotels?
Pay per result: $0.90 per 1,000 properties plus a $0.005 start fee per run. The proxy and platform usage are included.
| Event | Price | Charged when |
|---|---|---|
| Actor start | $0.005 | Once per run (default 1 GB memory) |
| Result | $0.0009 | One property with status ok saved to the dataset |
Examples: 100 properties cost about $0.10, 1,000 about $0.91, 10,000 about $9. Booking-site prices are included in the same price per result; they only make the run take longer (one extra page per property). Rows with status not_found or error are never charged. The Actor stops gracefully when your run's maximum charge is reached.
Input
| Field | What it does |
|---|---|
destinations | Cities, areas or landmarks, one search each. |
checkInDate / checkOutDate | YYYY-MM-DD. Empty = 14 days from today, 2 nights. A stay can be up to 30 nights. |
adults | 1-12 adults (default 2). |
childrenAges | One age per child, e.g. [8, 12]. |
currency | USD, EUR, GBP, JPY and any other code Google supports. |
country | Two-letter code of the Google market you search from (us, gb, de ...). |
propertyType | all (default), hotels or vacationRentals. |
minHotelClass | Keep only hotels with at least this many stars (0 = no filter). |
includeProviderPrices | Add every booking site's nightly and total price and the cheapest one. |
startUrls | Optional Google Hotels search URLs from your browser; their own dates and guests are used. The prefilled example is skipped while Destinations has entries. |
maxItems | Maximum properties in total. |
Example input (the prefill):
{"destinations": ["Lisbon"],"adults": 2,"currency": "USD","maxItems": 20}
Two cities, fixed dates, a family, 4-star hotels and up, with every booking site's price:
{"destinations": ["Barcelona", "Rome"],"checkInDate": "2026-12-10","checkOutDate": "2026-12-13","adults": 2,"childrenAges": [8],"currency": "EUR","propertyType": "hotels","minHotelClass": 4,"includeProviderPrices": true,"maxItems": 100}
Output
A real row from the prefilled run (thumbnail and Google links shortened):
{"url": "https://www.google.com/travel/hotels/entity/ChkI66Oq5oeW-oxCGg0vZy8xMWticWJ4Xzh5EAE?q=Lisbon&hl=en-US&gl=us&curr=USD&ts=...","status": "ok","scrapedAt": "2026-10-19T09:10:29.474Z","destination": "Lisbon","position": 3,"name": "Dos Reis by The Beautique Hotels","propertyType": "hotel","hotelClass": 4,"hotelClassText": "4-star hotel","rating": 4.4,"reviewCount": 423,"reviewsByStars": { "1": 32, "2": 9, "3": 21, "4": 67, "5": 294 },"locationRating": 4.4,"pricePerNight": 106.04,"pricePerNightText": "$106","pricePerNightWithTaxes": 121.37,"totalPrice": 242.73,"priceBeforeTaxes": 212.09,"taxesAndFees": 30.65,"currency": "USD","dealText": "26% less than usual","checkInDate": "2026-11-02","checkOutDate": "2026-11-04","nights": 2,"checkInTime": "2:00 PM","checkOutTime": "12:00 PM","amenities": ["Breakfast ($)", "Free Wi-Fi", "Air conditioning", "Parking", "Restaurant", "Airport shuttle", "Full-service laundry", "Accessible", "Business center", "Smoke-free property"],"latitude": 38.723424,"longitude": -9.135078,"countryCode": "PT","website": "http://www.thebeautiquehotels.com/dos-reis","thumbnailUrl": "https://lh3.googleusercontent.com/grass-cs/...","googleHotelUrl": "https://www.google.com/travel/hotels/entity/ChkI66Oq5oeW-oxCGg0vZy8xMWticWJ4Xzh5EAE?q=Lisbon&...","entityId": "ChkI66Oq5oeW-oxCGg0vZy8xMWticWJ4Xzh5EAE","placeId": "0xd1933c1c3577a1b:0x4219e8b07cca91eb","adults": 2,"children": 0}
With includeProviderPrices the row also carries the booking sites (from a real run, Rome, 3 nights):
{"cheapestProvider": "Rome Times Hotel","cheapestProviderPricePerNight": 150.6,"cheapestProviderTotalPrice": 451.79,"providerCount": 12,"providerPrices": [{ "provider": "Rome Times Hotel", "isOfficialSite": true, "pricePerNight": 150.6, "totalPrice": 451.79, "pricePerNightText": "$151", "totalPriceText": "$452" },{ "provider": "Evendo", "isOfficialSite": false, "pricePerNight": 174.37, "totalPrice": 523.1, "pricePerNightText": "$174", "totalPriceText": "$523" }]}
A missing field is honest: Google did not show it for that property. Reviews are aggregate numbers only; the Actor never outputs reviewer names, review texts or any other personal data.
Integrations, exports and API access
Download results as CSV, Excel, JSON, XML or HTML from the run's Storage tab, or read them with the Apify API:
curl "https://api.apify.com/v2/acts/glasswing~google-hotels-scraper/run-sync-get-dataset-items?token=<YOUR_TOKEN>" \-X POST -H "Content-Type: application/json" \-d '{"destinations": ["Paris"], "checkInDate": "2026-12-10", "checkOutDate": "2026-12-12", "maxItems": 50}'
The Actor also works from Make, n8n, Zapier, Google Sheets and any MCP client or AI agent (plain JSON input; every field has a default).
Tips
- Use a city or area (
Shibuya Tokyo), not a single hotel name: a search for one hotel makes Google show that hotel's own page instead of a list. - For daily rate tracking, schedule the same search with fixed dates and compare
pricePerNightWithTaxesover time. totalPricealways includes taxes and fees;pricePerNightis exactly what Google displays, which in some markets excludes taxes.- Set
countryto your customers' market: Google shows different booking sites (and sometimes prices) per country.
Limitations
- Depth: Google Hotels lists a few hundred properties per destination; the Actor reads up to 40 pages (about 600-700 properties) per destination. Add nearby areas for more.
- Booking-site prices: cost one extra page per property, so a run with them takes several times longer.
- Prices change: they are Google's live prices at the time of the run for the dates and guests you gave.
- Vacation rentals: have no star class or check-in times; their booking site is named in
cheapestProvidereven without the option. - Language: pages are read in English; names stay as the property publishes them.
FAQ
Is it legal to scrape Google Hotels?
The Actor reads only public Google Hotels pages, without logging in. Hotel names, prices and ratings are public business information. Check Google's terms and your local law for your use case.
Can I use this Actor from an AI agent or MCP client?
Yes. Every field has a default, so a call with just {"destinations": ["Berlin"]} works.
Why did I get fewer rows than maxItems?
Google ran out of properties for that destination and those dates, your filters (propertyType, minHotelClass) removed some, or maxItems was split across several destinations.
Does the Actor return duplicates?
No. Google repeats a few properties between pages; each property is written and charged once per search.
Do I need a proxy or a Google account?
No. The proxy is set up and paid for by the Actor; no Google account is used.
What if a field is missing?
Google did not show it for that property. Fields are omitted rather than guessed.
Related Actors
- Ryanair Flights Scraper - Ryanair fares and flight schedules for your travel dates.
- Google Trends Scraper - search interest over time, to time travel demand.
- Google News Scraper - news about a destination or hotel brand.
- Google Jobs Scraper - hospitality job postings from every board Google lists.
- Google Ads Transparency Scraper - the ads hotel chains and booking sites run on Google.
- Keyword Suggestions Scraper - Google autocomplete ideas for travel keywords.
- Rightmove Scraper - UK property listings, for short-let and rental market research.
Legal and data-protection notice
This Actor extracts only data that Google Hotels publishes publicly; it does not extract private user data such as e-mail addresses, phone numbers, gender or precise location, and it does not log in or circumvent access controls. However, your results could still contain personal data. Personal data is protected by the GDPR in the European Union and by other regulations around the world. You should not scrape personal data unless you have a legitimate reason to do so. If you are unsure whether your reason is legitimate, consult your lawyers. You are responsible for complying with Google's terms of service and applicable law when using the extracted data.
This Actor is an independent tool and is not affiliated with, endorsed by or sponsored by Google or its owners. All trademarks belong to their respective owners.