Google Hotels & Vacation Scraper - Most Comprehensive
Pricing
from $0.09 / 1,000 hotels
Google Hotels & Vacation Scraper - Most Comprehensive
🔥 ~$0.08/1K hotels 🔥 Scrape Google Hotels and Vacation Rentals with full filter support - price, hotel class, guest rating, amenities, property types, offers, eco-certified. Includes batch searches, booking links, and paginated reviews.
Pricing
from $0.09 / 1,000 hotels
Rating
0.0
(0)
Developer
Kai
Maintained by CommunityActor stats
1
Bookmarked
50
Total users
12
Monthly active users
2 days ago
Last modified
Categories
Share
Google Hotels & Vacation Rentals Scraper - Most Comprehensive
Get hotels and vacation rentals from Google Hotels for any destination and stay dates, or look up a property from its Google Hotels link. Each property has 68 fields: nightly and total price, star class, review score, location, and amenities. Add details to get booking links from many providers, price history, and nearby places. Add guest reviews, and the full photo gallery for a property that you look up.
Filter by price, star class, guest rating, amenities, property type, free cancellation, special offers, and eco certification. Sort by relevance, price, rating, or review count. Compare several destinations and dates in one run.
A search for 20 hotels with details and 5 reviews each takes about 15 seconds. A search for 100 hotels takes about 20 seconds. Details, reviews, and photos cost nothing extra. Starting at $0.08 per 1,000 properties.
What can you do with it?
- Hotel price comparison. Search a destination for your dates. Compare the prices, ratings, and amenities of hundreds of hotels.
- Booking-site price checks. See which provider has the lowest price for each hotel. Each booking link has the member price and the free-cancellation terms.
- Rate monitoring. Run the same search every day or every week. Track how the price of a stay changes before the trip.
- Deal finding. Read the price history of a hotel to see if today's price is low or high. Filter for special offers and free cancellation.
- Competitor benchmarking. Compare a hotel with the similar and nearby hotels that Google shows next to it.
- Destination and date comparison. Put several destinations and stay dates in one run. See where and when a trip costs less.
- Vacation rental research. Collect rentals with guest capacity, bedrooms, bathrooms, nightly price, amenities, and reviews.
- Guest feedback analysis. Read the reviews of a property from Google and from partner sites. Use the rating distribution, the aspect scores, and the review summaries.
- Complaint finding. Read the lowest-scored reviews first, or search the reviews for a word such as "noise".
- Lead generation. Collect the address, phone number, and website of the hotels in a city.
- Trip planning tools. Add the nearby places with travel times, and the nearby businesses with opening hours.
- Property enrichment. Start with a Google Hotels link and build a full record: details, web results, photo categories, and the photo gallery.
- Sustainable and accessible travel. Filter for eco-certified properties. Read the inclusivity labels, and filter for wheelchair-accessible hotels.
What data does it extract?
| Data | When you get it |
|---|---|
| Name, type (hotel or vacation rental), Google Hotels link, star class, property type | Every property |
| Latitude, longitude, and the distance label that Google shows | Every property. Coordinates are 0 when Google has none. |
| Check-in date, check-out date, and currency | Every property |
| Price per night, total price, and price label | When Google has a price for the dates |
| Review score, review count, rating source, thumbnail, photos from the result list, and highlights | When Google shows them in the result list |
| Property, place, and hash IDs, the featured flag, and the booking token | Every property. An ID is null when Google has none. |
| Guest capacity (sleeps), bedrooms, bathrooms, and capacity labels | Vacation rentals |
| Address, phone, website, country code, description, and check-in and check-out times | With includeDetails, and in URL lookup |
| Booking links with provider, price, total, member price, official-site flag, and free-cancellation terms | With includeDetails, and in URL lookup |
| Room types with prices, and the full amenity list | With includeDetails, and in URL lookup |
| Price history (typical low and high, Google's insight text), price breakdown (base, taxes, fees), and original prices before a discount | With includeDetails, when Google shows them |
| Rating distribution, aspect scores, ratings from other review sites, review summaries, and review snippets | With includeDetails, when Google shows them |
| Neighborhood name, description, and scores | With includeDetails, when Google shows them |
| Nearby hotels, sponsored hotels, nearby vacation rentals, nearby places with travel times, and nearby businesses with opening hours | With includeDetails, and in URL lookup |
| Location hierarchy, Google category, inclusivity labels, eco badge, and "featured in" mentions | With includeDetails, when Google shows them |
| Reviews with source, author, rating, text, relative date, sub-ratings, photos, highlights, and owner reply | With includeReviews, when the property has reviews |
| Web results with title, link, snippet, and domain | URL lookup only |
| Photo categories with counts, and the photo gallery | URL lookup only |
| Data status and the list of failed sections | Every property |
Google does not have every field for every property. A field without data is
null or [].
Quick start
- Add a search in Searches. Enter a location, a check-in date, and a check-out date. Use future dates.
- Set Max Results. The default is 50 for each property type.
- Click Start. Download the results as JSON, CSV, Excel, or HTML.
The same input as JSON:
{"searches": [{ "location": "Hue", "checkInDate": "2026-12-10", "checkOutDate": "2026-12-13" }],"type": "hotels","maxResults": 20}
An empty input {} runs a test search: New York, one night from tomorrow, both
property types, and 50 results of each.
Examples by use case
All dates in the examples are future dates. Change them to the dates of your trip.
The cheapest hotels first. Google picks the cheapest hotels, and the Actor sorts them by nightly price:
{"searches": [{ "location": "Hue", "checkInDate": "2026-12-10", "checkOutDate": "2026-12-13" }],"type": "hotels","sortBy": "price_low","maxResults": 20}
Vacation rentals only. Use vacation_rentals when you do not want hotels:
{"searches": [{ "location": "Paris", "checkInDate": "2026-12-10", "checkOutDate": "2026-12-17" }],"type": "vacation_rentals","maxResults": 30}
Hotels and rentals together. The default type is both. You get up to
maxResults hotels and up to maxResults rentals, with the hotels first:
{"searches": [{ "location": "Lisbon", "checkInDate": "2026-12-10", "checkOutDate": "2026-12-13" }],"maxResults": 10}
Budget hotels with free cancellation:
{"searches": [{ "location": "Hue", "checkInDate": "2026-12-10", "checkOutDate": "2026-12-13" }],"type": "hotels","maxPrice": 100,"freeCancellation": true,"sortBy": "price_low"}
A family trip. Two adults and two children. Google prices each child as a 12-year-old:
{"searches": [{ "location": "Orlando", "checkInDate": "2026-12-20", "checkOutDate": "2026-12-27" }],"type": "hotels","adults": 2,"children": 2,"amenities": ["Kid-friendly", "Pool"],"guestRating": "4.0"}
Luxury hotels. Five-star hotels with a guest rating of 4.5 or more and a spa:
{"searches": [{ "location": "Tokyo", "checkInDate": "2026-12-03", "checkOutDate": "2026-12-06" }],"type": "hotels","hotelClass": [5],"guestRating": "4.5","amenities": ["Spa"]}
Hotels with special offers:
{"searches": [{ "location": "Rome", "checkInDate": "2026-12-10", "checkOutDate": "2026-12-13" }],"type": "hotels","specialOffers": true}
Eco-certified hotels:
{"searches": [{ "location": "Copenhagen", "checkInDate": "2026-12-10", "checkOutDate": "2026-12-13" }],"type": "hotels","ecoCertified": true}
Wheelchair-accessible hotels:
{"searches": [{ "location": "Berlin", "checkInDate": "2026-12-10", "checkOutDate": "2026-12-13" }],"type": "hotels","amenities": ["Wheelchair accessible"]}
Boutique and spa hotels. Filter by property type:
{"searches": [{ "location": "Kyoto", "checkInDate": "2026-12-10", "checkOutDate": "2026-12-13" }],"type": "hotels","propertyTypes": ["Boutique hotels", "Spa hotels"]}
Prices in another currency. Set a three-letter currency code:
{"searches": [{ "location": "Paris", "checkInDate": "2026-12-10", "checkOutDate": "2026-12-13" }],"type": "hotels","currency": "EUR"}
Compare dates. Two stays in the same city, a weekday and a weekend. Each search keeps its own dates in the output:
{"searches": [{ "location": "Paris", "checkInDate": "2026-12-08", "checkOutDate": "2026-12-10" },{ "location": "Paris", "checkInDate": "2026-12-12", "checkOutDate": "2026-12-14" }],"type": "hotels","maxResults": 25}
Compare destinations:
{"searches": [{ "location": "Lisbon", "checkInDate": "2026-12-10", "checkOutDate": "2026-12-13" },{ "location": "Madrid", "checkInDate": "2026-12-10", "checkOutDate": "2026-12-13" },{ "location": "Rome", "checkInDate": "2026-12-10", "checkOutDate": "2026-12-13" }],"type": "hotels","maxResults": 25}
Compare booking sites. Add the details, then read bookingLinks. It has one
entry for each provider, with the price, the member price, and the
free-cancellation terms:
{"searches": [{ "location": "Hue", "checkInDate": "2026-12-10", "checkOutDate": "2026-12-13" }],"type": "hotels","maxResults": 10,"includeDetails": true}
Is this a good price? The same input also fills priceHistory, when Google
shows it. It has the current price, the typical low and high, and Google's
insight text, such as "21% less than usual".
A lead list. The same input fills address, phone, and website. Raise
maxResults to collect more hotels.
Hotel reviews for a destination. The 20 most recent reviews of each of the 10 top hotels:
{"searches": [{ "location": "Hue", "checkInDate": "2026-12-10", "checkOutDate": "2026-12-13" }],"type": "hotels","maxResults": 10,"includeReviews": true,"maxReviewsPerHotel": 20,"reviewSort": "most_recent"}
Find complaints. The lowest-scored reviews of one hotel:
{"hotelUrls": ["https://www.google.com/travel/hotels/entity/ChkIq_atzbv20-8ZGg0vZy8xMXFoMzRoa3pfEAE"],"includeReviews": true,"maxReviewsPerHotel": 50,"reviewSort": "lowest_score","maxPhotosPerHotel": 1}
Reviews about a topic. Reviews that match breakfast, with the highest
scores first:
{"hotelUrls": ["https://www.google.com/travel/hotels/entity/ChkIq_atzbv20-8ZGg0vZy8xMXFoMzRoa3pfEAE"],"includeReviews": true,"maxReviewsPerHotel": 50,"reviewSort": "highest_score","reviewSearch": "breakfast","maxPhotosPerHotel": 1}
Every review of one hotel. Set maxReviewsPerHotel to 0:
{"hotelUrls": ["https://www.google.com/travel/hotels/entity/ChkIq_atzbv20-8ZGg0vZy8xMXFoMzRoa3pfEAE"],"includeReviews": true,"maxReviewsPerHotel": 0,"maxPhotosPerHotel": 1}
Look up known hotels. Paste Google Hotels links. The stay dates come from
the first entry in searches. maxPhotosPerHotel keeps the run short. See
Look up a property:
{"hotelUrls": ["https://www.google.com/travel/hotels/entity/ChkIq_atzbv20-8ZGg0vZy8xMXFoMzRoa3pfEAE","https://www.google.com/travel/hotels/entity/ChYIjrDskJ36j9gtGgovbS8wamtfbnZwEAE"],"searches": [{ "location": "Tokyo", "checkInDate": "2026-12-10", "checkOutDate": "2026-12-13" }],"maxPhotosPerHotel": 5}
The photo gallery of a hotel. maxPhotosPerHotel is 0 by default, which
means all photos. Set a number to stop earlier:
{"hotelUrls": ["https://www.google.com/travel/hotels/entity/ChkIq_atzbv20-8ZGg0vZy8xMXFoMzRoa3pfEAE"],"maxPhotosPerHotel": 10}
Monitor prices on a schedule. Save the input as a task and run it every day.
Each run uses the dates in the input, so move the dates forward when they pass.
Join the runs on bookingToken, checkInDate, and checkOutDate:
{"searches": [{ "location": "Hue", "checkInDate": "2026-12-10", "checkOutDate": "2026-12-13" }],"type": "hotels","maxResults": 100,"includeDetails": true}
A large market scan. 300 hotels with details. The run takes about 2 minutes:
{"searches": [{ "location": "Paris", "checkInDate": "2026-12-10", "checkOutDate": "2026-12-13" }],"type": "hotels","maxResults": 300,"includeDetails": true}
The hotels nearest to the center first:
{"searches": [{ "location": "Paris", "checkInDate": "2026-12-10", "checkOutDate": "2026-12-13" }],"type": "hotels","sortBy": "distance","maxResults": 20}
Choose the places
Use searches to find properties in a place. Use hotelUrls to look up
properties that you already know. If hotelUrls is not empty, the Actor only
looks up those properties and runs no search.
Search a place
Each entry in searches has a location, a checkInDate, and a
checkOutDate. Dates use the YYYY-MM-DD format.
- Location. Use a city, a region, a country, a landmark, or a short name,
such as
Hue,Paris,Vietnam,Eiffel Tower, orNYC. A name in another script, such as東京, works too. The Actor looks for the place whose name fits your text. If there is none, it asks the Google Hotels page. The log lineLocation resolved: ...shows the place that was chosen. - Hotel names. A hotel name finds the hotels around that hotel. To get one
known hotel, use its link in
hotelUrls. - Dates. Use future dates. The Actor sends the dates as you give them. A past date, or a check-out before the check-in, is accepted but usually returns no properties.
- Several searches. Add more entries to compare places or dates in one run.
The Actor runs the searches in your order. For
typeset toboth, the hotels of a stay come before its vacation rentals. A repeated search runs again. - Property type.
typeishotels,vacation_rentals, orboth. The default isboth. Google's hotel results also hold a few vacation rentals. A hotel search skips them, and a vacation-rental search returns only rentals. - Place not found. The log shows
Location unavailable: <place>and the reason. The other searches still run, and the run does not fail.
Look up a property
Each entry in hotelUrls is a full URL that has /entity/ and a token. Open a
property in Google Hotels and copy the link from the address bar. The long
browser link with a name and a query string works. The Actor reads only the
token.
- Dates. The stay dates come from the first entry in
searches. If you give nosearches, the Actor uses one night from tomorrow. - What you get. Every lookup attempts the property details, the web
results, the photo categories, and the photo gallery. Add
includeReviewsfor reviews. - Photos. The default
maxPhotosPerHotelis0, which collects the whole gallery. A hotel can have hundreds of photos, so the lookup is slower. If you do not need all photos, setmaxPhotosPerHotelto a small number, such as1. - Location. The
locationfield holds the most specific place name in Google's location hierarchy, such asTokyo. - Not accepted. A link without
/entity/and a token, such as a city page, is skipped. The log shows how many links were skipped, and the other links still run. - Order. The Actor reads the links in your order. A repeated link is read again. A link that fails does not stop the others.
Filter the properties
Filters apply to a search. They do not apply to a URL lookup. A property must
match every filter that you set. Inside one list, a property can match any of
the values, except amenities, where it must have every amenity.
minPriceandmaxPrice. The price per night, as a whole number in the selectedcurrency.hotelClass. Star classes from2to5, for example[4, 5].guestRating. The minimum guest rating:3.5,4.0, or4.5.amenities. Names from the list below. A name is not case-sensitive. The Actor ignores a name that it does not know, and the log says so.propertyTypes. Hotel types from the list below. This filter is for hotels. The Actor ignores a name that it does not know.freeCancellation,specialOffers, andecoCertified. Set totrueto keep only properties with free cancellation, with special offers, or with an eco certification.adults,children, androoms. Guests of the stay. Google prices each child as a 12-year-old. Google Hotels search has no room count, so the Actor does not sendrooms.currency. The currency of all prices, as a three-letter code such asUSD,EUR,GBP, orVND.
Amenities: Free Wi-Fi, Free breakfast, Restaurant, Bar, Kid-friendly,
Pet-friendly, Free parking, Parking, EV charger, Room service,
Fitness center, Spa, Pool, Indoor pool, Outdoor pool,
Air-conditioned, Wheelchair accessible, Beach access, and
All-inclusive available.
Property types: Boutique hotels, Bed and breakfasts, Spa hotels,
Hostels, Resorts, Inns, Apartment hotels, Motels, Beach hotels, and
Other.
This example keeps four- and five-star hotels under $300 a night with a guest rating of 4.0 or more and free cancellation:
{"searches": [{ "location": "New York", "checkInDate": "2026-12-10", "checkOutDate": "2026-12-13" }],"type": "hotels","maxPrice": 300,"hotelClass": [4, 5],"guestRating": "4.0","freeCancellation": true}
A filter set that matches no property gives an empty result, not an error.
Choose the result order
sortBy sets the order. The default is relevance.
| Value | Order |
|---|---|
relevance | Google's own order. |
price_low | Lowest nightly price first. Google picks the cheapest properties. |
rating | Highest guest rating first. Google picks the best-rated properties. |
most_reviewed | Most reviews first. Google picks the most-reviewed properties. |
price_high | Highest nightly price first. The Actor sorts the first maxResults properties in Google's order. |
distance | Nearest to the center of the searched area first. The Actor sorts the first maxResults properties in Google's order. |
Google has no highest-price order and no distance order. For price_high and
distance, the Actor does not search the whole area for the most expensive or
the nearest properties. Use a large maxResults to widen the pool. Properties
without the sort value come last. Google marks a few results as featured
(featured is true). A featured result can appear out of order.
Add details, reviews, and photos
includeDetails. Adds the detail fields of the table above to each search result: booking links, rooms, price history, nearby places, and more. A URL lookup always adds them.includeReviews. Adds the reviews of each property. This works in a search and in a URL lookup.maxReviewsPerHotel. The maximum reviews for each property. The default is40. Use0for every review.reviewSort.most_helpful(default),most_recent,highest_score, orlowest_score.reviewSearch. Returns only the reviews that match a text, such asbreakfastorclean rooms.maxPhotosPerHotel. The maximum gallery photos for each URL lookup. The default is0, which means all photos. A search does not collect the gallery. It returns the photos that Google shows in the result list.
Reviews come from Google and from partner sites. The source field of a review
names the site. A review date is relative text, such as 3 months ago.
If a requested section fails, the Actor keeps the property and sets
dataStatus to partial. failedSections lists the sections. See Complete
and partial records.
Input reference
No field is required. An empty input runs the test search.
| Field | Type | Default | Description |
|---|---|---|---|
searches | array | New York, tomorrow, one night | Entries of { location, checkInDate, checkOutDate }. A URL lookup uses the first entry for its dates. An explicit empty array runs no search. |
hotelUrls | string[] | none | Google Hotels links with /entity/<token>. A non-empty list starts URL lookup. |
type | string | both | hotels, vacation_rentals, or both. |
adults | integer | 2 | Adult guests, from 1 to 9. |
children | integer | 0 | Child guests, from 0 to 9. Each child is priced as a 12-year-old. |
rooms | integer | 1 | Rooms, from 1 to 9. Google Hotels search has no room count, so the Actor does not send it. |
currency | string | USD | A three-letter currency code for all prices. |
minPrice | integer | none | Minimum price per night in the selected currency. |
maxPrice | integer | none | Maximum price per night in the selected currency. |
hotelClass | integer[] | all classes | Star classes from 2 to 5. Numeric strings are accepted. |
guestRating | string | none | 3.5, 4.0, or 4.5. |
amenities | string[] | none | Amenity names. See the list above. A property must have all of them. |
propertyTypes | string[] | none | Hotel property types. See the list above. |
freeCancellation | boolean | false | Keep only properties with free cancellation. |
specialOffers | boolean | false | Keep only properties with special offers. |
ecoCertified | boolean | false | Keep only eco-certified properties. |
sortBy | string | relevance | relevance, price_low, price_high, rating, most_reviewed, or distance. |
maxResults | integer | 50 | Maximum properties for each location and property type. |
includeDetails | boolean | false | Add the detail fields to search results. |
includeReviews | boolean | false | Add reviews to each property. |
maxReviewsPerHotel | integer | 40 | Maximum reviews for each property. 0 returns every review. |
reviewSort | string | most_helpful | most_helpful, most_recent, highest_score, or lowest_score. |
reviewSearch | string | none | Return only the reviews that match this text. |
maxPhotosPerHotel | integer | 0 | URL lookup only. 0 returns every gallery photo. |
proxyConfiguration | object | Apify Proxy enabled | Connection settings. Leave it on the default. You can also set proxy groups or your own proxy URLs. |
Unknown input fields are ignored for compatibility. The input form rejects a
value outside its limits. Examples are 10 adults, a currency code that is not
three letters, and a date that is not in YYYY-MM-DD format. The Actor does
not reject an unusual mix of values, such as a check-out before the check-in or
a minimum price above the maximum price. Such an input can give no results.
Output
Each item in the dataset is one property. The Overview table shows the name,
location, property type, dates, price per night, currency, review score, data
status, and link. Every item has all the fields below. A field without data is
null or []. Prices and availability change between runs.
Fields by topic
- Property. Name, type, links, IDs, star class, property type, Google category, highlights, and the featured flag.
- Stay and price. Dates, currency, price per night, total price, price label, original prices, price breakdown, and price history.
- Booking. Booking links with provider, price, member price, and free-cancellation terms. Room types with prices. Check-in and check-out times.
- Place and contact. Coordinates, the distance label, address, phone, website, country code, neighborhood, neighborhood scores, and the location hierarchy.
- Capacity. Sleeps, bedrooms, bathrooms, and capacity labels of vacation rentals.
- Amenities and labels. Amenities, eco badge, inclusivity labels, and "featured in" mentions.
- Ratings. Review score, review count, rating distribution, aspect scores, ratings from other review sites, review summaries, and review snippets.
- Reviews. Source, author, rating, text, relative date, sub-ratings, photos, highlights, and the owner's reply.
- Nearby. Nearby hotels, sponsored hotels, nearby vacation rentals, nearby places with travel times, and nearby businesses with opening hours.
- Media and web. Thumbnail, photos, photo categories, and web results.
- Run. The data status and the failed sections.
Hotel example
This field example combines search and property-detail values. Long arrays keep one item. Square brackets mark values that are not included in the documentation. This is not a saved Dataset item. Use the field reference for types and nullability.
Direct lookup example
Direct lookup can populate webResults and photoCategories. These arrays can
be empty in a location-search record. This selected example is not a saved
Dataset item.
{"name": "Koko Hotel Tsukiji Ginza","url": "https://www.google.com/travel/hotels/entity/ChkIq_atzbv20-8ZGg0vZy8xMXFoMzRoa3pfEAE","bookingToken": "[booking token removed]","webResults": [{"title": "Japan - Koko Hotel Tsukiji Ginza Tokyo","url": "https://koko-tsukiji-ginza.intokyohotels.com/en/","snippet": "Facilities at the comfortable 3-star Koko Hotel Tsukiji Ginza include a restaurant and luggage storage as well as currency exchange and a lift. Popular hotels ...","domain": "https://koko-tsukiji-ginza.intokyohotels.com","favicon": null}],"photoCategories": [{"categoryId": 2,"name": "Property","subcategoryId": null,"streetView": false,"count": 231,"thumbnailUrl": "[media URL removed]"},{"categoryId": null,"name": null,"subcategoryId": null,"streetView": true,"count": 4,"thumbnailUrl": "[media URL removed]"}],"dataStatus": "complete","failedSections": []}
Vacation rental example
This selected example shows rental-specific capacity fields and valid null values. It is not a saved Dataset item.
{"searchType": "vacation_rental","url": "https://www.google.com/travel/hotels/entity/ChkQgZzcxM-NqchBGg0vZy8xMXl3ZHNwNGQyEAI","name": "Superb Paris studio","propertyId": "4724456797045722625","placeId": null,"starRating": null,"propertyType": null,"pricePerNight": 83,"totalPrice": 249,"currency": "EUR","priceLabel": "€83","reviewScore": null,"reviewCount": null,"sleeps": 2,"bedrooms": 1,"bathrooms": null,"website": "[tracking URL removed]","description": "This apartment building features laundry facilities. <br>The apartment offers a washing machine, a hair dryer, and a shower. <br>Guest accommodations at this apartment offer irons/ironing boards. Bathrooms include showers and hair dryers.","dataStatus": "complete","failedSections": []}
Field groups
| Group | Root fields |
|---|---|
| Property | searchType, name, description, url, location, propertyId, placeId, hashId, bookingToken, starRating, propertyType, googleCategory, featured, highlights, ecoBadge, inclusivityLabels, featuredIn |
| Stay | checkInDate, checkOutDate, currency |
| Price | pricePerNight, totalPrice, priceLabel, originalPricePerNight, originalTotalPrice, priceBreakdown, priceHistory |
| Booking | bookingLinks, roomTypes, checkInTime, checkOutTime |
| Place and contact | latitude, longitude, distance, address, phone, website, countryCode, neighborhood, neighborhoodDescription, neighborhoodScores, locationHierarchy |
| Capacity | sleeps, bedrooms, bathrooms, capacity |
| Amenities | amenities |
| Ratings | reviewScore, reviewCount, reviewSource, ratingDistribution, aspectSentiments, externalReviewSources, reviewSummaryPositive, reviewSummaryNegative, featuredReviewSnippets |
| Reviews | reviews |
| Nearby | nearbyHotels, sponsoredHotels, nearbyVacationRentals, nearbyPlaces, nearbyBusinesses |
| Media and web | thumbnailUrl, photos, photoCategories, webResults |
| Run | dataStatus, failedSections |
Field notes
urlis the public Google Hotels link of the property.bookingTokenis the token in that link. Use either one to identify a property across runs.locationis the text of your search. In a URL lookup, it is the most specific place name inlocationHierarchy.pricePerNightandtotalPriceare numbers incurrency. They arenullwhen Google shows no price for the property and the dates.priceLabelis the price text that Google shows.latitudeandlongitudeare0when Google has no coordinates.reviewScoreandreviewCountare the totals that Google shows for the property. A review has its ownratingandmaxRating, because a partner site can use another scale, such as 10. Compareratingdivided bymaxRating.- A review
dateis relative text, such as3 months ago. sleeps,bedrooms, andbathroomsare for vacation rentals. They arenullfor hotels.descriptioncan hold<br>tags, as Google writes it.nearbyHotels,sponsoredHotels, andnearbyVacationRentalsare the properties that Google shows on the page of the property.webResults,photoCategories, and the full photo gallery are for URL lookup. In a search result,photosholds only the photos from the result list.featuredistruefor a result that Google marks as featured.- Prices, availability, and reviews change over time.
Complete and partial records
If a requested section fails, the Actor keeps the property and sets
dataStatus to partial. failedSections lists the failed sections. The
possible sections are details, reviews, webResults, photoCategories, and
photos. The log shows a warning for each one. Read failedSections to decide
whether the data is enough, or run the property again.
A complete record can still hold null values and empty arrays, because
Google does not have every field for every property.
FAQ
How many properties can I get?
maxResults sets the limit for each location and each property type. There is
no fixed upper limit. Searches of 100 and 300 properties work. Google lists only
a limited number of properties for a small place. With type set to both, you
can get up to twice maxResults for each search.
Why did I get fewer properties than maxResults?
The place can have fewer properties than you asked for. Your filters can remove
some. A hotel search skips the vacation rentals in Google's results, and a
vacation-rental search skips the hotels. A search with no match saves nothing and
does not fail. The log line Collected ... result(s) shows how many properties
Google listed.
Why is the price empty?
Google shows no price for that property and those dates. pricePerNight and
totalPrice are null then. Try other dates, or check the property on Google
Hotels.
Do I need stay dates?
A search needs a check-in and a check-out date for each location. A URL lookup
takes the dates of the first entry in searches. Without searches, it uses one
night from tomorrow.
How do I get the Google Hotels link of a property?
Search for the property on Google Hotels, open it, and copy the link from the
address bar. The link has /entity/ and a token. You can also take the url
field of a search result and use it in hotelUrls for a deeper lookup.
How do I search for one hotel by name?
Use its Google Hotels link in hotelUrls. A hotel name in searches finds the
hotels around that hotel, not only the hotel itself. The log line
Location resolved: ... shows the place that was chosen.
How do I track prices over time?
Save your input as a task and run it on a schedule. Each run saves its own
dataset. Join the runs on bookingToken, checkInDate, and checkOutDate. The
Actor does not keep the history of earlier runs. Move the dates forward when
they pass.
Can I get the date of a review?
A review has a relative date, such as 3 months ago. Use reviewSort with
most_recent to read the newest reviews first. Use reviewId, when it is not
null, to remove reviews that you already have.
Why do the reviews come from different sites?
Google Hotels shows reviews from Google and from partner sites. The source
field names the site. Each site can have its own rating scale. Use maxRating
to compare them.
What does the Actor not do?
- It does not send a room count, because Google Hotels search has no room count.
- It prices each child as a 12-year-old. You cannot set child ages.
- It does not give the exact date of a review.
- It does not sort the whole area by highest price or by distance. See Choose the result order.
- It does not collect the photo gallery in a search. Use a URL lookup.
- It does not return Booking.com or Airbnb data. See the Actors below.
A feature or field that I need is missing. What can I do?
Tell us in the Issues tab. Describe what you need and give an example search or property link.
Where can I report a problem?
Open an issue in the Issues tab. Include the run ID and the input, so that we can reproduce it.
Similar Actors
- Booking Hotels Scraper. Booking.com hotels by destination, or by URL or ID, with details, photos, reviews, rooms, and rates.
- Airbnb Scraper. Airbnb listings with full details, host profiles, and reviews, from a place search or listing URLs.
- Google Flights Scraper. Google Flights prices and itineraries for one-way, round-trip, and multi-city trips.
- Google Maps Scraper. Google Maps places with more than 120 fields: addresses, phone numbers, websites, ratings, opening hours, reviews, and photos.
- Google Maps Reviews Scraper. Google Maps reviews with place context, from place URLs or Place IDs.
- TripAdvisor Reviews Scraper. TripAdvisor reviews of hotels, restaurants, attractions, and cruises.
- TripAdvisor Places Scraper. TripAdvisor places and bookable experiences with ratings, contact details, and rankings.