Google Hotels Search Scraper avatar

Google Hotels Search Scraper

Pricing

Pay per event

Go to Apify Store
Google Hotels Search Scraper

Google Hotels Search Scraper

Extract Google Hotels listings by destination and stay dates: nightly prices, displayed currency, ratings, review counts, class, amenities, badges, sponsorship, and property IDs. Export JSON, CSV, or Excel; schedule recurring hotel rate monitoring.

Pricing

Pay per event

Rating

0.0

(0)

Developer

Stas Persiianenko

Stas Persiianenko

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

5 days ago

Last modified

Share

Extract public Google Hotels listings into structured data for hotel price monitoring, destination research, and travel market analysis.

Google Hotels Search Scraper returns one row per property with the displayed nightly rate and currency, rating, review count, class, amenities, badges, sponsorship status, Google property identifier, and source URL.

No Google account or API key is required.

What does Google Hotels Search Scraper do?

Google Hotels Search Scraper opens the public Google Hotels experience in a real browser and converts destination search cards into clean dataset records.

Use it to:

  • πŸ”Ž search one or many destinations
  • πŸ“… apply future check-in and check-out dates
  • πŸ‘₯ set adult and child traveler counts
  • πŸ’° collect the nightly price exactly as Google displays it
  • ⭐ extract ratings, review counts, and hotel class
  • πŸ›ŽοΈ collect amenity and location or sustainability badges
  • πŸ“£ distinguish sponsored cards from organic hotel results
  • πŸ”— retain Google property identifiers and result URLs
  • 🌍 request a language, country, and currency
  • πŸ“Š export results as JSON, CSV, Excel, XML, or RSS

The scraper preserves the displayed currency rather than silently relabeling a price when Google overrides the requested locale.

Who is Google Hotels Search Scraper for?

Hotel revenue and market analysts

  • Monitor nightly rates for destination compsets.
  • Compare review strength and hotel-class positioning.
  • Track whether properties appear in sponsored placements.

Travel metasearch and deal teams

  • Build destination-level hotel feeds.
  • Detect low-price properties for newsletters or alerts.
  • Enrich internal hotel records with Google property IDs.

OTAs, agencies, and destination marketers

  • Compare visible inventory signals across cities and dates.
  • Research amenity coverage for campaign planning.
  • Schedule recurring snapshots for client reports.

Researchers and developers

  • Create reproducible public hotel-market datasets.
  • Feed travel applications through the Apify API.
  • Connect hotel search data to AI agents through MCP.

Why use this Google hotel scraper?

  • βœ… Purpose-built output: one normalized record per hotel, not an unstructured page dump.
  • βœ… No login: it uses the anonymous public Google Hotels surface.
  • βœ… Date-aware: stay dates can be selected through Google’s accessible date controls.
  • βœ… Locale-safe: requested and displayed currencies are never silently mixed.
  • βœ… Sponsored labels: ad placements remain identifiable.
  • βœ… Fail-closed filters: records with unparseable values do not slip through numeric filters.
  • βœ… Bounded browser use: one browser session is reused across sequential searches.
  • βœ… Apify-native: schedule runs, call an API, add webhooks, and export datasets.

What Google Hotels data can you extract?

CategoryFieldDescription
IdentitynameProperty name shown by Google
IdentitypropertyIdGoogle entity identifier when exposed
IdentitypropertyUrlGoogle hotel entity link when exposed
RatenightlyPriceNumeric displayed nightly price
RatepriceTextOriginal price text, including symbol
RatecurrencyCurrency inferred from displayed text
ReputationratingGoogle rating from 0 to 5
ReputationreviewCountExpanded integer review count
PropertyhotelClassGoogle hotel class from 1 to 5
PropertyamenitiesFlat list of displayed amenities
SignalsbadgesEco, location, deal, or ranking labels
OffersbookingProvidersProviders when Google exposes external offer links
PlacementisSponsoredWhether the card is sponsored
SearchpositionPosition among accepted records
SearchdestinationNormalized destination text
SearchqueryOriginal query used for the search
SearchdisplayedDatesDates Google displays for the prices
SearchsourceUrlFinal Google Hotels results URL
TimescrapedAtISO timestamp for the snapshot

Provider names are returned only when they are present on the result card. The Actor leaves the provider array empty rather than inventing an attribution hidden behind another Google panel.

How much does it cost to scrape Google Hotels?

This Actor uses pay-per-event pricing.

A small one-time run fee covers browser startup, followed by a fee for each hotel saved.

