Google Hotels & Vacation Scraper  - Most Comprehensive avatar

Google Hotels & Vacation Scraper - Most Comprehensive

Pricing

from $0.09 / 1,000 hotels

Go to Apify Store
Google Hotels & Vacation Scraper  - Most Comprehensive

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

Kai

Maintained by Community

Actor stats

1

Bookmarked

50

Total users

12

Monthly active users

2 days ago

Last modified

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?

DataWhen you get it
Name, type (hotel or vacation rental), Google Hotels link, star class, property typeEvery property
Latitude, longitude, and the distance label that Google showsEvery property. Coordinates are 0 when Google has none.
Check-in date, check-out date, and currencyEvery property
Price per night, total price, and price labelWhen Google has a price for the dates
Review score, review count, rating source, thumbnail, photos from the result list, and highlightsWhen Google shows them in the result list
Property, place, and hash IDs, the featured flag, and the booking tokenEvery property. An ID is null when Google has none.
Guest capacity (sleeps), bedrooms, bathrooms, and capacity labelsVacation rentals
Address, phone, website, country code, description, and check-in and check-out timesWith includeDetails, and in URL lookup
Booking links with provider, price, total, member price, official-site flag, and free-cancellation termsWith includeDetails, and in URL lookup
Room types with prices, and the full amenity listWith 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 discountWith includeDetails, when Google shows them
Rating distribution, aspect scores, ratings from other review sites, review summaries, and review snippetsWith includeDetails, when Google shows them
Neighborhood name, description, and scoresWith includeDetails, when Google shows them
Nearby hotels, sponsored hotels, nearby vacation rentals, nearby places with travel times, and nearby businesses with opening hoursWith includeDetails, and in URL lookup
Location hierarchy, Google category, inclusivity labels, eco badge, and "featured in" mentionsWith includeDetails, when Google shows them
Reviews with source, author, rating, text, relative date, sub-ratings, photos, highlights, and owner replyWith includeReviews, when the property has reviews
Web results with title, link, snippet, and domainURL lookup only
Photo categories with counts, and the photo galleryURL lookup only
Data status and the list of failed sectionsEvery property

Google does not have every field for every property. A field without data is null or [].

Quick start

  1. Add a search in Searches. Enter a location, a check-in date, and a check-out date. Use future dates.
  2. Set Max Results. The default is 50 for each property type.
  3. 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, or NYC. 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 line Location 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 type set to both, the hotels of a stay come before its vacation rentals. A repeated search runs again.
  • Property type. type is hotels, vacation_rentals, or both. The default is both. 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 no searches, 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 includeReviews for reviews.
  • Photos. The default maxPhotosPerHotel is 0, which collects the whole gallery. A hotel can have hundreds of photos, so the lookup is slower. If you do not need all photos, set maxPhotosPerHotel to a small number, such as 1.
  • Location. The location field holds the most specific place name in Google's location hierarchy, such as Tokyo.
  • 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.

  • minPrice and maxPrice. The price per night, as a whole number in the selected currency.
  • hotelClass. Star classes from 2 to 5, for example [4, 5].
  • guestRating. The minimum guest rating: 3.5, 4.0, or 4.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, and ecoCertified. Set to true to keep only properties with free cancellation, with special offers, or with an eco certification.
  • adults, children, and rooms. 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 send rooms.
  • currency. The currency of all prices, as a three-letter code such as USD, EUR, GBP, or VND.

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.

ValueOrder
relevanceGoogle's own order.
price_lowLowest nightly price first. Google picks the cheapest properties.
ratingHighest guest rating first. Google picks the best-rated properties.
most_reviewedMost reviews first. Google picks the most-reviewed properties.
price_highHighest nightly price first. The Actor sorts the first maxResults properties in Google's order.
distanceNearest 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 is 40. Use 0 for every review.
  • reviewSort. most_helpful (default), most_recent, highest_score, or lowest_score.
  • reviewSearch. Returns only the reviews that match a text, such as breakfast or clean rooms.
  • maxPhotosPerHotel. The maximum gallery photos for each URL lookup. The default is 0, 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.

