Google Hotels Scraper
Pricing
from $1.00 / 1,000 results
Google Hotels Scraper
[💰 $1.0 / 1K] Extract hotel and vacation rental listings from Google Hotels — prices, ratings, amenities, images, GPS, and contact info. Filter by price, stars, amenities, property type, and guest rating across 190+ countries.
Pricing
from $1.00 / 1,000 results
Rating
0.0
(0)
Developer
SolidCode
Actor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Extract complete hotel and vacation rental data from Google Hotels at scale. Get property names, rates, star ratings, guest reviews, amenities, GPS coordinates, images, check-in/out times, phone numbers, and 25+ data fields for any destination worldwide — with full support for dates, guest counts, filters, localization, and property-level detail lookups.
Why This Scraper?
- Two modes in one actor — Search by location (e.g., "hotels in Paris") for browsable results, or pass property tokens to pull full details for specific hotels you already care about
- 25+ data fields per property — Name, rate per night, total stay cost, star class, overall rating, review count, amenity list, full address, GPS coordinates, contact phone, check-in/out times, image gallery, deals, eco-certification, and more
- Human-readable filters — Pick amenities (Free Wi-Fi, Pool, Pet-friendly, EV charger…) and property types (Resorts, Boutique hotels, Hostels…) from a dropdown — no hunting down numeric IDs in Google's internal documentation
- Vacation rentals mode — Flip one toggle to search houses, villas, cabins, cottages, and apartments instead of hotels, with dedicated rental-type filters
- Full localization — 40+ countries, 19 languages, and 21 currencies so prices and property text match the market you're targeting
- Batch input — Feed an array of search queries or an array of property tokens and run them all in a single job
- Clean numeric pricing —
ratePerNightandtotalRatecome back as{ extracted: number, currency: "USD" }objects, ready to sort, compare, and load into a spreadsheet - Transparent, pay-per-page pricing — $0.02 per search page with no per-result surprises
Use Cases
Travel & Hospitality Market Research
- Track nightly rates across a city, season, or competitive set
- Monitor availability and pricing trends for a destination over time
- Benchmark star class, guest ratings, and amenity mix against competitors
Lead Generation & Sales
- Build prospect lists of boutique hotels, resorts, or bed & breakfasts in any region
- Extract phone numbers and addresses for direct outreach campaigns
- Target independent properties by filtering out major chains on star class and property type
Travel Content & Affiliate Sites
- Populate "Best hotels in…" or "Top vacation rentals in…" directories with fresh data
- Keep rate cards, review counts, and amenity lists current on destination guides
- Enrich your own travel app with Google's curated property metadata
Revenue Management & Compset Analysis
- Pull competitor rates for the same check-in/out window and guest count
- Detect deal flags and discount badges across a market
- Compare your property's amenity coverage against neighbors
Vacation Rental Intelligence
- Survey houses, villas, and cabins by bedrooms, bathrooms, and location
- Track nightly rates for short-term rental competitors
- Build destination-specific rental inventories
Getting Started
Simple Search
Just enter a location query — defaults handle the rest (2 adults, next-available dates, 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"}
Filtered Search
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"],"maxPages": 3}
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 a previous run? Pull full detail records directly:
{"propertyTokens": ["ChkI9Pbw4oLblKdlGg0vZy8xMXc0NnJoMXg3EAE"],"checkInDate": "2026-08-01","checkOutDate": "2026-08-05"}
Input Reference
Search
| Parameter | Type | Default | Description |
|---|---|---|---|
searchQueries | string[] | ["hotels in Paris"] | Location-based search queries such as "hotels in Paris" or "Bali resorts". Each query produces its own set of results. |
propertyTokens | string[] | [] | Google Hotels property tokens (from earlier search results) to fetch full property details for specific properties. |
Provide at least one of the two. You can also combine them in a single run.
Dates & Guests
| Parameter | Type | Default | Description |
|---|---|---|---|
checkInDate | string (YYYY-MM-DD) | 14 days from today | Check-in date. Must be today or a future date. |
checkOutDate | string (YYYY-MM-DD) | day after check-in | Check-out date. Must be after check-in. |
adults | integer | 2 | Number of adult guests (1–50). |
children | integer | 0 | Number of child guests (0–50). |
childrenAges | string | "" | Comma-separated ages (e.g. "5,8,12"). Required when children > 0. Each age 0–17. |
Filters
| Parameter | Type | Default | Description |
|---|---|---|---|
stars | string[] | [] | Only include hotels with these star ratings. Options: "1" – "5". |
amenities | string[] | [] | Only include properties that offer all of these amenities. 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. |
propertyTypes | string[] | [] | Only include these hotel property types. 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. |
Vacation Rentals
| Parameter | Type | Default | Description |
|---|---|---|---|
vacationRentals | boolean | false | Search vacation rentals (houses, villas, apartments) instead of hotels. |
rentalTypes | string[] | [] | Rental types to include. Options: Apartments, Bungalows, Cabins, Chalets, Cottages, Gîtes, Holiday villages, Houses, Houseboats, Villas, Apartment hotels. |
Localization
| Parameter | Type | Default | Description |
|---|---|---|---|
country | string | "us" | Country code for localizing results (ISO 3166-1 alpha-2). 40+ countries supported. |
language | string | "en" | Language for result text (ISO 639-1). 19 languages supported. |
currency | string | "USD" | Currency for prices (ISO 4217). 21 currencies supported. |
Advanced
| Parameter | Type | Default | Description |
|---|---|---|---|
maxPages | integer | 1 | Maximum number of result pages to fetch per search query. Set to 0 for all available pages. |
Output
Each search produces one metadata record per query plus one property record per result. Here's a typical property row:
{"query": "hotels in Paris","pageNumber": 1,"type": "Hotel","name": "Le Meurice","description": "Elegant palace hotel across from the Tuileries with Michelin-starred dining.","link": "https://www.google.com/travel/hotels/entity/ChkI...","propertyToken": "ChkI9Pbw4oLblKdlGg0vZy8xMXc0NnJoMXg3EAE","googlePlaceId": "ChIJyRd3u9Fu5kcRnvqiJqZULNk","address": "228 Rue de Rivoli, 75001 Paris, France","gpsCoordinates": { "latitude": 48.865074, "longitude": 2.328047 },"checkInTime": "15:00","checkOutTime": "12:00","ratePerNight": { "extracted": 1850, "currency": "USD", "formatted": "$1,850" },"totalRate": { "extracted": 3700, "currency": "USD", "formatted": "$3,700" },"deal": null,"dealDescription": null,"hotelClass": "5-star hotel","extractedHotelClass": 5,"images": ["https://lh3.googleusercontent.com/...","https://lh3.googleusercontent.com/..."],"overallRating": 4.7,"reviews": 3421,"locationRating": 4.9,"amenities": ["Free Wi-Fi","Spa","Restaurant","Bar","Air conditioning","Room service"],"ecoCertified": false,"phone": "+33 1 44 58 10 10","phoneLink": "tel:+33144581010","nearbyPlaces": [],"essentialInfo": []}
And a metadata row (one per query, on the first page):
{"query": "hotels in Paris","totalResults": 1427,"pagesProcessed": 1,"searchTimestamp": "2026-04-21T14:08:52Z","filters": [],"refineBy": []}
All Available Fields
Property result fields
| Field | Type | Description |
|---|---|---|
query | string | The search query this result came from |
pageNumber | integer | 1-indexed page number |
type | string | "Hotel" or "Vacation rental" |
name | string | Property name |
description | string | Short property description |
link | string | Google Hotels URL for the property |
propertyToken | string | Token usable with propertyTokens to fetch detailed info |
googlePlaceId | string | Google Place ID for cross-referencing |
address | string | Full formatted address |
gpsCoordinates | object | { latitude, longitude } |
checkInTime | string | Local check-in time (e.g. "15:00") |
checkOutTime | string | Local check-out time |
ratePerNight | object | { extracted, currency, formatted } |
totalRate | object | { extracted, currency, formatted } for the full stay |
deal | string | Deal badge name, if any |
dealDescription | string | Deal details |
hotelClass | string | Human-readable class label (e.g. "4-star hotel", "Entire villa") |
extractedHotelClass | integer | Numeric star class 1–5 |
images | string[] | Image URLs |
overallRating | number | Overall guest rating 0.0–5.0 |
reviews | integer | Total review count |
locationRating | number | Location-specific rating 0.0–5.0 |
amenities | string[] | Amenity labels the property offers |
ecoCertified | boolean | Eco-certification flag |
phone | string | Contact phone number |
phoneLink | string | tel: link |
nearbyPlaces | array | Nearby attractions and landmarks |
essentialInfo | array | Highlighted info from Google (policies, features) |
Extra fields when using propertyTokens
| Field | Type | Description |
|---|---|---|
excludedAmenities | string[] | Amenities the property explicitly does not offer |
detailedReviews | array | Review score breakdown by category |
Search metadata fields
| Field | Type | Description |
|---|---|---|
query | string | The search query |
totalResults | integer | Total results available on Google |
pagesProcessed | integer | How many pages this run fetched |
searchTimestamp | string | ISO 8601 timestamp of when the search ran |
filters | array | Available filter options returned by Google |
refineBy | array | Suggested refinements for narrowing the query |
Tips for Best Results
- Be specific in queries — "hotels in Paris 1st arrondissement" returns tighter, more relevant results than "hotels in Paris"
- Always set dates — Rates and availability only appear when check-in and check-out are provided, and they drive Google's price sorting
- Match currency to destination — Prices in the native currency are cleaner (no FX rounding artifacts). Use
currency: "EUR"for European hotels,"JPY"for Japan, etc. - Stack filters thoughtfully — Combining stars, amenities, and property type can over-constrain a market. Start broad, then filter
- First page is richest — Page 1 returns the fullest property cards. If you need deep coverage, set
maxPageshigher, but expect lighter detail on subsequent pages — then passpropertyTokenback in a second run for complete detail - Vacation rentals are separate — Hotels and vacation rentals come from two different modes on Google. If you need both, run two jobs
- Children require ages — If
children > 0,childrenAgesmust list exactly that many comma-separated integers (0–17), or Google rejects the request
Pricing
$0.02 per search page — transparent, predictable, pay only for what you fetch.
| Pages | Estimated Cost |
|---|---|
| 10 | $0.20 |
| 100 | $2.00 |
| 1,000 | $20.00 |
| 10,000 | $200.00 |
Each search query fetches maxPages pages (default 1). Each page typically returns ~18–20 properties. Property-token detail lookups count as one page each. Platform fees (compute, proxy, storage) depend on your Apify plan and are additional.
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
Legal & Ethical Use
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.