Google Hotels Search Scraper avatar
Google Hotels Search Scraper

Pricing

Pay per event

Go to Apify Store
Google Hotels Search Scraper

Google Hotels Search Scraper

Extract comprehensive hotel data from Google Hotels including prices, ratings, amenities, property details, and images. Supports advanced filtering, vacation rentals, localization, and multi-page pagination. Ideal for market research, price monitoring, and travel applications.

Pricing

Pay per event

Rating

5.0

(3)

Developer

John

John

Maintained by Community

Actor stats

3

Bookmarked

6

Total users

4

Monthly active users

9 hours ago

Last modified

Share

๐Ÿจ Google Hotels Search Scraper

The most powerful, reliable, and feature-rich Google Hotels search scraper for Apify

๐Ÿ’ก What is Google Hotels Search Scraper?

A Google Hotels Search Scraper is a smart automation tool that helps you extract hotel property listings, prices, ratings, amenities, images, and detailed property information from Google Hotels โ€” all in structured data formats like JSON, CSV, or Excel.

This scraper lets you turn Google Hotels' vast database into a valuable dataset for market research, price monitoring, competitive analysis, or travel planning. Whether you're building hotel comparison tools, monitoring competitor pricing, conducting market analysis, or creating travel applications, you'll gain actionable insights fast โšก.

โœ… SEO Benefit: By using structured Google Hotels data, businesses can optimize hotel listing pages, monitor competition, and create data-rich content that boosts organic visibility.


๐Ÿ“ฆ What Data Can You Extract with Google Hotels Scraper?

๐Ÿท๏ธ Data Type๐Ÿ“‹ Description
๐Ÿจ Property DetailsHotel name, description, address, GPS coordinates, property token
๐Ÿ’ต Pricing InformationRate per night, total rate, deals, currency
โญ Ratings & ReviewsOverall rating, location rating, number of reviews, rating breakdown
๐Ÿ–ผ๏ธ ImagesProperty images and thumbnails
๐Ÿ›Ž๏ธ AmenitiesComplete list of amenities (Wi-Fi, pool, parking, etc.)
๐Ÿ“ Location DataAddress, GPS coordinates, nearby places
๐Ÿท๏ธ Property TypeHotel class, star ratings, property type (resort, spa, etc.)
๐Ÿ“ž Contact InfoPhone number, phone link, check-in/check-out times
๐ŸŽฏ Filters & RefinementsAvailable search filters and refinement options
๐Ÿ“Š Search MetadataTotal results, pages processed, pagination info

This structured Google Hotels dataset can be exported for analysis, visualization, or integration into your travel and hospitality workflows.


โš™๏ธ Key Features of Google Hotels Scraper

โœจ Comprehensive Data Coverage โ€” Extract every essential data field: prices, descriptions, images, ratings, amenities, and property details.

๐Ÿ” Advanced Filtering โ€” Filter by price range, star ratings, amenities, property types, guest ratings, and vacation rental options to get precisely the data you need.

๐ŸŒ Localization Support โ€” Search in different countries and languages with currency support for accurate pricing in local markets.

๐Ÿ–๏ธ Vacation Rentals โ€” Search for vacation rentals with filters for bedrooms, bathrooms, and rental types (houses, villas, apartments, etc.).

๐Ÿ“„ Intelligent Pagination โ€” Automatic handling of pagination with support for fetching multiple pages of results.

๐ŸŽฏ Two Search Modes โ€” Search by query (location-based) or fetch detailed information for a specific property using a property token.

๐Ÿ’ฐ Cost-Effective Pricing โ€” Pay only for what you use with transparent per-page pricing. No hidden fees or monthly subscriptions.

๐Ÿ›ก๏ธ Enterprise-Grade Reliability โ€” Built for developers and businesses who demand reliability. Comprehensive error handling, robust logging, and production-ready code.

๐Ÿ“ฆ Structured Output โ€” Clean, structured JSON output ready for immediate use in your applications.


