Google Hotels Search Scraper
Pricing
Pay per event
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
Actor stats
3
Bookmarked
6
Total users
4
Monthly active users
9 hours ago
Last modified
Categories
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 Details | Hotel name, description, address, GPS coordinates, property token |
| ๐ต Pricing Information | Rate per night, total rate, deals, currency |
| โญ Ratings & Reviews | Overall rating, location rating, number of reviews, rating breakdown |
| ๐ผ๏ธ Images | Property images and thumbnails |
| ๐๏ธ Amenities | Complete list of amenities (Wi-Fi, pool, parking, etc.) |
| ๐ Location Data | Address, GPS coordinates, nearby places |
| ๐ท๏ธ Property Type | Hotel class, star ratings, property type (resort, spa, etc.) |
| ๐ Contact Info | Phone number, phone link, check-in/check-out times |
| ๐ฏ Filters & Refinements | Available search filters and refinement options |
| ๐ Search Metadata | Total 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)
Example 3: Vacation Rentals Search
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
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
q | string | โ ๏ธ 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_token | string | โ ๏ธ 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. |
gl | string | โ | "us" | Country code for localization (ISO 3166-1 alpha-2, e.g., "us", "fr", "uk"). Optional. |
hl | string | โ | "en" | Language code for localization (ISO 639-1, e.g., "en", "fr", "es"). Optional. |
currency | string | โ | Based on country | Currency code for prices (ISO 4217, e.g., "USD", "EUR", "GBP"). Optional. |
check_in_date | string | โ ๏ธ 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_date | string | โ ๏ธ 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. |
adults | integer | โ | 2 | Number of adult guests. Optional. Minimum: 1, Maximum: 50. |
children | integer | โ | 0 | Number of child guests. Optional. Minimum: 0, Maximum: 50. |
children_ages | string | โ ๏ธ 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_price | string | โ | "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_price | string | โ | "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). |
stars | string | โ | - | 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. |
amenities | string | โ | - | Comma-separated list of amenity IDs to filter by (integer IDs). Optional. See Amenity IDs section below for available options. |
hotel_class | string | โ | - | Comma-separated list of hotel class IDs to filter by (integer IDs). Optional. |
guest_rating | string | โ | "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_type | string | โ | - | Comma-separated list of property type IDs to filter by (integer IDs). Optional. See Property Type IDs section below for available options. |
vacation_rentals | boolean | โ | false | Whether to include vacation rentals in search results. Optional. Defaults to false. |
rental_type | string | โ | - | 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. |
bedrooms | integer | โ | - | Number of bedrooms filter for vacation rentals. Only relevant when vacation_rentals is true. Optional. Minimum: 1, Maximum: 20. |
bathrooms | integer | โ | - | Number of bathrooms filter for vacation rentals. Only relevant when vacation_rentals is true. Optional. Minimum: 1, Maximum: 20. |
max_pages | integer | โ | 1 | Maximum 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_file | string | โ | Auto-generated | Optional 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):
| ID | Property Type |
|---|---|
| 12 | Beach hotels |
| 13 | Boutique hotels |
| 14 | Hostels |
| 15 | Inns |
| 16 | Motels |
| 17 | Resorts |
| 18 | Spa hotels |
| 19 | Bed and breakfasts |
| 20 | Other |
| 21 | Apartment hotels |
| 22 | Minshuku |
| 23 | Japanese-style business hotels |
| 24 | Ryokan |
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):
| ID | Property Type |
|---|---|
| 1 | Apartments |
| 2 | Bungalows |
| 3 | Cabins |
| 4 | Chalets |
| 5 | Cottages |
| 6 | Gรฎtes |
| 7 | Holiday villages |
| 8 | Houses |
| 9 | Houseboats |
| 10 | Villas |
| 11 | Other |
| 21 | Apartment 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):
| ID | Amenity |
|---|---|
| 1 | Free parking |
| 3 | Parking |
| 4 | Indoor pool |
| 5 | Outdoor pool |
| 6 | Pool |
| 7 | Fitness center |
| 8 | Restaurant |
| 9 | Free breakfast |
| 10 | Spa |
| 11 | Beach access |
| 12 | Child-friendly |
| 15 | Bar |
| 19 | Pet-friendly |
| 22 | Room service |
| 35 | Free Wi-Fi |
| 40 | Air-conditioned |
| 52 | All-inclusive available |
| 53 | Wheelchair accessible |
| 61 | EV 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):
| ID | Amenity |
|---|---|
| 1 | Free parking |
| 3 | Parking |
| 4 | Indoor pool |
| 5 | Outdoor pool |
| 6 | Pool |
| 7 | Fitness center |
| 8 | Restaurant |
| 9 | Free breakfast |
| 10 | Spa |
| 11 | Beach access |
| 12 | Child-friendly |
| 15 | Bar |
| 19 | Pet-friendly |
| 22 | Room service |
| 35 | Free Wi-Fi |
| 40 | Air-conditioned |
| 52 | All-inclusive available |
| 53 | Wheelchair accessible |
| 61 | EV 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 querysearch_metadata: Summary statistics about the search results including total results available, pages processed, and pagination statussearch_timestamp: ISO timestamp when the search was performedpage_number: Current page number (1-indexed)properties: Array of hotel property listings with comprehensive detailsads: 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 whenproperty_tokenis used)
Property Fields
Each item in properties contains:
type: Property type (e.g., "Hotel", "Vacation rental")name: Property namedescription: Property descriptionlink: Direct link to the property page on Google Hotelsproperty_token: Unique token for fetching detailed property informationgps_coordinates: Latitude and longitudecheck_in_time/check_out_time: Check-in and check-out timesrate_per_night: Rate per night with currencytotal_rate: Total rate for the stay with currencydeal/deal_description: Special deals or offershotel_class: Hotel class/star rating (string)extracted_hotel_class: Hotel class as integer (1-5)images: Array of property image URLsoverall_rating: Overall rating (0.0 to 5.0)reviews: Number of reviewslocation_rating: Location rating (0.0 to 5.0)amenities: Array of amenity nameseco_certified: Whether the property is eco-certifiedaddress: Full property addressphone/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
qfor location-based searches (e.g., "hotels in Paris") - Use
property_tokento 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 pagemax_pages: 5- Fetch up to 5 pagesmax_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_datemust be today or in the future (cannot be in the past) - The
check_out_datemust be aftercheck_in_date - When
children > 0,children_agesis 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_pagesparameter controls how many pages to fetch. Set to0for no limit (fetch all available pages) - Property tokens can be obtained from the
property_tokenfield in search results
โ ๏ธ Common Validation Errors
- Invalid Amenity ID 2: Amenity ID
2does not exist in the Google Hotels API. The amenity IDs jump from1(Free parking) directly to3(Parking). Use"amenities": "1,3"instead of"amenities": "1,2,3". - hotel_class with vacation_rentals: The
hotel_classparameter is not allowed whenvacation_rentalsis set totrue. Removehotel_classfrom your request when searching for vacation rentals, or setvacation_rentalstofalsewhen usinghotel_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