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.1/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

0

Bookmarked

37

Total users

9

Monthly active users

15 days ago

Last modified

Share

Google Hotels & Vacation Rentals Scraper

Collect public Google Hotels and Vacation Rentals search results, property details, prices, reviews, and photos. Run location searches in batches or look up specific Google Hotels entity URLs.

Why use this scraper?

  • Search hotels, vacation rentals, or both
  • Run several destinations or stay dates in one Actor run
  • Apply hotel price, class, guest-rating, and amenity filters
  • Add property details and reviews to search results
  • Look up specific hotel entity URLs with details and available gallery photos
  • Receive usable dataset records with explicit partial-result status

Use cases

  • Monitor hotel prices across locations and dates
  • Compare vacation rental prices across booking platforms
  • Build accommodation databases for travel analytics
  • Track pricing trends for specific properties or areas
  • Feed hotel data into alerting or recommendation pipelines

How to use

{
"searches": [
{ "location": "Hue", "checkInDate": "2026-10-15", "checkOutDate": "2026-10-18" }
],
"type": "hotels"
}

Vacation rentals only

{
"type": "vacation_rentals",
"searches": [
{ "location": "Paris", "checkInDate": "2026-10-15", "checkOutDate": "2026-10-22" }
]
}

Batch searches

{
"searches": [
{ "location": "Paris", "checkInDate": "2026-10-15", "checkOutDate": "2026-10-18" },
{ "location": "Paris", "checkInDate": "2026-11-12", "checkOutDate": "2026-11-15" },
{ "location": "Tokyo", "checkInDate": "2026-12-03", "checkOutDate": "2026-12-06" }
]
}

With filters

{
"searches": [
{ "location": "Hue", "checkInDate": "2026-10-15", "checkOutDate": "2026-10-18" }
],
"type": "hotels",
"maxPrice": 100,
"currency": "USD",
"hotelClass": [4, 5],
"guestRating": "4.0",
"amenities": ["Pool", "Free Wi-Fi"],
"sortBy": "price_low",
"adults": 2,
"rooms": 1
}

With details and reviews

{
"searches": [
{ "location": "Hue", "checkInDate": "2026-10-15", "checkOutDate": "2026-10-18" }
],
"type": "hotels",
"includeDetails": true,
"includeReviews": true,
"maxResults": 10
}

Lookup specific hotels by URL

{
"hotelUrls": [
"https://www.google.com/travel/hotels/entity/ChkIq_atzbv20-8ZGg0vZy8xMXFoMzRoa3pfEAE"
],
"searches": [
{ "location": "Tokyo", "checkInDate": "2026-10-15", "checkOutDate": "2026-10-18" }
],
"currency": "VND",
"includeReviews": true,
"maxReviewsPerHotel": 100,
"reviewSort": "highest_score",
"maxPhotosPerHotel": 0
}
{
"hotelUrls": [
"https://www.google.com/travel/hotels/entity/ChkIq_atzbv20-8ZGg0vZy8xMXFoMzRoa3pfEAE"
],
"searches": [
{ "location": "Tokyo", "checkInDate": "2026-10-15", "checkOutDate": "2026-10-18" }
],
"includeReviews": true,
"maxReviewsPerHotel": 50,
"reviewSort": "highest_score",
"reviewSearch": "breakfast"
}

Multiple guests

{
"searches": [
{ "location": "Bali", "checkInDate": "2026-10-15", "checkOutDate": "2026-10-22" }
],
"type": "vacation_rentals",
"adults": 4,
"children": 2,
"rooms": 2
}

Input

FieldTypeDefaultDescription
hotelUrlsstring[]URLs containing /entity/<token>. Starts lookup mode; repeated valid entries are processed independently and entries without a token are skipped
searchesarrayNew York, next day{ location, checkInDate, checkOutDate } entries. Lookup uses the first entry's dates; an explicit empty array is accepted
typeenumbothhotels, vacation_rentals, both
adultsinteger2Adult guests (1-9)
childreninteger0Child guests (0-9)
roomsinteger1Number of rooms (1-9)
currencystringUSDAny three-character price currency value, preserved as supplied
minPriceintegerMinimum price per night in the selected currency
maxPriceintegerMaximum price per night in the selected currency
hotelClassinteger[] or string[]Star levels from 2 through 5; numeric strings remain accepted
guestRatingenum3.5, 4.0, 4.5
amenitiesstring[]Amenity names. Known names are mapped to Google filters; unknown names are ignored
propertyTypesstring[]Property-type names. Known names are mapped to Google filters; unknown names are ignored
freeCancellationbooleanRequest free-cancellation offers
specialOffersbooleanRequest special offers
ecoCertifiedbooleanRequest eco-certified properties
sortByenumrelevancerelevance, price_low, price_high, rating, distance
maxResultsinteger50Maximum results per location and property type
includeDetailsbooleanfalseAdd booking links, amenities, descriptions, and related detail data to search results
includeReviewsbooleanfalseAdd available reviews to each property
maxReviewsPerHotelinteger40Maximum reviews per property. 0 continues until no page remains
reviewSortenummost_helpfulmost_helpful, most_recent, highest_score, lowest_score
reviewSearchstringFree-text search within reviews (e.g. "breakfast", "clean rooms")
maxPhotosPerHotelinteger0Lookup mode only. 0 continues until no gallery page remains
proxyConfigurationobject{"useApifyProxy":true}Optional connection settings managed by Apify