๐Ÿ“– Usage Examples

Example 0: Basic Search (Hotels in Paris)

Search for hotels with a simple query and dates.

{
"q": "hotels in Paris",
"check_in_date": "2025-12-13",
"check_out_date": "2025-12-14",
"adults": 2,
"max_pages": 1
}

Example 1: Search with Dates and Guests

Search for resorts with specific guest configuration.

{
"q": "Bali Resorts",
"check_in_date": "2025-12-13",
"check_out_date": "2025-12-14",
"adults": 2,
"children": 0,
"currency": "USD",
"max_pages": 1
}

Example 2: Search with Filters (Price, Stars, Amenities, Property Types)

Search for hotels with comprehensive filtering options.

{
"q": "hotels in New York",
"check_in_date": "2025-12-13",
"check_out_date": "2025-12-14",
"adults": 2,
"min_price": "100",
"max_price": "300",
"stars": "4,5",
"amenities": "35,40",
"property_type": "17,18",
"currency": "USD",
"max_pages": 1
}

Filter ID Reference:

  • Amenities: 35 = Free Wi-Fi, 40 = Air-conditioned (see full list below)
  • Property Types: 17 = Resorts, 18 = Spa hotels (see full list below)

Search for vacation rentals with family-friendly options.

{
"q": "vacation rentals in Miami",
"check_in_date": "2025-12-13",
"check_out_date": "2025-12-20",
"adults": 4,
"children": 2,
"children_ages": "5,8",
"vacation_rentals": true,
"bedrooms": 2,
"bathrooms": 2,
"currency": "USD",
"max_pages": 1
}

Example 4: Property Details (using property_token)

Fetch detailed information about a specific property using its token.

{
"property_token": "ChYIq6y...",
"max_pages": 1
}

Note: You can obtain a property_token from the property_token field in search results. This mode returns comprehensive property details including all amenities, images, reviews, and essential information.

Example 5: Pagination (Multiple Pages)

Search across multiple pages to get more results.

{
"q": "hotels in Tokyo",
"check_in_date": "2025-12-13",
"check_out_date": "2025-12-15",
"adults": 2,
"currency": "USD",
"max_pages": 2
}

Example 6: Localized Search (Different Country/Language)

Search in different countries and languages with local currency.

{
"q": "hotels in London",
"gl": "uk",
"hl": "en",
"currency": "GBP",
"check_in_date": "2025-12-13",
"check_out_date": "2025-12-14",
"adults": 2,
"max_pages": 1
}

๐Ÿ” Input Parameters

