Google Hotels Scraper avatar

Google Hotels Scraper

Pricing

from $1.00 / 1,000 results

Go to Apify Store
Google Hotels Scraper

Google Hotels Scraper

[๐Ÿ’ฐ $1 / 1K] Extract hotel and vacation rental listings from Google Hotels โ€” nightly and total rates, star class, guest ratings, amenities, images, GPS, and Google Place IDs. Filter by stars, 19 amenities, 12 property types and 10 rental types across 43 countries, 19 languages and 21 currencies.

Pricing

from $1.00 / 1,000 results

Rating

0.0

(0)

Developer

SolidCode

SolidCode

Maintained by Community

Actor stats

0

Bookmarked

39

Total users

4

Monthly active users

18 days ago

Last modified

Share

Pull structured hotel and vacation-rental data straight out of Google Hotels: property names, nightly and total rates, star class, guest ratings and review counts, amenity lists, GPS coordinates, image galleries, and stable Google identifiers you can join on. Built for revenue managers, travel affiliates and market analysts who need a live view of a destination's inventory without babysitting a browser or stitching together a dozen hotel-brand sites.

Why This Scraper?

  • Two modes in one actor โ€” search a location ("hotels in Paris") for browsable inventory, or feed property tokens back in to pull each property's own check-in and check-out times, which the search cards never carry
  • Filters Google actually honours โ€” 19 amenities, 12 hotel property types, 10 vacation-rental types and 5 star levels, all picked by name from dropdowns. Every one was checked against what Google says it applied, so a "Resorts" search returns resorts and not the whole city
  • Amenity lists on roughly 9 of every 10 first-page results โ€” and they stay correct in German, Portuguese and Indonesian, not just English (measured across four market and language combinations)
  • Vacation rentals mode โ€” flip one toggle to search villas, houses, cabins, cottages, chalets, bungalows, gรฎtes, holiday villages and houseboats, complete with the capacity facts Google shows on the card ("Entire villa", "Sleeps 6", "3 bedrooms")
  • Occupancy that moves the price โ€” up to 50 adults and 50 children with a per-child age list. Rates come back quoted for the party you asked for instead of Google's silent default of two adults
  • Localization that reaches the currency โ€” 43 countries, 19 languages and 21 currencies, and every link in the output carries the same country and language, so the page you open is the same market you searched
  • Clean numeric pricing โ€” ratePerNight and totalRate arrive as { extracted, currency, formatted } objects, ready to sort, average and drop into a spreadsheet without stripping currency symbols
  • Stable join keys on every row โ€” propertyToken, googlePlaceId and a numeric propertyId, so you can track the same hotel across weeks of runs and match it to your own records
  • From $1 per 1,000 results โ€” you pay per result row, not per page, so a query that runs out of inventory costs you nothing extra

Use Cases

Revenue Management & Compset Analysis

  • Pull competitor nightly rates for an identical check-in/check-out window and party size
  • Re-run the same query weekly and track how a compset's pricing moves into a season
  • Compare your property's amenity coverage against every neighbour on page one

Travel & Hospitality Market Research

  • Measure how a destination's inventory splits across 1- to 5-star classes
  • Size the boutique, hostel, resort or bed-and-breakfast segment in any city
  • Watch rate spreads across neighbourhoods by running one query per district

Travel Content & Affiliate Sites

  • Populate "Best hotels inโ€ฆ" and "Top vacation rentals inโ€ฆ" pages with fresh rates and ratings
  • Keep review counts, star classes and amenity lists current on destination guides
  • Localize the same guide for 19 languages and 21 currencies from a single input set

Lead Generation & Prospecting

  • Build lists of independent properties by filtering out chains on star class and property type
  • Match prospects to your CRM using Google Place IDs and GPS coordinates
  • Feed tokens back through the actor for each property's check-in and check-out times

Vacation Rental Intelligence

  • Survey villas, cabins and cottages with the capacity facts Google lists on each card ("Sleeps 6", "3 bedrooms")
  • Track nightly rates for short-term rental competitors in a resort market
  • Build destination-specific rental inventories that refresh on a schedule

Getting Started

Enter a location and let the defaults handle the rest (2 adults, check-in 14 days out, US / English / USD):

{
"searchQueries": ["hotels in Paris"]
}

Search with Dates & Guests

Target a specific stay window and party size:

