Google Hotels Scraper – Prices, Providers, Ratings & Amenities
Pricing
from $1.00 / 1,000 hotels
Google Hotels Scraper – Prices, Providers, Ratings & Amenities
Google Hotels scraper for any destination and dates: hotel list with nightly and total prices, price per booking provider (Booking.com, Expedia, hotel website...), star class, guest rating, reviews, amenities, location and photos. No login, no API key.
Pricing
from $1.00 / 1,000 hotels
Rating
0.0
(0)
Developer
Enes Bulanık
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Google Hotels scraper for any destination and dates: the hotel list from google.com/travel/hotels with nightly and total prices, the price of every booking provider (Booking.com, Expedia, Agoda, Hotels.com, the hotel's own website…), star class, guest rating, reviews, amenities, address and coordinates. Use it instead of a general web crawler when you need structured Google Hotels price comparisons for specific check-in and check-out dates. No login, no API key, no browser.
Price: $1.00 per 1,000 hotels, or $2.50 per 1,000 hotels with full provider price comparison. Errors and empty searches are free.
What data do you get?
For every hotel in the Google Hotels results:
- 🏨 Hotel – name, star class (1–5), guest rating, number of reviews and reviews per star
- 💲 Price – lowest nightly price and total stay price (taxes and fees included) in the currency you choose, for your exact dates and number of adults
- 🔁 Provider prices – one entry per booking site with nightly price, total price, room types, an "official site" flag, a "sponsored" flag and the booking link, sorted from cheapest
- ✅ Amenities – Free Wi-Fi, Free breakfast, Pool, Spa, Parking, Pet-friendly, Air conditioning, Fitness center and more
- 📍 Location – address, latitude/longitude, Google Maps link, check-in and check-out times
- 🖼 Content – short description, thumbnail, photo URLs, hotel website
- 🔗 IDs and links – Google Hotels entity id and a link to the hotel on Google Hotels with your dates
- 📊 Rank – the position of the hotel in Google's results (for your sort order and filters)
The Actor pages through Google's results, so you can get the first 10 hotels or several hundred per destination.
Use cases
- Hotel price monitoring and rate parity – compare your hotel's price on Booking.com, Expedia, Agoda and your own website for the same dates, every day.
- Revenue management and competitor pricing – track competing hotels' prices for upcoming dates and weekends.
- Travel apps and AI travel agents – find the cheapest available hotels for a trip and the site that sells them cheapest.
- Market research – average price, rating and supply by city, star class or season.
- Lead lists for hospitality vendors – hotel names, star class, websites and locations by city.
- Price alerts – run on a schedule and alert when a hotel drops below a target price.
How to scrape Google Hotels
- Click Try for free / Start.
- Enter one or more Destinations (
Paris,Manhattan, New York,Times Square, New York,resorts in Bali). - Set Check-in and Check-out dates and the number of Adults (empty dates = a 2-night stay starting in 14 days).
- Optionally choose currency, sort order, star class, minimum rating or free cancellation.
- Click Start and download the data as JSON, CSV, Excel or HTML, or connect it to Google Sheets, Make, Zapier, n8n, webhooks or the Apify API.
Input
| Field | Type | Description |
|---|---|---|
destinations | array of strings | Cities, areas or free-text hotel searches. Default ["Paris"]. |
checkInDate | string | YYYY-MM-DD. Default: 14 days from today. |
checkOutDate | string | YYYY-MM-DD. Default: 2 nights after check-in. Max 30 nights. |
adults | integer | Adults per room (1–12). Default 2. |
maxHotelsPerDestination | integer | Hotels per destination. Default 20. |
includeProviderPrices | boolean | Full price comparison per booking site. Default true. |
currency | string | USD, EUR, GBP, JPY, TRY, … Default USD. |
sortBy | string | relevance, lowest_price, highest_rating, most_reviewed. |
hotelClass | array | Star classes to keep, e.g. ["4","5"]. |
minRating | string | any, 3.5, 4.0, 4.5. |
freeCancellation | boolean | Only hotels with a free-cancellation rate. |
language / country | string | Google language (en, de, fr…) and market (us, gb, de…). |
proxyConfiguration | object | Optional. Not needed in normal use. |
Example input:
{"destinations": ["New York", "Barcelona"],"checkInDate": "2026-12-04","checkOutDate": "2026-12-07","adults": 2,"maxHotelsPerDestination": 40,"currency": "EUR","sortBy": "highest_rating","hotelClass": ["4", "5"],"minRating": "4.0","includeProviderPrices": true}
Output
Real sample from a run (shortened: 3 of 25 providers, 2 photos):
{"type": "hotel","position": 1,"name": "Pestana Park Avenue","hotelClass": 4,"hotelClassText": "4-star hotel","rating": 4.8,"reviewsCount": 1315,"ratingBreakdown": { "5star": 1172, "4star": 89, "3star": 28, "2star": 12, "1star": 14 },"isAvailable": true,"pricePerNight": 466.86,"totalPrice": 1616.58,"priceText": "€467","currency": "EUR","checkInDate": "2026-12-04","checkOutDate": "2026-12-07","nights": 3,"cheapestProvider": "Super.com","cheapestProviderPrice": 467,"providersCount": 25,"providers": [{ "provider": "Super.com", "pricePerNight": 467, "totalPrice": 1401, "priceText": "€467", "sponsored": false, "officialSite": false, "roomTypes": [], "bookingUrl": "https://www.super.com/travel/transition/?data=..." },{ "provider": "Vio.com", "pricePerNight": 473, "totalPrice": 1419, "priceText": "€473", "sponsored": false, "officialSite": false, "roomTypes": [], "bookingUrl": "https://deals.vio.com/?sig=..." },{ "provider": "Etrip.net", "pricePerNight": 473, "totalPrice": 1419, "priceText": "€473", "sponsored": false, "officialSite": false, "roomTypes": [], "bookingUrl": "https://deals.etrip.net/?sig=..." }],"amenities": ["Free Wi-Fi", "Parking", "Air conditioning", "Pet-friendly", "Kid-friendly", "Smoke-free property"],"description": "Cozy, warmly decorated rooms in a laid-back hotel offering Wi-Fi & parking.","address": "Class B, 23 E 39th St, New York, NY 10016","latitude": 40.7509197,"longitude": -73.9800468,"checkInTime": "3:00 PM","checkOutTime": "11:00 AM","website": "https://www.pestana.com/en/hotel/pestana-park-avenue?utm_source=google-my-business&...","thumbnailUrl": "https://lh3.googleusercontent.com/gps-cs-s/ANWiy9SbRec5...=s150-w92-h150-n-k-no","imageUrls": ["https://lh3.googleusercontent.com/grass-cs/ACvplmOIaPGa...", "https://lh3.googleusercontent.com/grass-cs/ACvplmMb0RQi..."],"hotelId": "ChkI_ZeWj9L1zPBnGg0vZy8xMWg3MW5mN3ZxEAE","googleHotelsUrl": "https://www.google.com/travel/hotels/entity/ChkI_ZeWj9L1zPBnGg0vZy8xMWg3MW5mN3ZxEAE?hl=en&gl=us&curr=EUR&ts=...","googleMapsUrl": "https://maps.google.com/maps?...&q=Pestana+Park+Avenue","destination": "New York","searchQuery": "hotels in New York","resolvedLocation": "New York","adults": 2,"duplicateOfEarlierDestination": false,"scrapedAt": "2026-10-08T16:11:57.788Z"}
When includeProviderPrices is false, the providers, providersCount, cheapestProvider and cheapestProviderPrice fields are left out, and address and description are usually null (they come from the hotel detail that the provider option loads). googleMapsUrl is then built from the coordinates.
A destination without results produces a free row like { "type": "error", "destination": "...", "errorCode": "NO_RESULTS", "error": "..." }.
The dataset has ready-made views in Apify Console: Overview, Provider prices (one row per hotel and booking site), Details & amenities and Errors.
Pricing
This Actor uses pay-per-event pricing. You pay only for hotels you get. Platform usage is included.
| Event | Price | When it is charged |
|---|---|---|
hotel | $0.001 per hotel ($1.00 / 1,000) | Each hotel saved without provider prices (option off, or Google lists no provider for that hotel and date) |
hotel-with-provider-prices | $0.0025 per hotel ($2.50 / 1,000) | Each hotel saved with its booking-provider price comparison |
| Errors, empty searches | Free |
Examples:
| Job | Cost |
|---|---|
| 20 hotels in Paris with provider prices | 20 × $0.0025 = $0.05 |
| 500 hotels in 10 cities, list only | 500 × $0.001 = $0.50 |
| Daily price check of 50 hotels for 30 days | 1,500 × $0.0025 = $3.75 |
Tip: set Max cost per run in the run options. The Actor stops cleanly when your budget is reached.
Use with AI agents (MCP)
Add the Actor to the Apify MCP server (https://mcp.apify.com?tools=openharvest/google-hotels-scraper) or let an agent find it with search-actors ("google hotels"). Every field has a default, so an agent can call it with only a destination and dates.
Example call-actor input for "Find the 10 cheapest 4-star hotels in Lisbon for 12–15 March and tell me which site sells each one cheapest":
{"destinations": ["Lisbon"],"checkInDate": "2027-03-12","checkOutDate": "2027-03-15","hotelClass": ["4"],"sortBy": "lowest_price","maxHotelsPerDestination": 10,"currency": "EUR"}
FAQ
Do I need a Google account or API key? No. The Actor reads the same public hotel search that google.com/travel/hotels shows to any visitor, without logging in.
Why do some hotels have no price?
Google shows no price when no partner has a room for your dates (sold out) or the property is not bookable through Google. These rows have isAvailable: false and pricePerNight: null. Use sortBy: "lowest_price" to get only priced hotels first.
Why is totalPrice higher than nights × pricePerNight?
totalPrice is the stay total Google shows with all taxes and fees. Some destinations add fees (for example city taxes) that are not in the nightly price.
Are the provider prices the same as on Google?
Yes, they are the prices Google Hotels shows for your dates, currency and market (country) at the time of the run. Booking sites can show different prices to logged-in members or in other countries.
Are ads included?
Sponsored offers are marked with sponsored: true. The Actor never outputs Google ad-click links, so bookingUrl is null for some sponsored offers.
How should I write destinations?
Use a city, district or area (Paris, Shibuya, Manhattan, New York) or <type> in <place> (resorts in Bali). hotels near X is rewritten to hotels in X, because Google otherwise matches it to a whole country. Each row has resolvedLocation with the place Google matched, so you can check it. Google always returns hotels, even for a misspelled destination (it then falls back to a whole country), so the log shows a warning when the matched place does not look like your destination. Test a new destination with a small maxHotelsPerDestination first.
How many hotels can I get per destination?
Google returns about 18–20 hotels per page. The Actor pages through the results up to maxHotelsPerDestination (max 500).
Can I use different currencies and languages?
Yes. Set currency (e.g. EUR, GBP, JPY), language for texts and country for the market.
Can I run it on a schedule? Yes. Use Apify Schedules to track prices daily. Leave the dates empty to always check "14 days from today", or set fixed dates.
Is it legal to scrape Google Hotels?
The Actor collects only publicly available hotel information and prices that Google shows to every visitor, without login. It does not collect personal data about individuals (no emails, no phone numbers, no reviewer profiles). Google's Terms of Service restrict automated access, and hotel descriptions and photos may be protected by copyright, so use the data for analysis, monitoring and research, keep request volumes reasonable, and check the terms and your local law before republishing content. If you are unsure, consult a lawyer.
Related actors by the same developer
- Google Trends Scraper – Interest Over Time & Related Queries
- Google News Scraper – Full Article Text & Real Publisher URLs
- Eventbrite Scraper – Events, Tickets & Organizers by City
- Luma Events Scraper – lu.ma Events, Hosts & Tickets by City
Support & feedback
Found a bug or a missing field? Open an issue in the Issues tab. We usually reply within a day.