ParameterTypeRequiredDefaultDescription
qstringโš ๏ธ Conditional-Search query string (e.g., "hotels in Paris", "Bali Resorts"). Required if property_token is not provided. Either q or property_token must be provided.
property_tokenstringโš ๏ธ Conditional-Google Hotels property token for a specific hotel property. Use this to get detailed information about a specific property. Required if q is not provided. Either q or property_token must be provided.
glstringโŒ"us"Country code for localization (ISO 3166-1 alpha-2, e.g., "us", "fr", "uk"). Optional.
hlstringโŒ"en"Language code for localization (ISO 639-1, e.g., "en", "fr", "es"). Optional.
currencystringโŒBased on countryCurrency code for prices (ISO 4217, e.g., "USD", "EUR", "GBP"). Optional.
check_in_datestringโš ๏ธ Recommended-Check-in date in YYYY-MM-DD format (e.g., "2025-12-13"). Recommended when using search query (q). Must be today or in the future. Optional.
check_out_datestringโš ๏ธ Recommended-Check-out date in YYYY-MM-DD format (e.g., "2025-12-14"). Recommended when using search query (q). Must be after check_in_date. Optional.
adultsintegerโŒ2Number of adult guests. Optional. Minimum: 1, Maximum: 50.
childrenintegerโŒ0Number of child guests. Optional. Minimum: 0, Maximum: 50.
children_agesstringโš ๏ธ Conditional-Comma-separated list of children ages as integers (e.g., "5,8,12"). Required if children > 0. Must have the same number of ages as children. Optional otherwise.
min_pricestringโŒ"0.00"Minimum price filter in the specified currency. Optional. Must be a valid number (e.g., "50" or "99.99"). Default: "0.00" (no minimum).
max_pricestringโŒ"0.00"Maximum price filter in the specified currency. Optional. Must be a valid number (e.g., "200" or "299.99"). Default: "0.00" (no maximum).
starsstringโŒ-Comma-separated list of star ratings to filter by (e.g., "3,4,5" for 3, 4, or 5 star hotels). Each value must be an integer between 1 and 5. Optional.
amenitiesstringโŒ-Comma-separated list of amenity IDs to filter by (integer IDs). Optional. See Amenity IDs section below for available options.
hotel_classstringโŒ-Comma-separated list of hotel class IDs to filter by (integer IDs). Optional.
guest_ratingstringโŒ"0.0"Minimum guest rating filter (0.0 to 5.0). Optional. Must be a valid number (e.g., "4.0" or "4.5"). Default: "0.0" (no minimum).
property_typestringโŒ-Comma-separated list of property type IDs to filter by (integer IDs). Optional. See Property Type IDs section below for available options.
vacation_rentalsbooleanโŒfalseWhether to include vacation rentals in search results. Optional. Defaults to false.
rental_typestringโŒ-Comma-separated list of rental type IDs to filter by (integer IDs). Only relevant when vacation_rentals is true. Optional. See Vacation Rental Type IDs section below.
bedroomsintegerโŒ-Number of bedrooms filter for vacation rentals. Only relevant when vacation_rentals is true. Optional. Minimum: 1, Maximum: 20.
bathroomsintegerโŒ-Number of bathrooms filter for vacation rentals. Only relevant when vacation_rentals is true. Optional. Minimum: 1, Maximum: 20.
max_pagesintegerโŒ1Maximum number of pages to fetch (1-indexed). Set to 0 for no limit (fetch all available pages). Default: 1. Each page is charged separately.
output_filestringโŒAuto-generatedOptional filename to save results as JSON. If not provided, will auto-generate based on query and timestamp.

๐Ÿท๏ธ Property Type IDs

Hotel Property Types

Use these IDs when searching for hotels (when vacation_rentals is false or not specified):

IDProperty Type
12Beach hotels
13Boutique hotels
14Hostels
15Inns
16Motels
17Resorts
18Spa hotels
19Bed and breakfasts
20Other
21Apartment hotels
22Minshuku
23Japanese-style business hotels
24Ryokan

Example: "property_type": "17,18" filters for Resorts and Spa hotels.

Vacation Rental Property Types

Use these IDs when searching for vacation rentals (when vacation_rentals is true):

IDProperty Type
1Apartments
2Bungalows
3Cabins
4Chalets
5Cottages
6Gรฎtes
7Holiday villages
8Houses
9Houseboats
10Villas
11Other
21Apartment hotels

Example: "rental_type": "8,10" filters for Houses and Villas.


๐Ÿ›Ž๏ธ Amenity IDs

Hotel Amenities

Use these IDs when searching for hotels (when vacation_rentals is false or not specified):

IDAmenity
1Free parking
3Parking
4Indoor pool
5Outdoor pool
6Pool
7Fitness center
8Restaurant
9Free breakfast
10Spa
11Beach access
12Child-friendly
15Bar
19Pet-friendly
22Room service
35Free Wi-Fi
40Air-conditioned
52All-inclusive available
53Wheelchair accessible
61EV charger

Example: "amenities": "35,40" filters for Free Wi-Fi and Air-conditioned properties.

Vacation Rental Amenities

Use these IDs when searching for vacation rentals (when vacation_rentals is true):

