Google Hotels Scraper API
Google Hotels Listings
with Filters and Currencies
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.
Start scraping today with 1000 free credits. No Credit Card Required
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
Select a Target

Send API Request
import requests
import json
token = "<SDO-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))Get Structured 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..."
}
}
Scrape.do has been a game-changer with powerful scraping tools, but what truly sets them apart is their excellent customer support.

CTO
Average Response Time
No tickets connect with expert engineers.
Success rate
Proxies
Faster gateway than the closest competitor.
Reliable, Scalable,Unstoppable Web Scraping
Frequently Asked Questions
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.
Use simple "<City> 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.
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.
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.
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.
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.
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.
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.
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.
The Google Hotels API documentation covers the full parameter list, response schema, filter codes (including the amenity table), localization details, and all error responses.


