# Google Hotels Scraper — Rates, Amenities, Reviews (`scrape.badger/google-hotels-scraper`) Actor

Scrape Google Hotels at scale: property listings with nightly rates, star rating, review score, amenities, location, thumbnails, deal flags, and price-per-night breakdown. Two modes: Search Hotels (destination + dates → paginated listings) and Get Hotel Details (full property profile)

- **URL**: https://apify.com/scrape.badger/google-hotels-scraper.md
- **Developed by:** [ScrapeBadger](https://apify.com/scrape.badger) (community)
- **Categories:** Travel, Automation, Developer tools
- **Stats:** 7 total users, 1 monthly users, 98.7% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $8.00 / 1,000 hotel searches

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

### What does Google Hotels Scraper do?

Scrape [Google Hotels](https://www.google.com/travel/hotels) — hotel search with prices, ratings, amenities, plus full property detail (rating breakdown, check-in/out policies, thumbnails).

### Why use Google Hotels Scraper?

- **Search + Detail in one actor.** Two modes: listing search, and deep property detail by `property_token`.
- **Dynamic pricing.** Prices are for the specific check-in / check-out window you pass.
- **Currency + country targeting.** `gl: uk` returns GBP, UK-first rankings.
- **Sponsored ads + organic bundled.** `ad` records tagged separately from organic properties.
- **Cheap detail fetches.** $0.008 per Get Hotel Details — deep enrichment on demand.

### What data can Google Hotels Scraper extract?

| Field | Type | Description |
|---|---|---|
| record\_type | string | `property` / `ad` / `brands` / `property_detail` |
| name | string | Hotel name |
| rating | number | Star rating |
| reviews | number | Review count |
| price | string | Per-night price string |
| check\_in / check\_out | string | Query window |
| link | string | Google Hotels property URL |
| thumbnail | string | Primary image |
| amenities | array | Amenity list |
| property\_token | string | Detail-fetch token |

### How to scrape Google Hotels

1. Click **Try for free**.
2. Pick `mode`: Search Hotels or Get Hotel Details.
3. For Search: set `q` (destination or hotel name), `check_in`, `check_out`, `adults`.
4. For Details: set `property_token` (from a previous Search run), `check_in`, `check_out`.
5. Optional: `currency`, `gl`.
6. Click **Start** — hotels stream into the dataset.

### How much will it cost?

**$8 per 1,000 searches · $0.008 per Get Hotel Details.** Search = one call per query; Detail = one call per property.

#### Competitor benchmark

| Actor | Author | Price | Notes |
|---|---|---|---|
| voyager/booking-scraper | voyager | ~$10 / 1k hotels | Booking.com-focused |
| compass/crawler-google-places | Compass | ~$9 / 1k places | Places actor with hotels subset |
| apify/google-search-scraper | Apify | ~$3.50 / 1k pages | SERP actor, shallow hotel info |
| **scrape-badger/google-hotels-scraper** | **ScrapeBadger** | **$8 / 1k searches** | **20% below closest hotel-focused competitor** |

### Input

Configure the run in the **Input** tab above, or pass a JSON object matching the fields below when calling the Actor via the Apify API.

| Field | Required | Description |
|---|---|---|
| mode | ✅ | `Search Hotels` or `Get Hotel Details`. |
| check\_in / check\_out | ✅ | `YYYY-MM-DD`. check\_out > check\_in. |
| q | Search only | Destination or hotel name. |
| property\_token | Details only | From a previous Search. |
| adults | — | 1-8, default 2. |
| currency | — | ISO currency (default `USD`). |
| gl | — | Country (default `us`). |

### Output

Every successful run streams records into the run's dataset. Download as JSON, CSV, XML, Excel, or HTML from the **Dataset** tab; consume programmatically via the Apify API or webhooks.

Example record:

```json
{
  "record_type": "property",
  "name": "The Ritz-Carlton, New York",
  "rating": 4.7,
  "reviews": 1845,
  "price": "$895 / night",
  "check_in": "2026-12-01",
  "check_out": "2026-12-03",
  "link": "https://www.google.com/travel/hotels/\u2026",
  "thumbnail": "https://\u2026",
  "amenities": [
    "Spa",
    "Free WiFi",
    "Gym"
  ],
  "property_token": "ChoI5pXL1PzbxuDCARoNL2cvMTFqY3h3bWhsMxAB"
}
```

### Tips / Advanced options

- **Pipe Search → Detail.** Run Search to collect `property_token`s, pipe each through Get Hotel Details for amenity-level depth.
- **Set `check_in` / `check_out` matching your customer's stay.** Prices are highly date-sensitive — stale queries return stale prices.
- **Filter ads vs. organic.** `record_type: property` for organic; `record_type: ad` for sponsored. Filter downstream.
- **Regional currency.** `currency: EUR, gl: de` for German travellers — local merchants and local prices.

### FAQ, Disclaimers, Support

#### Can I book through the actor?

No — booking is out of scope. The actor returns prices and Google Hotels URLs; customers book on the provider's site.

#### What's `property_token`?

Google's internal token for direct-lookup of a hotel's deep detail. Surfaced in Search mode output.

#### Why does `check_out` have to be after `check_in`?

Google rejects zero-night or invalid ranges with HTTP 400. The actor validates before calling.

#### Can I filter by star rating?

Not directly at the query level — post-filter on the `rating` field downstream.

#### Disclaimer

This Actor scrapes public Google data only. You're responsible for compliance with Google's Terms of Service and any applicable data-protection laws (GDPR, CCPA, etc.) in your jurisdiction. ScrapeBadger does not store the scraped results — they are delivered directly to your Apify dataset.

#### Support

Something not working? Open a ticket in the **Issues** tab above — we triage within one business day. Full API reference: [docs.scrapebadger.com](https://docs.scrapebadger.com).

#### Related Actors

- [`google-flights-scraper`](https://apify.com/scrape-badger/google-flights-scraper) — Flight fares

#### Powered by

[ScrapeBadger](https://scrapebadger.com) — Google-optimised residential proxy pool + browser-farm fallback, 99.7% uptime, unmetered bandwidth. No CAPTCHAs reach you.

# Actor input Schema

## `mode` (type: `string`):

Pick the Hotels call to run. <b>Search Hotels</b> needs <b>q</b> (destination). <b>Get Hotel Details</b> needs <b>property\_token</b> from a prior search result.

## `q` (type: `string`):

Where to search — a city, region, neighbourhood, landmark, or specific hotel name. Example: <b>Paris</b>, <b>Times Square New York</b>, <b>Hilton Tokyo</b>.

## `property_token` (type: `string`):

Google Hotels property token returned by a previous Search Hotels result (field <b>property\_token</b>). Required for <b>Get Hotel Details</b>.

## `check_in` (type: `string`):

Check-in date in <b>YYYY-MM-DD</b> format. Example: <b>2026-05-01</b>.

## `check_out` (type: `string`):

Check-out date in <b>YYYY-MM-DD</b> format. Must be after <b>check\_in</b>.

## `adults` (type: `integer`):

Number of adult guests (1-8). Drives room availability and total-stay price calculations.

## `currency` (type: `string`):

ISO-4217 currency code for prices. Example: <b>USD</b>, <b>EUR</b>, <b>GBP</b>, <b>JPY</b>.

## `gl` (type: `string`):

ISO 3166-1 alpha-2 country code (lowercase). Controls which country's Google Hotels results are returned. Example: <b>us</b>, <b>gb</b>, <b>de</b>, <b>jp</b>.

## Actor input object example

```json
{
  "mode": "Search Hotels",
  "q": "Paris",
  "check_in": "2026-05-01",
  "check_out": "2026-05-05",
  "adults": 2,
  "currency": "USD",
  "gl": "us"
}
```

# Actor output Schema

## `dataset` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "q": "Paris",
    "check_in": "2026-05-01",
    "check_out": "2026-05-05"
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrape.badger/google-hotels-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "q": "Paris",
    "check_in": "2026-05-01",
    "check_out": "2026-05-05",
}

# Run the Actor and wait for it to finish
run = client.actor("scrape.badger/google-hotels-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "q": "Paris",
  "check_in": "2026-05-01",
  "check_out": "2026-05-05"
}' |
apify call scrape.badger/google-hotels-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=scrape.badger/google-hotels-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/Rdg6WdnVlfeqpmr2m/builds/RhHZquIc0ZD1aAt8C/openapi.json
