# Google Hotels Scraper: Prices & Booking Sites (`deepmine/google-hotels-scraper`) Actor

Google Hotels scraper: enter a city, hotel name or link and your dates. Get every hotel Google lists (700+ for big cities) with price per night, total with taxes, each booking site's price, deals, rating, reviews and photos; address and phone with site prices on. No login.

- **URL**: https://apify.com/deepmine/google-hotels-scraper.md
- **Developed by:** [DeepMine](https://apify.com/deepmine) (community)
- **Categories:** Travel
- **Stats:** 3 total users, 2 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.39 / 1,000 hotels

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Google Hotels Scraper: Prices & Booking Sites

Google Hotels scraper: type a city, a hotel name or a hotel link and your dates, and get every hotel Google Hotels
lists for them (700+ for a big city) with price per night, total with taxes and fees, Google's deal note, rating,
reviews, photos and nearby places. Tick one box to add each booking site's price for the same stay (Booking.com,
Expedia, Agoda, Priceline, the hotel's own site and 20+ more) with its booking link, and the hotel's address and
phone. No login, no browser.

| Hotel | Class | Per night | Total with taxes | Deal | Rating | Dates |
|---|---|---|---|---|---|---|
| Citadines Saint-Germain-des-Prés Paris | 4-star tourist residence | $221 | $483 | 42% less than usual | 4.1 (1,132) | 2026-10-21 → 2026-10-23 |
| MOB HOUSE | 4-star tourist hotel | $131 | $323 | 16% less than usual | 4.3 (1,134) | 2026-10-21 → 2026-10-23 |
| Médicis Home Puteaux | | $127 | $276 | | 4.2 (109) | 2026-10-21 → 2026-10-23 |

<sub>Collected 2026-10-07, Paris, 2 adults, USD.</sub>

**Price:** $1.99 per 1,000 hotels on Starter ($2.39 Free, $1.69 Scale, $1.39 Business). The prefilled run (20 Paris
hotels) costs about $0.04. You pay per hotel row, the same with or without booking-site prices. No start fee.

### What you get

One row per hotel:

| Field | Example |
|---|---|
| rank, name, hotelClass, starRating | 3, Hôtel d'Orsay, 4-star tourist hotel, 4 |
| pricePerNight, pricePerNightText, pricePerNightWithTaxesText | 249, €249, €291 |
| totalPriceWithTaxes, priceBeforeTaxes, taxes, fees | 581.5, 497.69, 83.8, 0 |
| currency, checkInDate, checkOutDate, nights, adults | EUR, 2026-11-10, 2026-11-12, 2, 2 |
| dealText, dealPercent | 31% less than usual, 31 (when Google shows one) |
| rating, reviewsCount, reviewsByStars | 4.8, 878, {"5": 742, "4": 100, "3": 15, "2": 4, "1": 17} |
| reviewAspects | Service: sentiment 0.786, 185 mentions, 177 positive, 5 negative |
| description, website | Google's summary, the hotel's site |
| address, phone | street address, phone (with 🏷️ prices from every booking site, or for a hotel name or link) |
| checkInTime, checkOutTime | 2:00 PM, 12:00 PM |
| latitude, longitude, countryCode, nearbyPlaces | 48.860389, 2.323112, FR, Musée d'Orsay 2 min |
| thumbnail, photos | Google's hotel photos |
| propertyToken, hotelId, placeId, cid | Google's ids, to price the same hotel again |
| googleHotelsUrl, googleMapsUrl | links to the hotel on Google Hotels and Google Maps |
| offers (when asked for) | one entry per booking site: site, isOfficial, pricePerNight, totalPriceWithTaxes, bookingUrl |

The run summary (OUTPUT in the key-value store) lists each location with its hotel count and Google's total.

### How to use it

1. Enter one or more 📍 Locations (a city, a district, "Manhattan, New York"). A place Google doesn't recognise is
   skipped with a message and not charged; so is a search Google answers for other dates or another currency.
2. Pick 📅 Check-in and Check-out dates (a date, or "14 days" from today) and 👥 Adults.
3. Set 💯 Max hotels per location: 20 is one page, 100 is about six, a big city gives 700+. You pay per hotel.
4. Tick 🏷️ Prices from every booking site if you want each site's price.
5. Start. Hotels appear in the dataset as Google's pages arrive.

To price hotels you already know, put their names with the city ("Hilton Paris Opera"), Google Hotels links or IDs in
➕ Specific hotels. Each comes back with every booking site's price for your dates. A name that matches no hotel is
reported and not charged. Leave 📍 Locations empty to price only these hotels.

Under ⚙️ Advanced:

- 💵 Currency: any three-letter code (USD, EUR, GBP...).
- 🌍 Country: the market Google shows. It changes booking sites and offers (Germany adds CHECK24, for example), and
  some deal notes only show in some markets.
- 🗣️ Language: the language of descriptions and review aspects.
- 📱 Mobile prices: Google lists a few more sites and member prices to phones. On one hotel 7 of 36 sites differed and
  the cheapest price was the same.

Check-in must be today or later. Dates more than about a year ahead come back with the hotel but often without a price.
If a run is stopped and restarted, hotels already in the dataset are not sent or charged again.

### Speed

Measured on Apify at the default 256 MB (October 2026), dates Google had not priced recently:

- 10 Paris hotels: first hotel 4-5.4 seconds after Start, done in 4.3-5.5 seconds. The most-used Google Hotels Actor
  took 9-52 seconds to its first hotel on the same inputs (9.4 s on one day, 51.9 s on another, at 1,024 MB).
- 100 Lisbon hotels: first hotel at 4.0 seconds, done in 19 seconds.
- 778 London hotels: done in 75 seconds, about $0.005 of Apify compute.
- 20 Rome hotels with every booking site's price (1-37 sites each, about 20 typical): done in 8-17 seconds.

### Notes

- Google lists a few hundred to a few thousand hotels for a city, with the best matches first. A run stops when
  Google has nothing new to give, so asking for 5,000 in one city returns what Google has (about 700-800 for London).
- Prices are what Google Hotels shows a US visitor for your dates, adults and currency.
- Booking links (bookingUrl) go straight to the site's offer; googleClickUrl is Google's own redirect.
- Hotels Google doesn't answer for are free.

### Feedback

If this saved you time, a short review on the Actor page helps others find it. Questions or a field you miss: open an
issue on the Actor page.

# Actor input Schema

## `locations` (type: `array`):

Cities, neighbourhoods or areas, one per line, e.g. Paris or Manhattan, New York. Each location is its own Google Hotels search. Leave empty to price only the hotels below.

## `checkInDate` (type: `string`):

Arrival date, e.g. 2026-11-10, or relative like 14 days (from today). Empty = tomorrow.

## `checkOutDate` (type: `string`):

Departure date after the check-in date, e.g. 2026-11-12 or 16 days. Empty = one night.

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

Guests the prices are for, e.g. 2.

## `maxHotelsPerLocation` (type: `integer`):

Hotels to collect per location, e.g. 100. You pay per hotel. Google lists 700+ for a big city; the run stops when Google has no more.

## `includeOffers` (type: `boolean`):

Adds offers: each site's price per night and total for your dates (Booking.com, Expedia, Agoda, the hotel's own site...) with its booking link. Same price per hotel; runs take longer.

