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

32

Total users

8

Monthly active users

6 hours 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 strict 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[]HTTPS Google Hotels entity URLs. Starts lookup mode, deduplicated by entity token
searchesarray{ location, checkInDate, checkOutDate } entries. Required for search mode; lookup uses the first entry's dates
typeenumbothhotels, vacation_rentals, both
adultsinteger2Adult guests (1-9)
childreninteger0Child guests (0-9)
roomsinteger1Number of rooms (1-9)
currencystringUSDThree-letter price currency code, normalized to uppercase
minPriceintegerMinimum price per night in the selected currency
maxPriceintegerMaximum price per night in the selected currency
hotelClassinteger[]Star levels: [2, 3, 4, 5]
guestRatingenum3.5, 4.0, 4.5
amenitiesstring[]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, All-inclusive available
sortByenumrelevancerelevance, price_low, price_high, rating
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

Hotel-only filters and non-relevance sorting require type: "hotels". Vacation-rental and both searches reject those settings instead of ignoring them.

Exact duplicate location-and-date searches are rejected. Non-default guest or room counts are supported for base searches, but cannot be combined with includeDetails: true because property-detail prices use the default two-adult occupancy.

When hotelUrls is present, lookup mode takes precedence. Property details are required to return a lookup record. After details load, the Actor attempts web results, photo categories, gallery photos, and optional reviews; failures in those optional sections produce a partial record. Search-only filters, sorting, multiple stay entries, occupancy changes, and maxResults are rejected in this mode. If searches is omitted, lookup uses tomorrow and the following day. Duplicate entity tokens produce one canonical property record.

An empty input is rejected. Provide at least one search or hotel URL.

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,
"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 property is written to the default dataset as a consistent record. Every top-level field is present. 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. URL lookups follow the first occurrence of each unique entity token.

Core fields

The table summarizes the identity, context, price, and status fields. The Actor dataset schema is the complete machine-readable contract.

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
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 per property after deduplication.

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 nullProvider review ID used for deduplication
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, one failed search or lookup does not discard successful work; the run logs a warning. The Actor fails when every requested work item fails or when it cannot persist dataset records.

Optional enrichment failures preserve the base property record with dataStatus: "partial". A URL lookup cannot return a record when its required property details are unavailable. 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.