Apify planCurrent per-hotel price
Free$0.0021625
Starter / Bronze$0.0018804
Scale / Silver$0.0014667
Business / Gold$0.0011283
Platinum$0.00075217
Diamond$0.00052652

The one-time search setup fee is $0.005 per run.

Examples at the Free tier:

HotelsEstimated Actor charge
10$0.026625
100$0.22125
1,000$2.1675

Actual platform limits and maximum-charge settings can stop a run earlier.

Prices will be synchronized with the live Apify pricing configuration before publication.

How to scrape Google Hotels

  1. Open Google Hotels Search Scraper on Apify.
  2. Enter one destination, such as London.
  3. Optionally add future check-in and check-out dates.
  4. Choose the traveler count and locale.
  5. Add price, rating, or hotel-class filters if needed.
  6. Keep maxItems small for the first run.
  7. Click Start.
  8. Open the dataset and export JSON, CSV, Excel, or another format.

A minimal input is:

{
"queries": ["London"],
"maxItems": 10
}

A filtered destination search is:

{
"queries": ["Miami Beach"],
"minRating": 4,
"hotelClasses": ["4", "5"],
"maxPrice": 350,
"maxItems": 30,
"currency": "USD",
"country": "US"
}

Input parameters

ParameterTypeDefaultDescription
queriesstring[]["London"]Destinations or hotel search phrases
startUrlsRequestListSource[]emptyPublic Google Hotels search URLs
checkInDatestringemptyFuture date in YYYY-MM-DD
checkOutDatestringemptyDate after check-in
adultsinteger2Adult travelers, 1-20
childreninteger0Child travelers, 0-10
minPricenumberemptyMinimum displayed nightly price
maxPricenumberemptyMaximum displayed nightly price
minRatingnumberemptyMinimum Google rating
hotelClassesstring[]emptyOne or more classes, "1" through "5"
includeSponsoredbooleantrueInclude and label sponsored cards
maxItemsinteger10Maximum accepted hotels, 1-500
currencystringUSDRequested ISO currency
languagestringenRequested interface language
countrystringUSRequested two-letter country code
proxyConfigurationobjectdirectOptional Apify Proxy settings

Provide both stay dates or neither.

Explicit URLs must belong to a Google Hotels search surface. Unrelated Google pages and third-party URLs fail before navigation.

Output example

{
"destination": "London",
"query": "London",
"checkInDate": null,
"checkOutDate": null,
"adults": 2,
"children": 0,
"position": 1,
"name": "The Tower Hotel, by Thistle",
"propertyId": "ChYIrIK1s_Hf-arLARoJL20vMDkxZGNfEAE",
"propertyUrl": "https://www.google.com/travel/hotels/entity/ChYIrIK1s_Hf-arLARoJL20vMDkxZGNfEAE",
"nightlyPrice": 123,
"priceText": "€123",
"currency": "EUR",
"rating": 4.1,
"reviewCount": 12224,
"hotelClass": 4,
"amenities": ["Breakfast ($)", "Free Wi-Fi", "Parking ($)"],
"badges": ["Excellent location", "Eco-certified"],
"bookingProviders": [],
"isSponsored": false,
"displayedDates": "Aug 2 – 3",
"sourceUrl": "https://www.google.com/travel/search?...",
"scrapedAt": "2026-07-19T05:17:20.025Z"
}

Numbers are emitted as numbers.

Arrays remain flat for straightforward CSV and spreadsheet use.

Tips for reliable hotel rate monitoring

  • πŸ§ͺ Start with 5-10 hotels to validate your query.
  • πŸ“… Always pair check-in and check-out dates.
  • 🌍 Treat currency as a request; verify the returned currency field.
  • 🧭 Use a country-specific proxy when geographic presentation matters.
  • 🧹 Use filters to reduce the final dataset, not to reinterpret missing source values.
  • ⏱️ Schedule snapshots at a consistent local time for cleaner comparisons.
  • πŸ”‘ Deduplicate longitudinal records with propertyId when available.
  • πŸ“£ Keep isSponsored in ranking analyses.
  • πŸ“‰ Compare like-for-like stay dates and traveler counts.
  • 🚦 Use conservative concurrency; Google Hotels is browser-rendered.

Google Hotels scraper integrations

Google Hotels β†’ Google Sheets

Schedule a destination search each morning and append rate snapshots to a sheet for a revenue-management dashboard.

Google Hotels β†’ Slack or Discord

Send a webhook when a four-star property drops below a chosen nightly price.

Google Hotels β†’ Make or Zapier

Trigger the Actor from a destination list, transform the dataset, and update CRM or campaign records.

