# Google Hotels Scraper API - Properties, Ratings, Amenities, Filters > Source: https://scrape.do/products/ready-api/google-hotels-scraper/ Scrape Google Hotels listings with names, descriptions, ratings, hotel class, amenities, GPS coordinates, and images. Filters for price, rating, brand, eco-certification, and free cancellation. Worldwide currency support. > Each successful request costs **10 credits**. **Google Hotels Listings with Filters and Currencies** Search Google Hotels for any city and date range and get back structured property listings with ratings, hotel class, amenities, GPS coordinates, and images. Filter by price, brand, rating, eco-certification, and free cancellation. ![Google Hotels Listings with Filters and Currencies](/uploads/google-hotels-api.svg) ## Highlights ### Filters That Match the Google Hotels UI - **First-class filter parameters**: `min_price`/`max_price`, `rating` (3.5+ / 4.0+ / 4.5+), `hotel_class` (2–5 stars), `brands`, `amenities`, `property_types`, `free_cancellation`, `eco_certified`, `special_offers`. Every filter Google Hotels offers, available as a query parameter. - **Sort modes**: lowest price (`sort_by=3`), highest rating (`sort_by=8`), most reviewed (`sort_by=13`). Combine with filters for narrowly-targeted listing crawls. ### Worldwide Currency and Language - 240+ countries via `gl`, 150+ languages via `hl`, **independent currency** via `currency` (`USD`, `EUR`, `GBP`, `TRY`, `JPY`, …). Pricing comes back in the requested currency, with no FX conversion on your end. - Token-based pagination via `next_page_token`. Chain pages to crawl Google's full property index for any destination. ## How It Works ### Search Hotels Search Google Hotels for a location and date range. Returns 18-20 properties per page with names, ratings, hotel class, amenities, GPS coordinates, and images. Each property carries a property_token you can use with the detail endpoint to fetch per-night pricing and check-in details. ![Search Hotels](/uploads/google-hotels-results.png) **cURL (API mode)** ```bash curl --location --request GET 'https://api.scrape.do/plugin/google/hotels?token=&q=Bali+hotels&check_in_date=2026-05-01&check_out_date=2026-05-03' ``` **Python (API mode)** ```python import requests import json token = "" url = f"https://api.scrape.do/plugin/google/hotels?token={token}&q=Bali+hotels&check_in_date=2026-05-01&check_out_date=2026-05-03" response = requests.request("GET", url) print(json.dumps(response.json(), indent=2)) ``` **Node.js (API mode)** ```javascript const axios = require('axios'); const token = ""; const url = `https://api.scrape.do/plugin/google/hotels?token=${token}&q=Bali+hotels&check_in_date=2026-05-01&check_out_date=2026-05-03`; axios.get(url) .then(response => { console.log(JSON.stringify(response.data, null, 2)); }) .catch(error => { console.error(error); }); ``` *(Go, Ruby, Java, C#, PHP examples are also available on the HTML version.)* **Example response** ```json { "search_parameters": { "engine": "google_hotels", "q": "Bali hotels", "check_in_date": "2026-05-01", "check_out_date": "2026-05-03", "currency": "USD", "gl": "us", "hl": "en" }, "search_information": { "total_results": 18 }, "properties": [ { "type": "hotel", "name": "The Anvaya Beach Resort Bali", "description": "Sophisticated resort offering 8 pools, 2 restaurants & a spa, plus a private beach & a kids' club.", "gps_coordinates": { "latitude": -8.7322535, "longitude": 115.1659877 }, "hotel_class": "5-star hotel", "extracted_hotel_class": 5, "overall_rating": 4.7, "reviews": 14342, "amenities": [6, 29, 16, 22, 2, 8, 26, 5, 4, 23, 24, 14, 1, 31, 27, 7, 11], "images": [ { "thumbnail": "https://lh3.googleusercontent.com/...", "original_image": "https://lh3.googleusercontent.com/..." } ], "property_token": "ChkI0Nqb_63cnPoTGg0vZy8xMWJ4ZjNoMXloEAE", "property_details_link": "https://api.scrape.do/plugin/google/hotels/detail?property_token=ChkI0Nqb_63cnPoTGg0vZy8xMWJ4ZjNoMXloEAE&token=TOKEN&gl=us&hl=en¤cy=USD" } ], "pagination": { "current_from": 1, "current_to": 18, "next_page_token": "CgsI..." } } ``` ## FAQ ### How does this differ from scraping Google Hotels myself? Google Hotels loads via async RPC calls behind the search UI, requires session-token management, and rotates internal parameters. Scraping it directly means a headless browser, request signing, and constant maintenance. This API queries the structured feed directly and returns parsed JSON with names, ratings, hotel class, amenities, coordinates, and images in a single call. ### How do I structure a query for best results? Use simple `" hotels"` form: `Paris hotels`, `Tokyo hotels`, `Edinburgh hotels`. Google resolves the query text to a location internally; overly specific queries (`"Paris luxury hotels near Eiffel Tower"`) often return empty results because Google can't pin them to a single location. Stay simple and use filter parameters for precision. ### Can I filter by price, rating, or hotel class? Yes. First-class filter parameters cover all the common cases: `min_price`/`max_price`, minimum `rating` (`7` = 3.5+, `8` = 4.0+, `9` = 4.5+), `hotel_class` (comma-separated 2-5), `free_cancellation`, `eco_certified`, `special_offers`. They combine freely. ### What about amenities? `amenities` accepts comma-separated integer codes: `22` = pool, `27` = free Wi-Fi, `8` = spa, `14` = beach access, etc. The same codes come back in `properties[].amenities[]` so they round-trip safely. The full code table is in the [Filters & Amenities docs](/documentation/google-scraper-api/hotels#amenity-codes). ### Can I get vacation rentals? Yes. `property_types=12` switches the listing to vacation rentals. Note: mode-switching depends on inventory at the destination. Some queries continue to return `type: "hotel"` even when vacation rentals are requested if Google has no vacation-rental inventory for that location. ### What currencies and languages are supported? All Google Hotels currencies (`USD`, `EUR`, `GBP`, `TRY`, `JPY`, `CAD`, `AUD`, `INR`, `BRL`, …) and all 150+ Google interface languages. Set `currency`, `hl`, and `gl` independently. Request EUR pricing in English from a Turkish IP, for example. ### How do I paginate? Read `pagination.next_page_token` from the response and pass it back as `next_page_token` on the next request. Continue until `pagination` is absent. That's the last page. Each page carries 18-20 properties. ### Can I get per-night pricing? The listing endpoint returns property-level metadata (rating, class, amenities) but not per-night pricing. Each property includes a `property_token` and a ready-to-call `property_details_link` pointing at `/plugin/google/hotels/detail`. That endpoint returns `rate_per_night`, `total_rate`, price breakdowns, check-in/check-out times, and review breakdowns. ### Why doesn't this support adults/children? Occupancy parameters are not currently supported. Results always reflect the default of 2 adults, 0 children. For occupancy-specific pricing, use the detail endpoint with the `property_token` returned in the listing response. ### Where can I find the full API reference? The [Google Hotels API documentation](/documentation/google-scraper-api/hotels/) covers the full parameter list, response schema, filter codes (including the amenity table), localization details, and all error responses.