{
"searchQueries": ["hotels in Tokyo", "ryokan in Kyoto"],
"checkInDate": "2026-05-12",
"checkOutDate": "2026-05-18",
"adults": 2,
"children": 1,
"childrenAges": "7",
"language": "en",
"currency": "JPY",
"country": "jp"
}

Narrow by star rating, required amenities and property type:

{
"searchQueries": ["hotels in Barcelona"],
"checkInDate": "2026-06-10",
"checkOutDate": "2026-06-14",
"stars": ["4", "5"],
"amenities": ["free_wifi", "pool", "air_conditioned"],
"propertyTypes": ["boutique_hotels", "resorts"]
}

Vacation Rentals

Search houses, villas and apartments instead of hotels:

{
"searchQueries": ["vacation rentals in Malibu"],
"vacationRentals": true,
"rentalTypes": ["villas", "houses"],
"checkInDate": "2026-07-15",
"checkOutDate": "2026-07-22",
"adults": 4
}

Property Details by Token

Already have property tokens from an earlier run? Pull the detail record for each one:

{
"propertyTokens": ["ChYIhJvEzt34sfmCARoJL20vMDMzYnhzEAE"],
"checkInDate": "2026-08-01",
"checkOutDate": "2026-08-05"
}

Input Reference

ParameterTypeDefaultDescription
searchQueriesstring[]["hotels in Paris"]Location-based search queries such as "hotels in Paris" or "Bali resorts". Each query produces its own set of results.
propertyTokensstring[][]Google Hotels property tokens (from earlier search results) to pull a detail record for specific properties.

Provide at least one of the two. You can also combine them in a single run.

Dates & Guests

ParameterTypeDefaultDescription
checkInDatestring (YYYY-MM-DD)14 days from todayCheck-in date. Must be today or a future date.
checkOutDatestring (YYYY-MM-DD)day after check-inCheck-out date. Must be after check-in.
adultsinteger2Number of adult guests (1โ€“50).
childreninteger0Number of child guests (0โ€“50).
childrenAgesstring""Comma-separated ages (e.g. "5,8,12"). Required when children > 0. Each age 0โ€“17.

Anything other than the default 2 adults with no children returns the first page of results only, because Google applies your party size to that page and quotes its standard two-guest rate on everything after it.

Filters

ParameterTypeDefaultDescription
starsstring[][]Only include hotels with these star ratings. Options: "1" โ€“ "5".
amenitiesstring[][]Only include properties that offer all of these amenities. 19 options: Free parking, Parking, Indoor pool, Outdoor pool, Pool, Fitness center, Restaurant, Free breakfast, Spa, Beach access, Child-friendly, Bar, Pet-friendly, Room service, Free Wi-Fi, Air-conditioned, All-inclusive available, Wheelchair accessible, EV charger.
propertyTypesstring[][]Only include these hotel property types. 12 options: Beach hotels, Boutique hotels, Hostels, Inns, Motels, Resorts, Spa hotels, Bed and breakfasts, Apartment hotels, Minshuku, Japanese-style business hotels, Ryokan. Ignored when Vacation Rentals mode is enabled.

An amenity, property-type or rental-type filter also returns the first page only. Google applies those three to the opening result block and then stops, so later pages would hand you properties that ignore your filter. Star filters keep paginating, and rows that contradict the star filter are dropped rather than billed.

Vacation Rentals

ParameterTypeDefaultDescription
vacationRentalsbooleanfalseSearch vacation rentals (houses, villas, apartments) instead of hotels.
rentalTypesstring[][]Rental types to include. 10 options: Apartments, Bungalows, Cabins, Chalets, Cottages, Gรฎtes, Holiday villages, Houses, Houseboats, Villas.

Localization

ParameterTypeDefaultDescription
countrystring"us"Country code for localizing results (ISO 3166-1 alpha-2). 43 countries supported.
languagestring"en"Language for result text (ISO 639-1). 19 languages supported.
currencystring"USD"Currency for prices (ISO 4217). 21 currencies supported.

Advanced

ParameterTypeDefaultDescription
maxPagesinteger1How far to keep going past the first page. Page 1 is Google's opening result block, typically 18โ€“20 properties. Each page after that comes from Google's "nearby properties" expansion and adds roughly 6โ€“17 new properties once duplicates are removed, so 3 usually returns 40โ€“50 properties in total on an unfiltered query. Set 0 to keep expanding until Google stops offering new properties. Ignored (first page only) when an amenity, property-type or rental-type filter is set, or when the party is not the default 2 adults โ€” expect 18โ€“20 results from those searches whatever you set here. You are billed per result, never per page.