Google Hotels β†’ data warehouse

Use a dataset webhook to load hotel rates, placements, and review counts into BigQuery, Snowflake, or PostgreSQL.

Google Hotels β†’ AI analysis

Expose the Actor through Apify MCP and ask an AI agent to summarize price bands or identify unusually strong review-to-price combinations.

Use Google Hotels Search Scraper with the Apify API

Node.js

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('automation-lab/google-hotels-search-scraper').call({
queries: ['London'],
maxItems: 10,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Python

import os
from apify_client import ApifyClient
client = ApifyClient(os.environ['APIFY_TOKEN'])
run = client.actor('automation-lab/google-hotels-search-scraper').call(
run_input={'queries': ['London'], 'maxItems': 10}
)
items = client.dataset(run['defaultDatasetId']).list_items().items
print(items)

cURL

curl -X POST \
"https://api.apify.com/v2/acts/automation-lab~google-hotels-search-scraper/runs?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"queries":["London"],"maxItems":10}'

Use Google Hotels data with AI agents via MCP

Connect Claude Code:

$claude mcp add --transport http apify "https://mcp.apify.com?tools=automation-lab/google-hotels-search-scraper"

For Claude Desktop, Cursor, or VS Code, add:

{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com?tools=automation-lab/google-hotels-search-scraper"
}
}
}

Authenticate with Apify when your client opens the OAuth flow.

Example prompts to try:

  • β€œUse automation-lab/google-hotels-search-scraper to find ten highly rated hotels in London and summarize their nightly prices.”
  • β€œCompare four-star Google Hotels rates in Miami Beach and Los Angeles.”
  • β€œBuild a weekly monitoring input for sponsored hotel placements in New York.”

Scheduling Google hotel price checks

  1. Save a working Actor input.
  2. Open Schedules in Apify Console.
  3. Choose the desired daily or weekly cadence.
  4. Use the same stay-date logic for comparable snapshots.
  5. Attach a webhook or integration to process the finished dataset.

For rolling stay windows, generate future dates in an external workflow before calling the Actor.

Do not leave fixed dates in a permanent schedule after they pass.

Handling locales and currencies

Google may use serving geography, consent state, or other public presentation rules when choosing a displayed currency.

This Actor therefore:

  • sends the requested currency, language, and country
  • reads the symbol shown on every card
  • emits the inferred displayed ISO currency
  • logs a warning when requested and displayed currencies differ
  • never changes a numeric amount merely to match the requested code

If exact geography matters, enable Apify Proxy with an appropriate country.

Error handling and empty results

The Actor fails with a non-zero run when:

  • no query or URL is provided
  • a URL is outside the Google Hotels scope
  • only one stay date is provided
  • check-out is not after check-in
  • locale or limits are invalid
  • Google Hotels loads but no hotel passes the requested filters

A zero-item successful run is not used to hide extraction failure.

If results are unexpectedly empty, remove filters and retry one small destination first.

Google Hotels Search Scraper extracts publicly available result-card data.

Scraping public data is generally lawful in many jurisdictions, but laws, contracts, and acceptable-use rules vary.

You are responsible for:

  • using the data for a legitimate purpose
  • following applicable laws and Google’s terms
  • avoiding excessive request volume
  • respecting personal-data and database rights
  • applying an appropriate retention policy

This Actor does not bypass login controls or collect private account data.

FAQ

How fast is the Google Hotels scraper?

A small destination search normally completes in under two minutes. Browser rendering, consent, dates, geography, and source throttling affect duration.

Do I need a Google API key?

No. The Actor uses the public anonymous Google Hotels interface.

Why does the returned currency differ from my input?

Google can override locale hints based on its serving region. The Actor reports the currency actually displayed instead of silently relabeling the price.

Why is bookingProviders empty?

Google often hides provider names behind a separate price panel. The Actor returns providers only when external offer links are exposed on the result card.

Why did my filtered run fail with no records?

Price, rating, and class filters fail closed. Remove filters to inspect source coverage, then add thresholds one at a time.

Does it include sponsored hotels?

Yes by default. Sponsored cards have isSponsored: true. Set includeSponsored to false to exclude them.

Can I scrape multiple destinations?

Yes. Add up to 20 queries or URLs. The browser session is reused and maxItems applies across the run.

Can I export to CSV or Excel?

Yes. Every Apify dataset supports JSON, CSV, Excel, XML, and other export formats.

Other travel and hotel scrapers

Combine them to compare Google’s visible hotel market with booking platforms, vacation rentals, reviews, flights, and property media.