## `hotels` (type: `array`):

Hotel names with their city (Hilton Paris Opera), Google Hotels links or IDs (start with Ch). One row per hotel, always with every booking site's price.

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

Currency for every price, as a three-letter code: USD, EUR, GBP, JPY...

## `country` (type: `string`):

Where the visitor is. Changes which booking sites and offers Google shows.

## `language` (type: `string`):

Language of Google's texts: deal notes, descriptions, review aspects.

## `mobilePrices` (type: `boolean`):

Ask like a phone: Google then shows a few more booking sites and some member prices. The cheapest price is usually the same.

## `proxyConfiguration` (type: `object`):

Leave as is: Apify datacenter proxy.

## Actor input object example

```json
{
  "locations": [
    "Paris"
  ],
  "checkInDate": "14 days",
  "checkOutDate": "16 days",
  "adults": 2,
  "maxHotelsPerLocation": 20,
  "includeOffers": false,
  "currency": "USD",
  "country": "US",
  "language": "en",
  "mobilePrices": false,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `results` (type: `string`):

No description

## `summary` (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 = {
    "locations": [
        "Paris"
    ],
    "checkInDate": "14 days",
    "checkOutDate": "16 days",
    "maxHotelsPerLocation": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("deepmine/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 = {
    "locations": ["Paris"],
    "checkInDate": "14 days",
    "checkOutDate": "16 days",
    "maxHotelsPerLocation": 20,
}

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

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

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

```

## CLI example

```bash
echo '{
  "locations": [
    "Paris"
  ],
  "checkInDate": "14 days",
  "checkOutDate": "16 days",
  "maxHotelsPerLocation": 20
}' |
apify call deepmine/google-hotels-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,deepmine/google-hotels-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

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