# Google Hotels Scraper — Prices, Deals, Ratings & Reviews (`technicaldost/google-hotels-scraper-prices-reviews`) Actor

Scrape Google Hotels for any city, area or landmark: nightly price with and without taxes for your dates, deals, star class, rating, review count and review topics, amenities, photos, check-in times, coordinates and links. Hundreds of hotels per search. $3 per 1,000 hotels.

- **URL**: https://apify.com/technicaldost/google-hotels-scraper-prices-reviews.md
- **Developed by:** [Technical Dost Solutions](https://apify.com/technicaldost) (community)
- **Categories:** Travel, Lead generation
- **Security:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$3.00 / 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.

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 gets **hotel listings and prices from Google Hotels** (google.com/travel) for any **city, neighbourhood or landmark**: the **lowest nightly price** Google found for your dates **with and without taxes**, deal labels (e.g. *48% less than usual*), **star class**, **rating, review count, star histogram and review topics** (location, service, rooms ...), amenities, description, check-in and check-out times, **coordinates**, nearby places, website, photos and links to Google Hotels and Maps. Pages through **hundreds of hotels per search**. No login, no API key.

### What you get

- Any location: city (Paris), area (Shibuya Tokyo), landmark (hotels near Times Square) or a natural-language search (4 star hotels in Rome under $200).
- Prices for your check-in and check-out dates (fixed or relative like +30 for scheduled runs): nightly price, price with taxes and fees, and Google's deal label.
- Star class and type, rating, review count, 1-5 star histogram and review topics with positive and negative mention counts.
- Amenities (Free Wi-Fi, pool, parking, breakfast, spa ...), description, check-in and check-out times.
- Latitude and longitude, country, nearby places with travel times, hotel website, photos.
- Links to the hotel on Google Hotels and Google Maps, and Google's hotel ID for matching across runs.
- Pages through results (20 per page) up to 1,000 hotels per search, with a minimum-rating filter.

### How to use Google Hotels Scraper

1. Add **Locations** (e.g. `Paris`, `hotels near Eiffel Tower`, `5 star resorts in Bali`).
2. Optionally set **Check-in** and **Check-out** dates (YYYY-MM-DD or +N days).
3. Set **Max hotels per search** and optionally **Minimum rating**.
4. Run and export to JSON, CSV or Excel, or schedule it daily to track hotel prices.

### Input example

```json
{
  "locations": [
    "Paris",
    "hotels near Times Square"
  ],
  "checkInDate": "+30",
  "checkOutDate": "+32",
  "maxHotelsPerSearch": 200,
  "minRating": 4
}
```

All fields are described in the **Input** tab.

### Output example

```json
{
  "hotelId": "1211381786998798424",
  "name": "Hôtel Libertel Montmartre Opéra",
  "hotelClass": 3,
  "hotelType": "3-star tourist hotel",
  "rating": 4.1,
  "reviewCount": 794,
  "ratingHistogram": {
    "5star": 365,
    "4star": 261,
    "3star": 98,
    "2star": 37,
    "1star": 33
  },
  "reviewTopics": [
    {
      "topic": "Location",
      "mentions": 76,
      "positive": 59,
      "negative": 9
    },
    {
      "topic": "Property",
      "mentions": 90,
      "positive": 56,
      "negative": 22
    },
    {
      "topic": "Family friendly",
      "mentions": 8,
      "positive": 4,
      "negative": 4
    }
  ],
  "pricePerNight": 55.52,
  "pricePerNightWithTaxes": 73.46,
  "priceText": "$56",
  "currency": "USD",
  "deal": "37% less than usual",
  "checkIn": "2026-11-05",
  "checkOut": "2026-11-06",
  "adults": 1,
  "description": "Laid-back property offering simply furnished rooms, as well as complimentary Wi-Fi.",
  "amenities": [
    "Breakfast",
    "Free Wi-Fi",
    "Air conditioning",
    "Pet-friendly",
    "Restaurant",
    "Airport shuttle",
    "Kid-friendly"
  ],
  "checkInTime": "2:00 PM",
  "checkOutTime": "12:00 PM",
  "latitude": 48.882133499999995,
  "longitude": 2.3345723,
  "country": "FR",
  "nearbyPlaces": [
    {
      "name": "Moulin Rouge",
      "travelTime": "5 min"
    },
    {
      "name": "Pigalle",
      "travelTime": "4 min"
    },
    {
      "name": "Aéroport de Paris-Charles de Gaulle",
      "travelTime": "33 min"
    }
  ],
  "website": "http://www.libertel-montmartre-opera.com/",
  "photos": [
    "https://lh3.googleusercontent.com/grass-cs/AABkmLfSC0ujK6DkX9RznJBC1zuGP0DunzVfE-dR0TlU2mRWXDA1virPa_umg9pblPeYilgMMOpCe5igh5SBWhpjQYLT2XUoFph__aiNJGZQyRzJyJbDERmh2Ft1eh_hN9tkJUARc8IS=s287-w287-h192-n-k-no-v1",
    "https://lh3.googleusercontent.com/grass-cs/AABkmLdDOFHU5ZaR-CUQRddxXUkV7-mEw6-zi5-lqbljkpr4aPr1dn9rv0ldUCGoI0hVd3SzsPgGTUwlPMa8xDdOZPlqdE55jebh12xIKQbbOmvyNaWaO90Blk-jh3dqLQQPlOE_3HaU=s287-w287-h192-n-k-no-v1"
  ],
  "googleHotelsUrl": "https://www.google.com/travel/hotels/entity/ChcIw8_owsfVnroDGgsvZy8xdmdfYzR4MBAB",
  "googleMapsUrl": "https://www.google.com/maps?ftid=0x47e66e4f4ef89b81:0x3747aac785a27c3",
  "position": 1,
  "search": "Paris",
  "query": "hotels in Paris",
  "scrapedAt": "2026-11-03T18:40:40.157Z"
}
```

#### Output fields

| Field | Description |
|---|---|
| `hotelId` | Google hotel ID. |
| `name` | Hotel name. |
| `hotelClass` | Star class. |
| `hotelType` | Type, e.g. 3-star hotel. |
| `rating` | Average rating (1-5). |
| `reviewCount` | Number of reviews. |
| `ratingHistogram` | Review counts per star. |
| `reviewTopics` | Topics with mentions, positive and negative counts. |
| `pricePerNight` | Lowest nightly price (USD). |
| `pricePerNightWithTaxes` | Nightly price with taxes and fees. |
| `priceText` | Price as shown. |
| `currency` | Currency. |
| `deal` | Deal label, e.g. 48% less than usual. |
| `checkIn` | Check-in date priced. |
| `checkOut` | Check-out date priced. |
| `adults` | Adults priced. |
| `description` | Short description. |
| `amenities` | Amenities. |
| `checkInTime` | Check-in time. |
| `checkOutTime` | Check-out time. |
| `latitude` | Latitude. |
| `longitude` | Longitude. |
| `country` | Country code. |
| `nearbyPlaces` | Nearby places with travel time. |
| `website` | Hotel website. |
| `photos` | Photo URLs. |
| `googleHotelsUrl` | Google Hotels page (all booking-site prices). |
| `googleMapsUrl` | Google Maps link. |
| `position` | Position in results. |
| `search` | Your location input. |
| `query` | Query sent to Google. |
| `scrapedAt` | When scraped (ISO 8601). |

Export results as JSON, CSV, Excel, XML or HTML, or read them with the API.

### Use cases

- Hotel revenue management: track competitor rates for your dates every day.
- Travel startups and agents: build hotel lists with prices, ratings and coordinates.
- Market research: compare price levels, star mix and review scores across cities.
- Lead generation for hospitality vendors: hotel names, websites and locations by area.
- AI travel agents: give an assistant live hotel prices and reviews.

### How much does Google Hotels Scraper cost?

This Actor uses **pay-per-event** pricing: **$0.003 per hotel** ($3 per 1,000). Platform usage is included. There is no start fee. Duplicates and hotels filtered out by minimum rating are not charged.

Set **Maximum cost per run** in the run options to cap your spend; the Actor stops when the limit is reached.

### Use Google Hotels Scraper with AI agents (MCP)

Give Claude, ChatGPT, Cursor or any MCP client this Actor as a tool through the hosted [Apify MCP server](https://mcp.apify.com):

```bash
claude mcp add --transport http apify "https://mcp.apify.com/?tools=technicaldost/google-hotels-scraper-prices-reviews" --header "Authorization: Bearer YOUR_APIFY_TOKEN"
```

Or in a JSON MCP config:

```json
{
  "mcpServers": {
    "apify": {
      "url": "https://mcp.apify.com/?tools=technicaldost/google-hotels-scraper-prices-reviews",
      "headers": { "Authorization": "Bearer YOUR_APIFY_TOKEN" }
    }
  }
}
```

The tool is named `technicaldost--google-hotels-scraper-prices-reviews`. Ask your agent, for example, to *"run Google Hotels Scraper with {"locations": \["Paris", "hotels near Times Square"], "checkInDate": "+30", "checkOutDate": "+32", "maxHotelsPerSearch": 200, "minRating": 4}"*.

### Run Google Hotels Scraper via API

```bash
curl -X POST "https://api.apify.com/v2/acts/technicaldost~google-hotels-scraper-prices-reviews/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"locations": ["Paris", "hotels near Times Square"], "checkInDate": "+30", "checkOutDate": "+32", "maxHotelsPerSearch": 200, "minRating": 4}'
```

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("technicaldost/google-hotels-scraper-prices-reviews").call(run_input={"locations": ["Paris", "hotels near Times Square"], "checkInDate": "+30", "checkOutDate": "+32", "maxHotelsPerSearch": 200, "minRating": 4})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)
```

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

const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });
const run = await client.actor('technicaldost/google-hotels-scraper-prices-reviews').call({"locations": ["Paris", "hotels near Times Square"], "checkInDate": "+30", "checkOutDate": "+32", "maxHotelsPerSearch": 200, "minRating": 4});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);
```

### Integrations

Schedule runs (daily, hourly) in Apify Console and send results to Google Sheets, Slack, Make, Zapier, n8n, Airbyte or your own webhook.

### FAQ

#### Which price is this?

The lowest nightly price Google Hotels shows for the hotel on your dates (2 adults, Google's default when dates are set), in USD, with and without taxes and fees. Without dates, Google uses its own default dates, returned in checkIn and checkOut.

#### Can I change the currency or number of guests?

Not yet: Google returns prices in USD for 2 adults for this kind of request. Convert currency in your pipeline if needed.

#### How many hotels can I get?

Google shows 20 hotels per page; the Actor pages through up to 1,000 per search. Add several locations or neighbourhoods for more coverage.

#### Does it include prices from each booking site?

No, it returns the best price Google shows for each hotel. Per-site prices (Booking.com, Expedia ...) are on the hotel's googleHotelsUrl.

#### How is it priced?

$3 per 1,000 hotels. No start fee.

#### Is it legal to scrape this data?

The Actor collects publicly available information only and does not log in or bypass access controls. Use the data in line with the website's terms and the laws that apply to you, especially when processing personal data.

### Related Actors

More tools from the same developer that work well together with this one:

- [Google Flights Scraper — Flight Prices, Schedules & Stops](https://apify.com/technicaldost/google-flights-scraper-prices): Scrape Google Flights for any route and date: price, airlines, flight numbers, departure and arrival times, duration, stops, layovers, aircraft, legroom and…
- [Google Maps Business Scraper](https://apify.com/technicaldost/google-maps-business-scraper): Find local businesses by search term, such as "dentist in Chicago": name, address, phone, website, email, opening hours and coordinates.
- [Uber Eats Scraper — Restaurants, Menus, Prices & Ratings](https://apify.com/technicaldost/uber-eats-scraper-restaurants-menus): Scrape Uber Eats restaurants for any delivery address: search by food or list all stores nearby, or paste store URLs.

# Actor input Schema

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

City, area, landmark or search, e.g. Paris, Shibuya Tokyo, hotels near Times Square, 4 star hotels in Rome.

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

YYYY-MM-DD or +N days from today (e.g. +30). Leave empty for Google's default dates.

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

YYYY-MM-DD or +N days from today (e.g. +32).

## `maxHotelsPerSearch` (type: `integer`):

Up to 1,000 (20 per page).

## `minRating` (type: `number`):

Skip hotels rated below this (e.g. 4.0). Skipped hotels are not charged.

## Actor input object example

```json
{
  "locations": [
    "Paris"
  ],
  "maxHotelsPerSearch": 20
}
```

# Actor output Schema

## `results` (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"
    ],
    "maxHotelsPerSearch": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("technicaldost/google-hotels-scraper-prices-reviews").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"],
    "maxHotelsPerSearch": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("technicaldost/google-hotels-scraper-prices-reviews").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"
  ],
  "maxHotelsPerSearch": 20
}' |
apify call technicaldost/google-hotels-scraper-prices-reviews --silent --output-dataset

```

## MCP server setup

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

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/pbREegyMn9rbST0nZ/builds/IYbHJQFZrVjeEbHxJ/openapi.json