IDAmenity
1Free parking
3Parking
4Indoor pool
5Outdoor pool
6Pool
7Fitness center
8Restaurant
9Free breakfast
10Spa
11Beach access
12Child-friendly
15Bar
19Pet-friendly
22Room service
35Free Wi-Fi
40Air-conditioned
52All-inclusive available
53Wheelchair accessible
61EV charger

Note: The amenity IDs are the same for both hotels and vacation rentals.


๐Ÿ“Š Output Format

Dataset Item Structure

Each page of results is pushed as a separate dataset item with the following structure:

{
"search_parameters": {
"q": "hotels in Paris",
"property_token": null,
"gl": "us",
"hl": "en",
"currency": "USD",
"check_in_date": "2025-12-13",
"check_out_date": "2025-12-14",
"adults": 2,
"children": 0,
"children_ages": null,
"min_price": null,
"max_price": null,
"stars": null,
"amenities": null,
"hotel_class": null,
"guest_rating": null,
"property_type": null,
"vacation_rentals": false,
"rental_type": null,
"bedrooms": null,
"bathrooms": null,
"max_pages": 1
},
"search_metadata": {
"total_results": 1250,
"hotels_results_state": "Showing results for hotels",
"properties_count": 20,
"ads_count": 3,
"pages_processed": 1,
"max_pages_set": 1,
"pagination_limit_reached": false
},
"search_timestamp": "2025-12-13T10:30:00.123456",
"page_number": 1,
"properties": [
{
"type": "Hotel",
"name": "Luxury Hotel Paris",
"description": "Elegant hotel in the heart of Paris...",
"link": "https://www.google.com/travel/hotels/entity/...",
"property_token": "ChYIq6y...",
"gps_coordinates": {
"latitude": 48.8566,
"longitude": 2.3522
},
"check_in_time": "15:00",
"check_out_time": "11:00",
"rate_per_night": {
"extracted": 250,
"currency": "USD"
},
"total_rate": {
"extracted": 250,
"currency": "USD"
},
"deal": "Special offer",
"deal_description": "Limited time discount",
"nearby_places": [],
"hotel_class": "4 stars",
"extracted_hotel_class": 4,
"images": [
"https://example.com/image1.jpg",
"https://example.com/image2.jpg"
],
"overall_rating": 4.5,
"reviews": 1234,
"ratings": [],
"location_rating": 4.7,
"reviews_breakdown": [],
"amenities": [
"Free Wi-Fi",
"Air-conditioned",
"Fitness center"
],
"eco_certified": false,
"address": "123 Rue de la Paix, 75001 Paris, France",
"phone": "+33 1 23 45 67 89",
"phone_link": "tel:+33123456789",
"essential_info": []
}
],
"ads": [],
"filters": [
{
"key": "price",
"values": []
}
],
"refine_by": []
}

Property Details Mode

When using property_token, the output includes a property_details object with comprehensive information:

{
"search_parameters": {
"property_token": "ChYIq6y...",
"q": null
},
"search_metadata": {
"hotels_results_state": "Showing results for property details"
},
"search_timestamp": "2025-12-13T10:30:00.123456",
"page_number": 1,
"property_details": {
"type": "Hotel",
"name": "Luxury Hotel Paris",
"description": "Elegant hotel in the heart of Paris...",
"link": "https://www.google.com/travel/hotels/entity/...",
"address": "123 Rue de la Paix, 75001 Paris, France",
"property_token": "ChYIq6y...",
"phone": "+33 1 23 45 67 89",
"phone_link": "tel:+33123456789",
"gps_coordinates": {
"latitude": 48.8566,
"longitude": 2.3522
},
"check_in_time": "15:00",
"check_out_time": "11:00",
"rate_per_night": {
"extracted": 250,
"currency": "USD"
},
"total_rate": {
"extracted": 250,
"currency": "USD"
},
"images": [
"https://example.com/image1.jpg"
],
"overall_rating": 4.5,
"reviews": 1234,
"location_rating": 4.7,
"amenities": [
"Free Wi-Fi",
"Air-conditioned"
],
"excluded_amenities": [],
"essential_info": []
},
"properties": [],
"ads": [],
"filters": [],
"refine_by": []
}