Output

A search query produces one search metadata record plus one property record per result. A property token produces one property detail record. Every row carries a recordType field so you can split them apart.

Property record (recordType: "property")

{
"recordType": "property",
"query": "pet friendly hotels in Denver",
"pageNumber": 1,
"type": "Hotel",
"name": "Hilton Denver City Center",
"description": "Chic rooms & suites in a polished downtown hotel featuring a stylish restaurant & bar.",
"link": "https://www.google.com/travel/hotels/entity/ChYIxI-O36v-qpcpGgovbS8wbXZuc2Z0EAE?hl=en&gl=us",
"propertyToken": "ChYIxI-O36v-qpcpGgovbS8wbXZuc2Z0EAE",
"googlePlaceId": "0x876c78d75b3f3101:0x292eabf2bbe387c4",
"propertyId": "18387054143944481453",
"gpsCoordinates": { "latitude": 39.7469942, "longitude": -104.9901771 },
"hotelClass": "4-star hotel",
"extractedHotelClass": 4,
"images": [
"https://lh3.googleusercontent.com/...",
"https://lh3.googleusercontent.com/..."
],
"overallRating": 4.2,
"reviews": 4060,
"amenities": [
"Breakfast ($)",
"Free Wi-Fi",
"Parking ($)",
"Air conditioning",
"Pet-friendly",
"Fitness center",
"Bar",
"Restaurant"
],
"ratePerNight": { "extracted": 157.37, "currency": "USD", "formatted": "$157" }
}
FieldTypeDescription
recordTypestringAlways "property" for search results
querystringThe search query this result came from
pageNumberinteger1-indexed page number
typestring"Hotel" or "Vacation rental"
namestringProperty name
descriptionstringGoogle's editorial one-liner. First-page hotel results only; vacation rentals never have one
linkstringGoogle Hotels URL, carrying the same country and language as your run
propertyTokenstringToken you can pass back in propertyTokens
googlePlaceIdstringGoogle Place ID for cross-referencing
propertyIdstringNumeric Google property identifier, stable across runs
gpsCoordinatesobject{ latitude, longitude }
hotelClassstringClass label, localized ("4-star hotel", "4-Sterne-Hotel", "Entire villa")
extractedHotelClassintegerNumeric star class 1โ€“5, hotels only
imagesstring[]Image URLs
overallRatingnumberOverall guest rating 0.0โ€“5.0
reviewsintegerTotal review count
amenitiesstring[]Amenity labels Google lists for the property. First-page results only
ratePerNightobject{ extracted, currency, formatted } for the check-in and check-out dates you asked for
totalRateobject{ extracted, currency, formatted } for the check-in and check-out dates you asked for

Fields Google does not publish for a given property are left out of that row rather than filled with nulls.

Both rate fields are omitted whenever Google only quotes that property for some other set of dates, so a number you see is always a number for the stay you searched. The rest of the listing still comes back, so you keep the property, its link, its location, its rating and its amenities even when there is no quote for your dates.

Property detail record (recordType: "propertyDetail")

Returned for each entry in propertyTokens. It adds the property's own check-in and check-out times and its address, neither of which appears on a search card, and omits pricing, which Google does not publish on the property page.