FieldTypeDefaultDescription
searchesarrayNew York, tomorrow, one nightEntries of { location, checkInDate, checkOutDate }. A URL lookup uses the first entry for its dates. An explicit empty array runs no search.
hotelUrlsstring[]noneGoogle Hotels links with /entity/<token>. A non-empty list starts URL lookup.
typestringbothhotels, vacation_rentals, or both.
adultsinteger2Adult guests, from 1 to 9.
childreninteger0Child guests, from 0 to 9. Each child is priced as a 12-year-old.
roomsinteger1Rooms, from 1 to 9. Google Hotels search has no room count, so the Actor does not send it.
currencystringUSDA three-letter currency code for all prices.
minPriceintegernoneMinimum price per night in the selected currency.
maxPriceintegernoneMaximum price per night in the selected currency.
hotelClassinteger[]all classesStar classes from 2 to 5. Numeric strings are accepted.
guestRatingstringnone3.5, 4.0, or 4.5.
amenitiesstring[]noneAmenity names. See the list above. A property must have all of them.
propertyTypesstring[]noneHotel property types. See the list above.
freeCancellationbooleanfalseKeep only properties with free cancellation.
specialOffersbooleanfalseKeep only properties with special offers.
ecoCertifiedbooleanfalseKeep only eco-certified properties.
sortBystringrelevancerelevance, price_low, price_high, rating, most_reviewed, or distance.
maxResultsinteger50Maximum properties for each location and property type.
includeDetailsbooleanfalseAdd the detail fields to search results.
includeReviewsbooleanfalseAdd reviews to each property.
maxReviewsPerHotelinteger40Maximum reviews for each property. 0 returns every review.
reviewSortstringmost_helpfulmost_helpful, most_recent, highest_score, or lowest_score.
reviewSearchstringnoneReturn only the reviews that match this text.
maxPhotosPerHotelinteger0URL lookup only. 0 returns every gallery photo.
proxyConfigurationobjectApify Proxy enabledConnection 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

GroupRoot fields
PropertysearchType, name, description, url, location, propertyId, placeId, hashId, bookingToken, starRating, propertyType, googleCategory, featured, highlights, ecoBadge, inclusivityLabels, featuredIn
StaycheckInDate, checkOutDate, currency
PricepricePerNight, totalPrice, priceLabel, originalPricePerNight, originalTotalPrice, priceBreakdown, priceHistory
BookingbookingLinks, roomTypes, checkInTime, checkOutTime
Place and contactlatitude, longitude, distance, address, phone, website, countryCode, neighborhood, neighborhoodDescription, neighborhoodScores, locationHierarchy
Capacitysleeps, bedrooms, bathrooms, capacity
Amenitiesamenities
RatingsreviewScore, reviewCount, reviewSource, ratingDistribution, aspectSentiments, externalReviewSources, reviewSummaryPositive, reviewSummaryNegative, featuredReviewSnippets
Reviewsreviews
NearbynearbyHotels, sponsoredHotels, nearbyVacationRentals, nearbyPlaces, nearbyBusinesses
Media and webthumbnailUrl, photos, photoCategories, webResults
RundataStatus, failedSections

Field notes

  • url is the public Google Hotels link of the property. bookingToken is the token in that link. Use either one to identify a property across runs.
  • location is the text of your search. In a URL lookup, it is the most specific place name in locationHierarchy.
  • pricePerNight and totalPrice are numbers in currency. They are null when Google shows no price for the property and the dates. priceLabel is the price text that Google shows.
  • latitude and longitude are 0 when Google has no coordinates.
  • reviewScore and reviewCount are the totals that Google shows for the property. A review has its own rating and maxRating, because a partner site can use another scale, such as 10. Compare rating divided by maxRating.
  • A review date is relative text, such as 3 months ago.
  • sleeps, bedrooms, and bathrooms are for vacation rentals. They are null for hotels.
  • description can hold <br> tags, as Google writes it.
  • nearbyHotels, sponsoredHotels, and nearbyVacationRentals are 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, photos holds only the photos from the result list.
  • featured is true for 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.

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.