Output Fields

  • search_parameters: Complete search configuration used for the query
  • search_metadata: Summary statistics about the search results including total results available, pages processed, and pagination status
  • search_timestamp: ISO timestamp when the search was performed
  • page_number: Current page number (1-indexed)
  • properties: Array of hotel property listings with comprehensive details
  • ads: Array of advertisement listings (if any)
  • filters: Available filter options for the search query (typically on first page only)
  • refine_by: Available refinement options (typically on first page only)
  • property_details: Detailed information about a specific property (only present when property_token is used)

Property Fields

Each item in properties contains:

  • type: Property type (e.g., "Hotel", "Vacation rental")
  • name: Property name
  • description: Property description
  • link: Direct link to the property page on Google Hotels
  • property_token: Unique token for fetching detailed property information
  • gps_coordinates: Latitude and longitude
  • check_in_time / check_out_time: Check-in and check-out times
  • rate_per_night: Rate per night with currency
  • total_rate: Total rate for the stay with currency
  • deal / deal_description: Special deals or offers
  • hotel_class: Hotel class/star rating (string)
  • extracted_hotel_class: Hotel class as integer (1-5)
  • images: Array of property image URLs
  • overall_rating: Overall rating (0.0 to 5.0)
  • reviews: Number of reviews
  • location_rating: Location rating (0.0 to 5.0)
  • amenities: Array of amenity names
  • eco_certified: Whether the property is eco-certified
  • address: Full property address
  • phone / phone_link: Contact phone number

๐Ÿ’ฐ Pricing

This Actor uses a pay-per-event pricing model with transparent pricing:

  • Setup Fee: $0.02 per Actor run (one-time charge for instance setup and provisioning)
  • Page Processing: $0.02 per page of hotel search results processed

You only pay for the pages you actually process, making it cost-effective for both small and large-scale searches. Each page is billed separately, so you have full control over your costs.

Example Cost Calculation:

  • 1 page search: $0.02 (setup) + $0.02 (1 page) = $0.04 total
  • 5 page search: $0.02 (setup) + $0.10 (5 pages) = $0.12 total

๐ŸŽฏ Use Cases

  • Price Monitoring: Track hotel prices over time for specific locations or properties
  • Market Research: Analyze hotel availability, pricing trends, and property information
  • Competitive Analysis: Compare prices, amenities, and ratings across different hotels
  • Property Discovery: Find hotels matching specific criteria (price, amenities, location, ratings)
  • Travel Integration: Build hotel search and booking features in travel applications
  • Data Analytics: Collect hotel data for business intelligence and analysis
  • Hotel Comparison Tools: Build applications that compare hotels across multiple criteria
  • Lead Generation: Identify popular hotels and trending properties for business opportunities
  • Vacation Planning: Research vacation rentals with specific requirements (bedrooms, bathrooms, amenities)

โ“ Frequently Asked Questions

Q1. How do I get started with Google Hotels Scraper?

Simply provide a q (search query) parameter with your search term and check_in_date / check_out_date, then run the Actor. The scraper will automatically extract hotel data and return structured JSON results.

Q2. Do I need to provide both q and property_token?

No, you only need to provide one of them:

  • Use q for location-based searches (e.g., "hotels in Paris")
  • Use property_token to fetch detailed information about a specific property

Q3. Are check-in and check-out dates required?

When using a search query (q), check-in and check-out dates are recommended for best results. The API may work without them, but results are typically more accurate with dates. When using property_token, dates are optional.

Q4. Can I filter results by price range?

Yes! Use the min_price and max_price parameters to filter hotels within your desired price range. Both parameters accept strings (e.g., "100" or "299.99"). Set to "0.00" (the default) to remove the price limit. Prices are in the currency specified by the currency parameter.

Q5. What star ratings can I filter by?

