Google Hotels Scraper - 54 Fields, 90-Date Price Curve
Pricing
from $0.69 / 1,000 hotels
Google Hotels Scraper - 54 Fields, 90-Date Price Curve
Scrape Google Hotels with 54 fields per hotel and every booking site's price nested inside the row. Price the same hotels across up to 90 check-in dates in one run. $0.99 per 1,000 hotels.
Pricing
from $0.69 / 1,000 hotels
Rating
0.0
(0)
Developer
Zen Studio
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
13 hours ago
Last modified
Categories
Share
Google Hotels Scraper | Live Prices from Every Booking Site, Ratings & Amenities (2026)
From Zen Studio, creators of Google Maps Scraper and Google Maps Reviews Scraper. Extend your hotel research with business details and guest review histories from the same studio.
Why choose this actor?
Compare booking sites and check-in dates together. Collect the offers Google shows from Booking.com, Expedia, Agoda and hotel websites. Price stays across up to 90 consecutive check-in dates in one run, keeping the same stay length. Use relative dates to keep scheduled comparisons moving forward.
See what each rate includes. Export nightly prices, taxes and fees, room options, perks and cancellation terms where available. Booking-site offers stay grouped under their hotel, with a separate dataset view for comparing sites.
Add the context behind the price. Hotel records include amenities, rating breakdowns and guest-review topics with positive and negative mention counts. Enable booking-site comparison for available hotel addresses and phone numbers, too.
Quick start
Start with up to three hotels across three check-in dates, each for a two-night stay. Change the destination, then increase sweepDays up to 90 when you are ready.
{"searchQueries": ["hotels in Lisbon"],"checkIn": "30","checkOut": "32","sweepDays": 3,"currency": "EUR","countryCode": "pt","maxResultsPerQuery": 3,"includeRates": true,"includeSponsored": false}
Open actor input to choose your destination and dates. Booking-site comparison is optional and charged separately per hotel/date with returned offers. The example enables it; partner availability varies by hotel and stay. JSON preserves nested offers; the Booking sites view makes them easier to compare.
| Zen Studio · Travel, Maps & Reviews | ||||
You are here | Business details | Guest reviews | Track every booking site | Yelp & Tripadvisor too |
Key Features
- Every booking site's price, per hotel — the whole comparison Google shows, not just the few it features above the fold: a New York search returned between 6 and 40 sites per hotel. Each carries its price per night and for the stay, before and after taxes, the tax split, free-cancellation terms, perks, what's included, the rooms behind it, and the booking site's own link for that rate.
- A price curve, not a snapshot —
sweepDaysprices the same hotels across up to 90 consecutive check-in dates in one run, one row per hotel per date. Write the dates relatively and a scheduled run rolls forward on its own. - A market summary with every search — how many hotels Google reports for the area (far more than any one search hands out), every hotel brand present, and the price distribution. Free: it rides a page already fetched.
- One row per hotel, not one row per page — opens in a spreadsheet and sorts by price on the first try.
- 54 fields on every hotel, including the full 5→1 rating histogram, review topics with positive and negative mention counts and a sentiment score, amenities, check-in and check-out times, and travel times to nearby airports and transit.
- No rating floor imposed — Google's own site quietly hides everything under 4.0, which is about a fifth of a large market. This returns all of it unless you ask for a floor.
- Sponsored listings kept and labelled — paid placements come back flagged, in the same columns as organic results, so you can study them or filter them out. Google publishes far less about a paid listing than an organic one: expect a name, price, rating, star class, amenities and the advertiser's logo, and no address, coordinates or Maps id.
- Vacation rentals included — they arrive in the same stream, labelled, with their layout: sleeps, bedrooms, bathrooms, beds and floor area.
- 72 currencies, any language, any country — verified end to end in Tokyo, Seoul, Cairo, Moscow, São Paulo and Bangkok.
- Free tier — 10 lifetime runs with up to 10 rows per run. No credit card required.
Copy to your AI assistant
zen-studio/google-hotels-scraper on Apify. Google Hotels search priced for a stay window, one row per hotel, with every booking site's rate nested as rates[]. Call ApifyClient("TOKEN").actor("zen-studio/google-hotels-scraper").call(run_input={...}), then client.dataset(run["defaultDatasetId"]).list_items().items. Provide searchQueries + checkIn + checkOut, OR propertyUrls (hotel name, Google Hotels link or hotel id) + checkIn + checkOut, OR autocompleteQueries (no dates). Dates accept "2026-11-20" or a number of days from today like "30". sweepDays:N repeats the search across N consecutive check-in dates for a price curve, one row per hotel per date. includeRates:true adds rates[], address and phone; each rates[] entry carries nightlyRate/stayTotal before and after taxes and partnerUrl, the booking site's own link for that rate. Rows where recordType=="market" are per-search summaries (totalResults, brands, priceDistribution), not hotels; filter them out if you only want hotels. About 1,000 hotels max per search query - split a large city by district. Full spec: GET https://api.apify.com/v2/acts/zen-studio~google-hotels-scraper/builds/default (Bearer TOKEN) → inputSchema, actorDefinition.storages.dataset, readme. Token: https://console.apify.com/account/integrations
How to Scrape Google Hotels Data
Basic — every hotel in a city for your dates
{"searchQueries": ["hotels in Barcelona"],"checkIn": "2026-11-20","checkOut": "2026-11-23","currency": "EUR","countryCode": "es","maxResultsPerQuery": 200}
Price comparison — every booking site, per hotel
{"searchQueries": ["hotels in Lisbon"],"checkIn": "2026-11-20","checkOut": "2026-11-23","currency": "EUR","countryCode": "pt","maxResultsPerQuery": 100,"includeRates": true}
Each row gains rates[] — one entry per booking site — plus the hotel's address, phone, placeId, its full photo gallery with attribution, and the nearby and similar hotels Google lists beside it. Switch to the Booking sites dataset view for one line per site.
Price curve — the same hotels across many dates
{"searchQueries": ["hotels in Barcelona"],"checkIn": "30","checkOut": "32","sweepDays": 30,"currency": "EUR","countryCode": "es","maxResultsPerQuery": 100}
sweepDays repeats the whole search for that many consecutive check-in dates, keeping the stay length. One run, one dataset, one row per hotel per date — a month-long price curve you can pivot straight away, instead of thirty scheduled runs stitched together afterwards.
Dates can be written as a number of days from today ("30") as well as a calendar date ("2026-11-20"). Use the relative form in a scheduled run and it never goes stale; a pinned date would price the same night forever.
Specific hotels — no search
{"propertyUrls": ["Park Hyatt Tokyo","https://www.google.com/travel/hotels/entity/ChcIhMamuuLmz70BGgsvZy8xdGttbmdnYhAB"],"checkIn": "2026-11-20","checkOut": "2026-11-23","includeRates": true}
A hotel name works, as well as a Google Hotels link or a propertyToken from an earlier run — paste your competitor list straight in. Each name is resolved to a single property and billed as one hotel, so you are not paying for a whole city to reach the one you wanted. No search runs in this mode.
Search suggestions — keyword research, no dates needed
{"autocompleteQueries": ["hotels in par", "park hyatt tok", "maui res"]}
Returns the suggestions Google offers a real visitor, ranked as they appear. Some of the ones that name a property also carry its street address and a Google Maps link; which ones do varies with the country you search from, so treat those fields as a bonus rather than a guarantee.
Filtered — five stars, spa, best rated first
{"searchQueries": ["hotels in Dubai"],"checkIn": "2026-12-10","checkOut": "2026-12-14","currency": "AED","countryCode": "ae","hotelClass": ["5"],"amenities": ["spa", "outdoor_pool", "free_wifi"],"minRating": "4.5","sortBy": "highestRating","maxResultsPerQuery": 100}
Budget band — under €150 a night, free cancellation
{"searchQueries": ["hotels in Prague"],"checkIn": "2026-11-20","checkOut": "2026-11-22","currency": "EUR","countryCode": "cz","maxPrice": 150,"freeCancellation": true,"sortBy": "lowestPrice","maxResultsPerQuery": 150}
Vacation rentals only
{"searchQueries": ["vacation rentals in Algarve"],"checkIn": "2026-11-20","checkOut": "2026-11-27","currency": "EUR","countryCode": "pt","propertyTypes": ["vacation_rental"],"maxResultsPerQuery": 100}
Rentals carry rentalDetails — sleeps, bedrooms, bathrooms, beds, floor area — and their own labelled amenities. They are sold on one site, so they have no price comparison and are skipped when includeRates is on.
Whole city, past the per-search ceiling
One search query tops out around 1,000 hotels no matter how many Google claims to have. Split by district:
{"searchQueries": ["hotels in Midtown Manhattan","hotels in Lower Manhattan","hotels in Upper East Side New York","hotels in Brooklyn","hotels in Queens New York"],"checkIn": "2026-11-20","checkOut": "2026-11-23","maxResultsPerQuery": 1000}
Searches run in parallel and hotels are deduplicated across them, so overlapping districts never bill twice.
Trim the export
{"searchQueries": ["hotels in Rome"],"checkIn": "2026-11-20","checkOut": "2026-11-23","excludeFields": ["images", "travelTimes", "reviewTopics", "ratingHistogram"],"maxResultsPerQuery": 500}
What Data Can You Extract from Google Hotels?
Identity — name, propertyType (hotel or vacation rental), category (hotel, resort, motel, hostel, inn, extended stay), hotelClass (localised), stars, description, sponsored, position.
Price for your stay — currency, nightlyRate and nightlyRateValue, stayTotal and stayTotalValue, stayBeforeTaxes, taxesAndFees, otherFees, dealLabel ("18% less than usual"), checkIn, checkOut, nights.
Every booking site (with includeRates) — rates[], each entry carrying partner, officialSite, the price per night and for the whole stay both before and after taxes (nightlyRate, nightlyRateWithTaxes, stayTotal, stayTotalWithTaxes, each with a numeric twin), taxesAndFees, freeCancellation and freeCancellationUntil, perks, includes, logo, rooms[] with the bed type and what each room includes, and partnerUrl — the booking site's own link for that rate, carrying your dates, the room and the rate code. A site Google only shows above the fold is quoted per night without a stay total, because the figure it publishes beside that price does not count nights.
Reputation — rating, reviewsCount, ratingHistogram (the full 5→1 counts, not just the average), reviewTopics (topic, mentions, positive and negative counts, and Google's own signed sentiment score), categoryScores, ratingSources (in practice Google's own score; Google rarely puts a review partner on a search card).
Practical — address, phone, phoneLink (a dialable tel: link), website, checkInTime, checkOutTime, amenities (named) and amenityIds, travelTimes to nearby airports, stations and landmarks with the travel mode, latitude, longitude, countryCode.
Media — images (about ten per hotel), thumbnail, gallery (the property's own photo set, roughly twice the strip a search card carries, each shot with the name of whoever took it), logo on sponsored rows.
Beyond this hotel — nearbyProperties and similarProperties, each with a name, how far away it is and its own hotel id, so you can feed one straight back in as a lookup. attributeGroups carries Google's own labelled groups, such as Crowd → LGBTQ+ friendly.
Rentals — rentalDetails with sleeps, bedrooms, bathrooms, beds, area, layout and the raw facts strip.
Joins and provenance — bookingUrl (the hotel's own Google page), propertyToken, hexId, placeId, googleMapsUrl, searchQuery, searchLocation.
Two notes worth knowing before you build on the numbers:
- Compute on
stayTotalValue, not onstayTotal.stayTotalis the string Google displays, and in US results it usually shows the room rate before tax: across 40 New York hotels only 2 matched the full total, while 14 matched the pre-tax figure exactly.stayBeforeTaxes + taxesAndFees + otherFeesalways equalsstayTotalValue, so that is the number to sum, compare and chart. Both are published because the display string is what a guest sees on the page. categoryScoresare published under Google's own numeric ids. Google ships five scores per hotel with no labels attached anywhere on any of its surfaces, so inventing names for them would be a guess. The ids are stable across every hotel.
Output Example
One hotel, every column the Actor publishes. Nothing is omitted — a key that is
empty here is empty because that hotel has no such thing (logo belongs to
sponsored rows, rentalDetails to vacation rentals), not because it was left out.
{"position": 1,"name": "Hyatt Grand Central New York","propertyType": "hotel","category": "hotel","sponsored": false,"hotelClass": "3-star hotel","stars": 3,"description": "Sleek property offering polished rooms with Wi-Fi access, plus a fitness center.","latitude": 40.7520617,"longitude": -73.9762995,"countryCode": "US","website": "https://www.hyatt.com/hyatt-hotels/en-US/nycgh-hyatt-grand-cen…","rating": 3.9,"reviewsCount": 8729,"ratingHistogram": {"5": 4007,"4": 2399,"3": 992,"2": 502,"1": 829},"categoryScores": {"4": 4.8,"1": 4.9,"5": 4.7,"2": 4.8,"3": 4.5},"ratingSources": [{"rating": 3.9,"reviewsCount": 8729,"icon": "https://www.gstatic.com/images/branding/product/1x/googleg_48d…"}],"reviewTopics": [{"topic": "Location","mentions": 1476,"positive": 1149,"negative": 202,"sentiment": 0.57},{"topic": "Service","mentions": 1615,"positive": 896,"negative": 633,"sentiment": 0},"… 4 more"],"currency": "USD","nightlyRate": "$221","nightlyRateValue": 220.5,"stayTotal": "$662","stayTotalValue": 769.62,"stayBeforeTaxes": 541.53,"taxesAndFees": 108.12,"otherFees": 119.97,"dealLabel": null,"bookingUrl": "https://www.google.com/travel/hotels/entity/ChYImeqn5sP5xYFQGg…","checkIn": "2026-11-20","checkOut": "2026-11-23","nights": 3,"checkInTime": "4:00 PM","checkOutTime": "11:00 AM","amenities": ["Free Wi-Fi","Parking ($)","Air conditioning","Fitness center","Bar","Restaurant","Room service","Full-service laundry","Accessible","Business center","Smoke-free property"],"amenityIds": [29,17,2,8,4,23,24,31,27,7,25],"rentalDetails": null,"images": ["https://lh3.googleusercontent.com/grass-cs/ACvplmPf6xNstv9uUC-…","… 8 more"],"thumbnail": "https://lh3.googleusercontent.com/grass-cs/ACvplmPf6xNstv9uUC-…","travelTimes": [{"name": "Grand Central","durations": ["2 min"],"mode": null},{"name": "Grand Central-42 St","durations": ["1 min"],"mode": "Subway"},"… 2 more"],"searchLocation": "New York","propertyToken": "ChYImeqn5sP5xYFQGgovbS8wOXJ0bXZ2EAE","hexId": "0x89c259022d712db1:0x500317cc3cc9f519","googleMapsUrl": "https://www.google.com/maps?cid=5765478113925002521","address": "at Grand Central Terminal, 109 E 42nd St, New York, NY 10017","phone": "(212) 883-1234","phoneLink": "tel:+12128831234","placeId": "ChIJsS1xLQJZwokRGfXJPMwXA1A","rates": [{"partner": "Hyatt Grand Central New York","officialSite": true,"nightlyRate": "$278","nightlyRateValue": 278.0,"nightlyRateWithTaxes": "$323","nightlyRateWithTaxesValue": 323.0,"stayTotal": "$835","stayTotalValue": 835.0,"stayTotalWithTaxes": "$969","stayTotalWithTaxesValue": 969.0,"taxesAndFees": 134.0,"freeCancellation": null,"freeCancellationUntil": "Nov 16","perks": ["Get a lower price with free enrollment"],"includes": null,"rooms": null,"logo": "https://www.gstatic.com/travel-hotels/branding/139419535942450…","partnerUrl": "https://www.hyatt.com/shop/NYCGH?rooms=1&adults=2&checkinDate=…"},{"partner": "KAYAK.com","officialSite": false,"nightlyRate": "$221","nightlyRateValue": 221.0,"nightlyRateWithTaxes": "$257","nightlyRateWithTaxesValue": 257.0,"stayTotal": "$662","stayTotalValue": 662.0,"stayTotalWithTaxes": "$770","stayTotalWithTaxesValue": 770.0,"taxesAndFees": 108.0,"freeCancellation": null,"freeCancellationUntil": null,"perks": null,"includes": null,"rooms": null,"logo": "https://www.gstatic.com/travel-hotels/branding/6417d44c-c676-4…","partnerUrl": "https://www.kayak.com/semi/ha/hotel_ads/33380/en.html?utm_sour…"},"… 36 more"],"searchQuery": "hotels in New York","gallery": [{"url": "https://lh3.googleusercontent.com/gps-cs-s/AHRPTWls6AGW0eB6B4e…","width": 252,"height": 308,"author": "Hyatt Grand Central New York","authorProfile": "https://maps.google.com/maps/contrib/105556881347805005639"},"… 15 more"],"attributeGroups": null,"nearbyProperties": [{"name": "Hotel Riu Plaza New York Times Square","distance": "0.8 mi away","latitude": null,"longitude": null,"propertyToken": "CgoIvcPg9peb2pNSEAE"},{"name": "New York Marriott Marquis","distance": "0.7 mi away","latitude": null,"longitude": null,"propertyToken": "CgoIksaK9_ij5_kYEAE"},"… 4 more"],"similarProperties": [{"name": "Chic 1 Bedroom Apartment in Midtown Manhattan - One-Bedroom Apartment","distance": "0.1 mi away","latitude": 40.752708,"longitude": -73.97438799999999,"propertyToken": "CiQIpem7_f2Es8NtEIqc6bS6nY_4vAEaDS9nLzExenltcGYwcW4QAg"},{"name": "Delightful 2-bedroom apartment with AC, fitness room in vibrant New York","distance": "0.75 mi away","latitude": 40.755092999999995,"longitude": -73.981049,"propertyToken": "CiUIuOybgoyRvK6TARCEoYz7zc7X8dkBGg0vZy8xMXg3Z3RnYmxjEAI"},"… 4 more"],"logo": null}
Long lists are abbreviated above only for reading; a real row carries every entry.
Other record types in the same dataset
A market summary, one per search, delivered free because it rides a page already fetched:
{"recordType": "market","searchQuery": "hotels in lisbon","searchLocation": "hotels in lisbon","checkIn": "2026-11-20","checkOut": "2026-11-23","currency": "EUR","totalResults": 11413,"priceDistribution": [0,0,0,0,0,0,0,1,5,8,18,43,72,92,100,86,65,61,47,35,30,15,68],"priceBandTop": 150,"brands": [{"brand": "Accor Live Limitless","brandId": 33},{"brand": "Andaz","brandId": 116},{"brand": "Autograph Collection","brandId": 59},{"brand": "B&B Hotels","brandId": 98},{"brand": "Curio Collection","brandId": 151},{"brand": "Design Hotels","brandId": 287},"… 38 more"],"brandsCount": 44}
A search suggestion, from autocompleteQueries:
{"recordType": "suggestion","typed": "park hyatt tok","position": 1,"suggestion": "Park Hyatt Tokyo","normalisedQuery": "park hyatt tokyo","address": "2, 3 Chome-7-1 Nishishinjuku, Shinjuku City","thumbnail": "https://encrypted-tbn3.gstatic.com/images?q=tbn:ANd9GcSk…","entityId": "/g/120ylk23","cid": "3231512592087154070","googleMapsUrl": "https://www.google.com/maps?cid=3231512592087154070"}
A vacation rental carries the same columns, with rentalDetails filled in and no rate comparison — rentals sell on one site:
{"name": "Lisbon Lodge 2 - Double Room","propertyType": "vacation_rental","category": null,"nightlyRate": "€45","stayTotalValue": 134.74,"rentalDetails": {"facts": ["Entire house","Sleeps 2","1 bedroom","2 bathrooms","1 bed"],"sleeps": 2,"bedrooms": 1,"beds": 1,"bathrooms": 2.0,"layout": "House"},"amenities": ["Air conditioning","Kid-friendly","Crib","Elevator","Heating","Kitchen","Microwave","Oven stove","Smoke-free","Cable TV","Wheelchair accessible","Free Wi-Fi"],"bookingUrl": "https://www.google.com/travel/hotels/entity/ChkQ44-ZmLTyx9JGGg0vZy8xMXZ5X2ZncXFfEAI","propertyToken": "ChkQ44-ZmLTyx9JGGg0vZy8xMXZ5X2ZncXFfEAI"}
Dataset Views
| View | What it shows |
|---|---|
| Hotels | One row per hotel, commercial columns first. |
| Booking sites | One line per booking site, with the hotel repeated beside it. Ready for a price-comparison pivot. |
| Suggestions | Autocomplete rows. |
| Market summary | One row per search: how many hotels Google reports for the area, every hotel brand present, and the price distribution. Costs nothing — it rides a page already fetched. |
Advanced Usage
Competitor rate monitoring
Name your competitors, turn on includeRates, and sweep the dates you care about. One run gives you every hotel against every booking site across the whole window.
{"propertyUrls": ["Park Hyatt Tokyo","Mandarin Oriental Tokyo","Aman Tokyo"],"checkIn": "7","checkOut": "9","sweepDays": 30,"includeRates": true}
Relative dates plus sweepDays is what makes this schedulable: run it weekly and every run re-prices the next 30 nights from that day, so the table rolls forward by itself. Every row carries its own checkIn and propertyToken, so it appends cleanly.
Partner counts move over the course of a day — a New York search returned between 6 and 40 booking sites per hotel, and the same hotel varies between runs — so treat a rates table as a point-in-time snapshot rather than a fixed list.
Study the paid placements
{"searchQueries": ["hotels in Las Vegas"],"checkIn": "2026-11-20","checkOut": "2026-11-23","includeSponsored": true,"maxResultsPerQuery": 100}
Up to nine sponsored rows per search, flagged with sponsored: true and carrying the advertising partner's logo. They come back in the same columns as organic results, so a filter on one boolean separates them. Google says much less about a paid listing than an organic one, so most columns are empty on these rows, and a paid listing states no kind of property — propertyTypes therefore does not filter them. Set includeSponsored: false to drop them.
Multilingual run
{"searchQueries": ["hotels in Tokyo"],"checkIn": "2026-11-20","checkOut": "2026-11-23","language": "ja","countryCode": "jp","currency": "JPY","includeRates": true}
language localises the free text — description, star class, some review topics. Numbers, amenity ids and the star count stay stable, and stars sits next to the localised hotelClass string so you never have to parse it.
Join to reviews and photos
Every organic hotel row carries hexId and googleMapsUrl. Feed either to Google Maps Reviews Scraper for the hotel's full review history, sorted and unlimited, or to Google Maps Scraper for its complete photo library. A hotel page shows a handful of each; the Maps pipelines return everything.
Pricing — Pay Per Event (PPE)
$0.99 per 1,000 hotels. Subscription plans pay less per hotel, down to $0.69.
| Event | Per call | Per 1,000 |
|---|---|---|
| Hotel scraped (54 fields) | $0.00099 | $0.99 |
| Booking-site comparison (per hotel) | $0.00399 | $3.99 |
| Sponsored listing | $0.00019 | $0.19 |
| Search suggestion | $0.00099 | $0.99 |
A 1,000-hotel search is $0.99 in hotel charges. The same search with every booking site's price is $4.98. A 30-day price curve over 200 hotels is 6,000 hotel rows, $5.94. Apify's own platform charges are listed separately in the Console.
The booking-site comparison is charged only for hotels that came back with one, and only when you asked for it. Sponsored listings — at most nine per search — are charged at a fifth of a hotel, because Google publishes about a fifth as much about them; set includeSponsored to false and they cost nothing.
Free tier: 10 lifetime runs, up to 10 rows per run. No credit card required.
How it compares
| This Actor | Typical alternative | |
|---|---|---|
| Row shape | One row per hotel, every booking site nested inside it | One row per price, so a hotel repeats and a spreadsheet explodes |
| Price curve | sweepDays prices every hotel across up to 90 consecutive dates in one run | One stay window per run |
| Scheduling | Relative dates ("30"), so a saved schedule never goes stale | A pinned date that prices the same night forever |
| Rating floor | None. You get hotels under 4.0, roughly a fifth of a large market | Google's own 4.0 default, applied silently |
| Starting point | Hotel name, Google Hotels link, hotel id, or a search | Usually a link or an id |
| Market context | A summary row per search: how many hotels Google reports for the area, the brands present, the price distribution | Not published |
FAQ
Can I get prices for a range of dates, not just one stay?
Yes — that is what sweepDays is for. Set it to 30 and every search is repeated across 30 consecutive check-in dates, keeping your stay length, giving one row per hotel per date in a single dataset. Write the dates relatively ("30" rather than 2026-11-20) and a scheduled run keeps producing a rolling curve instead of re-pricing one fixed night forever.
How many hotels can I get from one search?
About 1,000. Google stops handing out results near that point no matter how many it reports for the area, so a large city needs splitting by district or neighbouring town. The searchQueries list takes as many as you like and deduplicates hotels across them.
Are the prices live? Yes. Every run asks Google for your exact stay window at run time. Nothing is cached, and each row echoes back the dates that were actually priced.
Why does a hotel show a different price than the booking sites under it?
The headline nightlyRate is Google's lead offer for the stay; rates[] is the full list behind it, and the cheapest entry is often lower. Both are captured so you can compare them.
Does party size change the price?
No. Google quotes the same nightly rate whatever adults and rooms are set to, on the search card and on every booking site. The values are recorded on the stay so your export documents what was asked for.
Do I get hotels rated below 4.0?
Yes, unless you set minRating. Google's own site applies a 4.0 floor by default, which hides roughly a fifth of a large market. This returns everything.
What happens to vacation rentals?
They come back in the same stream, labelled vacation_rental, with their layout and named amenities. They sell on a single site, so they have no price comparison and are skipped when includeRates is on — you are never billed for a comparison that does not exist.
Can I get a specific hotel without searching?
Yes. Put its Google Hotels link in propertyUrls, or its propertyToken from an earlier run in propertyTokens. Searching by name alone is unreliable — Google answers some hotel names with an article instead of a property.
What is the search-suggestions mode for? Travel keyword research, and resolving a half-remembered property name. It returns the ranked suggestions Google shows a real visitor. Some of the ones that name a property also carry its address and a Maps link, though which ones do varies by country, so that part is a bonus rather than a guarantee. It needs no dates.
What languages, countries and currencies are supported? Any Google language and country code, and the 72 currencies Google itself prices stays in. Verified end to end in Tokyo, Seoul, Cairo, Moscow, São Paulo and Bangkok.
What's the free tier? 10 lifetime runs with up to 10 rows per run. No credit card required. Upgrade to a paid Apify plan for full runs.
Can I run this on a schedule? Yes. Apify schedules run this hourly, daily or on cron — the usual setup for rate monitoring. Push results onward with webhooks or pull them from the dataset API.
More Zen Studio scrapers for travel & local data
- Google Maps Scraper — 40+ fields per place, past Google's 250-per-view ceiling
- Google Maps Reviews Scraper — unlimited review histories, one row per review
- Google Hotel Prices Scraper — one row per booking site per date, with the cheapest named for you
- Google Maps Directions & Routes API — routes, ETA and turn-by-turn steps
- Place Review Aggregator — one place, five review platforms, one export
Support
- Bugs: Issues tab
- Features: Issues tab
Legal Compliance
Extracts publicly available data. Users must comply with Google's terms of service and data protection regulations (GDPR, CCPA).
One row per hotel, priced for your dates, with every booking site's offer nested inside it — plus the full rating histogram, review topics, amenities and photos. $0.99 per 1,000 hotels.