Legacy fields remain accepted across search and lookup modes. The Actor does not add cross-field rejection rules for date order, price order, repeated searches, occupancy, filters, or lookup/search field combinations. Unknown top-level and nested search fields are tolerated for forward compatibility.

When a non-empty hotelUrls list is present, lookup mode takes precedence. The Actor verifies that returned detail data belongs to the submitted entity token, then attempts web results, photo categories, gallery photos, and optional reviews. A URL without an entity token is skipped without discarding valid siblings. If searches is omitted, the baseline New York next-day search supplies lookup dates. Repeated entity tokens are processed independently in input order.

An empty input remains valid and uses the default New York search. An explicit empty searches array completes with no search work.

Real output

This is the complete, unchanged dataset record from a one-result New York hotel run on July 30, 2026. Property availability and values can change between runs.

{
"searchType": "hotel",
"url": "https://www.google.com/travel/hotels/entity/ChYIjrDskJ36j9gtGgovbS8wamtfbnZwEAE",
"location": "New York",
"checkInDate": "2026-09-28",
"checkOutDate": "2026-10-01",
"name": "Hotel Edison",
"propertyId": null,
"placeId": null,
"starRating": 4,
"propertyType": null,
"latitude": 40.7597355,
"longitude": -73.9861511,
"distance": null,
"pricePerNight": 257,
"totalPrice": 772,
"currency": "USD",
"priceLabel": "$257",
"reviewScore": 3.8,
"reviewCount": 8462,
"reviewSource": null,
"thumbnailUrl": null,
"photos": [],
"amenities": [],
"ecoBadge": false,
"sleeps": null,
"bedrooms": null,
"bathrooms": null,
"hashId": null,
"highlights": [],
"capacity": [],
"featured": false,
"bookingToken": "ChYIjrDskJ36j9gtGgovbS8wamtfbnZwEAE",
"phone": null,
"website": null,
"countryCode": null,
"address": null,
"neighborhood": null,
"neighborhoodDescription": null,
"neighborhoodScores": [],
"ratingDistribution": [],
"aspectSentiments": [],
"externalReviewSources": [],
"bookingLinks": [],
"description": null,
"roomTypes": [],
"checkInTime": null,
"checkOutTime": null,
"reviews": [],
"nearbyHotels": [],
"sponsoredHotels": [],
"nearbyVacationRentals": [],
"nearbyPlaces": [],
"nearbyBusinesses": [],
"priceHistory": null,
"priceBreakdown": null,
"originalPricePerNight": null,
"originalTotalPrice": null,
"reviewSummaryPositive": null,
"reviewSummaryNegative": null,
"featuredReviewSnippets": [],
"locationHierarchy": [],
"googleCategory": null,
"inclusivityLabels": [],
"featuredIn": [],
"webResults": [],
"photoCategories": [],
"dataStatus": "complete",
"failedSections": []
}

Output

Each usable property is written directly to the default dataset. No runtime output schema rejects a whole record. Known unavailable values are represented by null or an empty array rather than invented values.

dataStatus is complete when all requested sections finished. It is partial when a requested enrichment failed, and failedSections names those sections. A complete record can still contain nullable fields when the source has no value.

Search records follow input order. For type: "both", hotels are processed before vacation rentals for each stay. Results within each search use the requested ordering. Repeated upstream rows and URL lookups retain their occurrence order and count toward their applicable limits.

Core fields

The table summarizes the commonly returned identity, context, price, and status fields. Additional source fields may appear when Google provides them.

