# Google Hotels Price Report: Nightly Rates, Deals & Best Value (`precious_bathmat/google-hotels-price-report`) Actor

What a hotel costs in any city on your dates, from Google Hotels: typical nightly price and range, prices by star class, the best-value and top-rated hotels, Google's deals, plus every hotel with price, rating, amenities and link. No login, no proxy.

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

## Pricing

from $20.00 / 1,000 city reports

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/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 Price Report: Nightly Rates, Deals & Best Value

What does a hotel **really cost in a city on your dates**? This Actor reads **Google Hotels** and returns one report per city: the **typical nightly price** and range with taxes and fees, **prices by star class** and how much more each class costs, the **cheapest**, **best-value** and **top-rated** hotels, and the hotels Google marks as **deals** ("45% less than usual"). Every hotel also comes as a CSV with price, rating, reviews, amenities, location and a Google link.

No login, no API key, no proxy.

### What does this Google Hotels scraper do?

```
London · Nov 12-14 · 81 hotels compared

 typical night  $133 with taxes     range  $84 - $322
 3-star $106    4-star $199    5-star $425
 best 4-star    Leonardo Hotel London Croydon  $91, rated 4.2
 deals          38 hotels (47%), e.g. Enrico Hotel 45% less than usual
```

1. Enter **cities or areas**: "New York", "Nairobi", "Shoreditch, London".
2. Choose the **check-in date**, the **nights**, the **star classes** to compare and the **currency**.
3. The Actor searches Google Hotels for the city overall and once per star class (Google shows about 20 hotels per search), and returns **one report per city** plus **every hotel found**.

### Who is it for?

- **Travellers and planners**: know the going rate and book the good-value hotels
- **Travel agents and corporate travel teams**: set hotel budgets per city and per star class
- **Hotels and revenue managers**: see what the market charges on your dates, class by class
- **Short-let and apartment hosts**: price against hotels in the same area
- **Travel writers and deal sites**: find the cities and hotels with the biggest deals

### What data do you get?

**One report per city** (the dataset):

| Field | What it tells you |
|---|---|
| `medianNightly`, `lowNightly25`, `highNightly75`, `medianTotalForStay` | The typical nightly rate with taxes and fees, the usual range, and the typical total for the stay |
| `byStars` | Per star class: hotels, median, lowest and highest nightly price, median guest rating |
| `premium3to4StarPercent`, `premium4to5StarPercent` | How much more the next class costs |
| `cheapest`, `bestValue`, `bestValue4Star`, `topRated` | The cheapest hotel; the cheapest rated 4.0+ by 50+ guests; the cheapest 4-star rated 4.2+; the best rated |
| `dealsCount`, `dealsSharePercent`, `biggestDeals` | Hotels Google labels "X% less than usual" for these dates |
| `vacationRentals` | Count and median price of apartments and houses, kept apart from hotels |
| `googlePlace`, `resultsOnGoogle`, `hotelsCompared` | The place Google searched, how many results it has there, and how many hotels the report compares |

**Every hotel** (`HOTELS_CSV`), cheapest first: name, stars, rating, reviews, nightly price before and after taxes, total for the stay, deal, amenities, description, coordinates, Google link, and which searches found it.

### Example: 8 cities, 12-14 November 2026

One run, **8 reports from 647 hotels in 69 seconds** (prices per night with taxes, USD):

| City | Typical | 3-star | 4-star | 5-star | Deals |
|---|---|---|---|---|---|
| New York | **$312** | $184 | $338 | $598 | 33% |
| Paris | $167 | $124 | $215 | $445 | 41% |
| London | $133 | $106 | $199 | $425 | 47% |
| Tokyo | $131 | $96 | $213 | $426 | 48% |
| Dubai | $108 | $81 | $117 | $280 | 35% |
| Nairobi | $92 | $61 | $121 | $191 | 21% |
| Mexico City | $76 | $56 | $114 | $233 | 43% |
| Bangkok | **$41** | $29 | $53 | $102 | 25% |