You can filter by star ratings 1 through 5. Use the stars parameter with a comma-separated list (e.g., "3,4,5" for 3, 4, or 5 star hotels).

Q6. How do I search for vacation rentals?

Set vacation_rentals to true and optionally use rental_type, bedrooms, and bathrooms to filter vacation rentals. See the Vacation Rental Property Types section for available rental types.

Q7. What amenities can I filter by?

See the Amenity IDs section above for a complete list. Common amenities include Free Wi-Fi (35), Air-conditioned (40), Pool (6), Free parking (1), and Pet-friendly (19).

Q8. How does pagination work?

The scraper automatically handles pagination using next_page_token. Set max_pages to control how many pages to fetch:

  • max_pages: 1 (default) - Fetch only the first page
  • max_pages: 5 - Fetch up to 5 pages
  • max_pages: 0 - Fetch all available pages (no limit)

Each page is charged separately.

Q9. Can I search in different countries and languages?

Yes! Use the gl (country code) and hl (language code) parameters for localization. Also set currency to get prices in the local currency.

Q10. How do I get detailed information about a specific property?

Use the property_token parameter with a token obtained from search results. This returns comprehensive property details including all amenities, images, reviews, and essential information.

Q11. What data format does the scraper return?

The scraper returns structured JSON data with hotel details, prices, ratings, amenities, and metadata. Results are automatically cleaned and validated for schema compliance.

Q12. Can I export the data?

Yes! Results are stored in Apify's dataset format and can be exported as JSON, CSV, Excel, or accessed via API.

Q13. What happens if I specify children but no ages?

If children > 0, you must provide children_ages with the same number of ages as children. For example, if children: 2, provide children_ages: "5,8" for two children aged 5 and 8.

Q14. Can I filter by both hotels and vacation rentals?

When vacation_rentals is false (default), only hotels are returned. When vacation_rentals is true, only vacation rentals are returned. You cannot get both in a single search, but you can run two separate searches.


๐Ÿ“ Technical Notes

  • Results are sorted by relevance by default (Google Hotels API default)
  • The check_in_date must be today or in the future (cannot be in the past)
  • The check_out_date must be after check_in_date
  • When children > 0, children_ages is required and must have the same number of values as children
  • Child ages must be integers between 0 and 17
  • Price filters (min_price, max_price) must be provided as strings (e.g., "50" or "99.99"). They are validated using regex pattern ^\d+(\.\d+)?$ and converted to integers for the API. Setting to "0.00" (the default) removes that price limit.
  • Guest rating (guest_rating) must be provided as a string (e.g., "4.0" or "4.5"). Setting to "0.0" (the default) removes the rating filter.
  • Property type and amenity IDs must match the type of search (hotel vs. vacation rental)
  • Filters are typically only included on the first page of results
  • Each page is pushed as a separate dataset item for accurate per-page billing
  • Results are automatically cleaned and validated to ensure JSON-serializable output
  • The max_pages parameter controls how many pages to fetch. Set to 0 for no limit (fetch all available pages)
  • Property tokens can be obtained from the property_token field in search results

โš ๏ธ Common Validation Errors

  • Invalid Amenity ID 2: Amenity ID 2 does not exist in the Google Hotels API. The amenity IDs jump from 1 (Free parking) directly to 3 (Parking). Use "amenities": "1,3" instead of "amenities": "1,2,3".
  • hotel_class with vacation_rentals: The hotel_class parameter is not allowed when vacation_rentals is set to true. Remove hotel_class from your request when searching for vacation rentals, or set vacation_rentals to false when using hotel_class.

๐Ÿš€ Ready to Collect Google Hotels Data?

Start using Google Hotels Search Scraper today and transform public hotel listings into actionable insights. Whether you're building hotel comparison tools, monitoring competitor pricing, conducting market research, or creating travel applications, you'll have clean, structured data in minutes!

Made with โค๏ธ

Transform your hotel search automation with the most reliable and feature-rich Google Hotels scraper on Apify.


Last Updated: 2025.11.16