FieldTypeDescription
searchTypestring"hotel" or "vacation_rental"
urlstringPublic Google Hotels property URL
locationstring or nullSearch location or resolved lookup location
checkInDatestringCheck-in date
checkOutDatestringCheck-out date
namestringProperty name
propertyIdstring or nullGoogle property ID when available
placeIdstring or nullGoogle Place ID when available
starRatingnumber or nullHotel class when available
propertyTypestring or nullProperty category
latitudenumberGPS latitude
longitudenumberGPS longitude
distancestring or nullSource-provided distance label
pricePerNightnumber or nullPrice per night
totalPricenumber or nullTotal price for the stay
currencystringCurrency code
priceLabelstring or nullSource-provided price label
reviewScorenumber or nullAggregate review score
reviewCountinteger or nullAggregate review count
reviewSourcestring or nullAggregate rating source
thumbnailUrlstring or nullProperty thumbnail
photosarrayDeduplicated { url, label, categoryIds } entries
amenitiesstring[]Available amenity names
hashIdstring or nullSource identifier when available
highlightsstring[]Source-provided property highlights
capacitystring[]Vacation-rental capacity labels
sleepsinteger or nullVacation-rental guest capacity
bedroomsinteger or nullVacation-rental bedroom count
bathroomsnumber or nullVacation-rental bathroom count
featuredbooleanFeatured flag
bookingTokenstring or nullSource-provided Google Hotels booking token
ecoBadgebooleanEco marker when returned in property details
dataStatusstring"complete" or "partial"
failedSectionsstring[]Any failed details, reviews, webResults, photoCategories, or photos sections

Detail and lookup fields

Search mode populates these fields when includeDetails is true. Lookup mode always attempts property details. webResults, photoCategories, and full gallery pagination are lookup-only sections.

FieldTypeDescription
addressstring or nullFull street address
phonestring or nullPhone number
websitestring or nullHotel website URL
countryCodestring or nullCountry code when available
descriptionstring or nullProperty description
checkInTimestring or nullCheck-in time
checkOutTimestring or nullCheck-out time
amenitiesstring[]Available amenities with human-readable names
neighborhoodstring or nullNeighborhood name
neighborhoodDescriptionstring or nullShort neighborhood description
neighborhoodScoresarray{ category, rating } - 5 neighborhood category scores
ratingDistributionarray{ stars, count } - star breakdown (5โ˜… through 1โ˜…)
aspectSentimentsarray{ aspect, score, positive, negative, total } - e.g. Breakfast, Service, Location
externalReviewSourcesarray{ source, rating, maxRating, count } entries
bookingLinksarray{ provider, price, url, logoUrl, isOfficialSite, freeCancellation, freeCancellationDeadline }
roomTypesarray{ name, price } - room types with pricing
priceHistoryobject or nullCurrent and typical price values when available
priceBreakdownobject or nullBase price, taxes, fees, and total with taxes when available
originalPricePerNightnumber or nullOriginal nightly price before a displayed discount
originalTotalPricenumber or nullOriginal stay total before a displayed discount
reviewSummaryPositivestring or nullPositive review summary
reviewSummaryNegativestring or nullNegative review summary
featuredReviewSnippetsstring[]Source-provided review snippets
locationHierarchyarrayResolved location names and identifiers
googleCategorystring or nullSource-provided Google category
inclusivityLabelsstring[]Source-provided inclusivity labels
featuredInstring[]Editorial mentions (e.g. "Featured in Best Hotels in Tokyo with a View")
webResultsarrayRelated { title, url, snippet, domain, favicon } results
photoCategoriesarray{ categoryId, name, count, thumbnailUrl } - photo gallery category summary
nearbyPlacesarray{ name, photoUrl, rating, reviewCount, description, latitude, longitude, category, travelTimes } - POIs with travel times
nearbyBusinessesarray{ placeId, name, category, rating, reviewCount, phone, website, reservationUrl, photoUrl, priceRange, hours }
nearbyHotelsarraySimilar hotels (NearbyHotel type)
sponsoredHotelsarraySponsored/popular hotels (NearbyHotel type)
nearbyVacationRentalsarrayNearby vacation rentals (NearbyHotel type)

Review fields

Reviews are populated only when includeReviews is true. maxReviewsPerHotel applies to the collected review occurrences for each property.

FieldTypeDescription
reviewsarrayReview entries (see below)

Each review:

FieldTypeDescription
sourcestringReview provider
authorstringReviewer name
authorUrlstring or nullProfile URL
avatarUrlstring or nullProfile photo URL
ratingnumberRating (1-5)
maxRatingnumberProvider rating scale
textstringFull review text
datestringRelative date ("3 months ago")
reviewIdstring or nullSource-provided review identifier
reviewUrlstring or nullDirect review URL when available
subRatingsarray{ category, score, maxScore } entries
photosstring[]Review photo URLs
highlightsstring[]Hotel tags ("Luxury", "Romantic", "Great value")
replyTextstring or nullOwner reply text

Run outcomes

A valid search with no matches succeeds with an empty dataset. In a batch, failed searches or lookups do not discard successful siblings, and even an all-target acquisition failure completes with an empty dataset plus warnings. Dataset persistence failures remain fatal.

Optional enrichment failures preserve the base property record with dataStatus: "partial". A URL lookup whose underlying detail request fails may have no record, but that target does not discard siblings or fail the completed batch. Use failedSections to decide whether to retry or accept a partial record.

Responsible use

The Actor collects public accommodation data. Review records can contain names, profile links, photos, and free text. Store only what you need, limit access and retention, and follow the source terms and laws that apply to your use.