{
"recordType": "propertyDetail",
"type": "Hotel",
"name": "Bellagio Hotel & Casino",
"link": "https://www.google.com/travel/hotels/entity/ChYIhJvE...?hl=en&gl=us",
"propertyToken": "ChYIhJvEzt34sfmCARoJL20vMDMzYnhzEAE",
"googlePlaceId": "0x80c8c430cb5147bd:0x82f2c7c5d9d10d84",
"propertyId": "18415970343024881596",
"address": "3600 S Las Vegas Blvd, Las Vegas, NV 89109",
"gpsCoordinates": { "latitude": 36.1129455, "longitude": -115.1765067 },
"checkInTime": "3:00 PM",
"checkOutTime": "11:00 AM",
"hotelClass": "5-star hotel",
"extractedHotelClass": 5,
"images": ["https://lh3.googleusercontent.com/..."],
"overallRating": 4.7,
"reviews": 143119
}
FieldTypeDescription
recordTypestringAlways "propertyDetail"
typestring"Hotel" or "Vacation rental"
namestringProperty name
linkstringGoogle Hotels URL for the property
propertyTokenstringThe token you supplied
googlePlaceIdstringGoogle Place ID
propertyIdstringNumeric Google property identifier
addressstringAddress as printed on the property page
gpsCoordinatesobject{ latitude, longitude }
checkInTimestringCheck-in time shown on the property page (e.g. "3:00 PM")
checkOutTimestringCheck-out time shown on the property page
hotelClassstringClass label
extractedHotelClassintegerNumeric star class 1โ€“5
imagesstring[]Image URLs
overallRatingnumberOverall guest rating 0.0โ€“5.0
reviewsintegerTotal review count
excludedAmenitiesstring[]Amenities the property page explicitly marks as not offered

Search metadata record (recordType: "searchMetadata")

One per query, pushed before that query's results.

{
"recordType": "searchMetadata",
"query": "hotels in Las Vegas",
"estimatedTotalResults": 7998,
"searchTimestamp": "2026-08-10T14:14:48Z",
"language": "en",
"country": "us",
"currency": "USD"
}
FieldTypeDescription
recordTypestringAlways "searchMetadata"
querystringThe search query
estimatedTotalResultsintegerGoogle's own rough count for the page it served. Useful for seeing whether a filter narrowed things, but it shifts between runs and regions, so don't read it as a market size
searchTimestampstringISO 8601 timestamp of when the search ran
languagestringLanguage the results were requested in
countrystringCountry the results were localized to
currencystringCurrency the prices are quoted in

Tips for Best Results

  • Always set dates โ€” rates and availability only appear when check-in and check-out are provided, and they drive Google's own price ordering
  • Go narrow, not deep โ€” three neighbourhood queries ("hotels in Le Marais", "hotels in Saint-Germain", "hotels in Montmartre") return far more distinct properties than one city-wide query with a high maxPages, because each query gets its own fresh first page
  • Amenity, property-type and rental-type filters stop at page one โ€” so does any party other than 2 adults. That is Google's behaviour, not a limit we chose: it applies those to the opening result block and nothing after it. Expect 18โ€“20 rows from those searches and split the market across several queries if you need more. Star filters are the exception and keep paginating
  • Match currency to destination โ€” prices in the native currency avoid FX rounding artifacts. Use EUR for European hotels, JPY for Japan
  • Stack filters carefully โ€” combining stars, amenities and property type can over-constrain a small market down to a handful of properties. Start broad, then add one filter at a time
  • Amenities and descriptions come from page one โ€” if those two fields matter to your analysis, run more queries at maxPages: 1 rather than fewer queries at maxPages: 5
  • Hotels and rentals are two different searches โ€” Google keeps them in separate modes, so run two jobs if you need both
  • Children need ages โ€” when children > 0, list one age per child in childrenAges, or Google prices the room for a different party than you asked for

Pricing

From $1 per 1,000 results โ€” a flat pay-per-result rate. Bronze, Silver and Gold subscribers pay progressively less; the table below shows total cost at each discount tier.

ResultsNo discountBronzeSilverGold
100$0.120$0.113$0.106$0.100
1,000$1.20$1.13$1.06$1.00
10,000$12.00$11.30$10.60$10.00
100,000$120.00$113.00$106.00$100.00

A "result" is any row in your dataset โ€” one per property, plus one metadata row per query. There are no compute or time-based charges; you pay per result, plus a small fixed per-run start fee. Storage and other platform fees depend on your Apify plan.

Integrations

Export data in JSON, CSV, Excel, XML, or RSS. Connect to 1,500+ apps via:

  • Zapier / Make / n8n โ€” Workflow automation
  • Google Sheets โ€” Direct spreadsheet export
  • Slack / Email โ€” Notifications on new results
  • Webhooks โ€” Custom API integrations
  • Apify API โ€” Full programmatic access to runs and datasets

This actor is designed for legitimate travel market research, competitive intelligence, rate tracking, and content enrichment. Users are responsible for complying with applicable laws and Google's Terms of Service. Do not use extracted data for spam, harassment, misrepresentation, or any illegal purpose. The actor collects only publicly visible property information โ€” no personal user data.