Best 4-star finds included the Holiday Inn Dubai Al-Maktoum at **$67** (rated 4.7) and Oden Hôtel Paris Ivry at **$91** (rated 4.7).

### Pricing

**$0.02 per city report** and **$0.001 per hotel** saved.

A city with the 50 cheapest hotels saved costs **$0.07**; set "Hotels to save per city" to 0 and it is **$0.02 per city**. The 8-city run above cost **$0.56** with 400 hotels.

### Good to know

- **Prices** are the lowest Google Hotels shows for each hotel for 2 adults on your dates. `nightlyWithTaxes` includes taxes and fees; `nightlyPrice` is before them.
- **A sample, not every hotel.** Google shows about 20 hotels per search, so each city is searched overall and once per star class: typically 60 to 90 hotels. Choose fewer classes for a faster run.
- **Dates are checked.** Google sometimes ignores the dates in a search; every page is checked and searched again with other wording, and pages on the wrong dates are never used.
- **The place is checked.** Google never says "not found": for an unknown name it searches somewhere else. When the place it used has nothing in common with what you typed, that city is skipped and the run summary says what Google searched.
- **Sponsored hotels are left out.**
- **Vacation rentals** (whole flats and houses) are counted apart from hotels; turn on "Also search vacation rentals" to compare them.

### Input

| Field | Meaning |
|---|---|
| **Cities or areas** | One per line |
| **Check-in date** | Empty = three weeks from today |
| **Nights** | 1 to 14 |
| **Star classes to compare** | 1 to 5 stars; each is one extra search |
| **Also search vacation rentals** | Off by default |
| **Currency** | USD, EUR, GBP, KES... |
| **Hotels to save per city** | 0 to 200, cheapest first |

### Integrations

Export to JSON, CSV, Excel or Google Sheets, or connect through the Apify API, webhooks, Make, Zapier and n8n. **Schedule it weekly** for the dates you care about to watch prices and deals change.

# Actor input Schema

## `cities` (type: `array`):

One per line: cities ("New York", "Nairobi"), areas ("Brooklyn, New York", "Shoreditch, London") or places ("near Times Square").

## `checkIn` (type: `string`):

YYYY-MM-DD. Leave empty for three weeks from today.

## `nights` (type: `integer`):

Length of the stay, 1 to 14 nights.

## `starClasses` (type: `array`):

Each class chosen is searched on its own (Google shows about 20 hotels per search), so the report can compare classes. Fewer classes = a faster run.

## `includeVacationRentals` (type: `boolean`):

Adds a search for apartments and houses; they are counted apart from hotels in the report.

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

Three-letter code, e.g. USD, EUR, GBP, KES.

## `maxHotelsPerCity` (type: `integer`):

Hotels saved to the hotels file, cheapest first, 0 to 200. The report always uses every hotel found. Charged per hotel.

## Actor input object example

```json
{
  "cities": [
    "New York",
    "Nairobi"
  ],
  "nights": 2,
  "starClasses": [
    "2",
    "3",
    "4",
    "5"
  ],
  "includeVacationRentals": false,
  "currency": "USD",
  "maxHotelsPerCity": 50
}
```

# Actor output Schema

## `reports` (type: `string`):

Typical nightly price and range, prices by star class, best value, top rated and deals, per city.

## `hotels` (type: `string`):

Name, stars, rating, reviews, nightly and total price, deal, amenities, location and link.

## `summary` (type: `string`):

Source, problems and the limits of the data.

# 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 = {
    "cities": [
        "New York",
        "Nairobi"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("precious_bathmat/google-hotels-price-report").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 = { "cities": [
        "New York",
        "Nairobi",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("precious_bathmat/google-hotels-price-report").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 '{
  "cities": [
    "New York",
    "Nairobi"
  ]
}' |
apify call precious_bathmat/google-hotels-price-report --silent --output-dataset

```

## MCP server setup

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

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/eK6SGCVY31RchkNHl/builds/xA7N4UhoWVFpuGrmI/openapi.json
