Google Hotels Scraper
Scrape Google Hotels by destination and dates: hotel name, nightly price, currency, rating, review count, provider and direct link.
How it works
- 1Open it on Apify
Hit Run on Apify — it opens the tool in the cloud, no install.
- 2Set the inputs
Adjust
searchQueries,checkIn,checkOut(sensible defaults are pre-filled). - 3Click Run
The tool runs on Apify’s cloud and collects the data for you.
- 4Export the results
Download as JSON, CSV or Excel, or pipe straight into your app, Google Sheets, or an AI agent.
Pricing
$0.0035 per hotel result = $3.5 per 1,000
| You are charged for | When | Price |
|---|---|---|
| Hotel result | One successfully extracted Google Hotels listing. | $0.0035 |
Pay-per-event pricing: you are billed per result, not per subscription — a run that returns nothing costs nothing beyond the start fee. Billing is handled by Apify on your own account. These are the live Apify store prices, in effect since 2026-07-28, and they are what you are actually charged.
Inputs
| Field | What it does | Type |
|---|---|---|
searchQueries | Destination searches such as 'hotels in Toronto' or 'family hotels near Disneyland Paris'. One row is returned per hotel and each row includes the query that produced it. | array |
checkIn | Optional check-in date in YYYY-MM-DD format. Google may show its default stay when dates are omitted or unavailable. | string |
checkOut | Optional check-out date in YYYY-MM-DD format. Must be after check-in when both dates are supplied. | string |
adults | Number of adults for the hotel search. Google may ignore this field for some public result layouts. | integer |
language | Google interface language, for example en, fr, or de. | string |
country | Two-letter Google country edition code, such as ca, us, gb, or fr. | string |
currency | Optional three-letter currency hint such as CAD, USD, or EUR. Google may display the currency associated with the country edition. | string |
maxItemsPerQuery | Maximum number of unique hotel rows returned for each search query. | integer |
fallbackToProxy | If direct Google traffic is blocked or rate-limited, retry with one Apify proxy URL. Leave off for the lowest cost; proxy usage can reduce margin. | boolean |
What you get
A structured dataset — each result includes fields like:
namepriceTextratingreviewsCountcurrencydetailsUrlExport every run as JSON, CSV or Excel, or send it to your app, a database, Google Sheets, or an AI agent.
Related tools in Travel, Hotels & Events
Other ready-to-run tools in the same category — all pay-per-use on the Apify cloud.
Luma Events Scraper
Scrape lu.ma events by city, calendar or URL. Get event name, date with timezone, venue, host, ticket price, guest count and event link as JSON.
Booking.com Reviews Scraper
Extract public Booking.com guest reviews: rating, review title, positive and negative text, reviewer name and country.
Tripadvisor Reviews Scraper
Extract Tripadvisor reviews for hotels, restaurants and attractions: rating, full text, reviewer, hometown, trip type, owner response and review URL.
Airbnb Listings Scraper
Scrape Airbnb search results by location, dates and guest count: listing ID, name, room type, price, rating, reviews and host. No account or API key.
Google Maps Scraper
Scrape Google Maps business listings by category and city: name, phone, website, rating, reviews, lat/lng and place ID. Build local lead lists fast.
Google News Scraper
Monitor Google News by keyword or topic and get structured articles with the real publisher URL, source, date, and snippet. No login, no API key.
Where this tool sits
- Categories
- Travel, Hotels & Events
- Platforms
Google Hotels Scraper
Extract public Google Hotels search results as structured dataset rows. Each row includes the property name, displayed price, currency, rating, review count when shown, booking vendor, thumbnail, Google Hotels detail link, query, and stay dates.
Why this actor
- Direct HTTP to Google Travel by default, so ordinary runs do not pay SERP or residential proxy costs.
- Multiple destination queries in one run with cross-query deduplication.
- Optional check-in/check-out dates, adults, country, language, and currency hints.
- Charges only successfully parsed hotel rows through the
hotelevent. Empty, blocked, timed-out, and diagnostic rows are never charged. - Strict 30-second wall deadline per query and bounded request timeouts.
Input example
{
"searchQueries": ["hotels in Toronto", "boutique hotels in Montreal"],
"checkIn": "2026-08-01",
"checkOut": "2026-08-03",
"adults": 2,
"country": "ca",
"language": "en",
"maxItemsPerQuery": 50,
"fallbackToProxy": false
}
Google sometimes ignores date or currency hints in its public layout. The output records the requested dates and the price/currency actually displayed by Google; it does not invent rates.
Input fields
| Field | Default | Notes |
|---|---|---|
searchQueries | [] | Up to 10 destination searches per run, e.g. hotels in Toronto, family hotels near Disneyland Paris. Each row carries the query that produced it. |
checkIn / checkOut | "" | YYYY-MM-DD. Check-out must be after check-in when both are supplied. Omit them and Google shows its own default stay. |
adults | 2 | 1–12. Some public result layouts ignore it. |
language | en | Google interface language. |
country | ca | Two-letter Google country edition: ca, us, gb, fr, … |
currency | "" | Three-letter hint such as CAD, USD, EUR. Google may still display the country edition's currency. |
maxItemsPerQuery | 50 | 1–100 unique hotel rows per search. |
fallbackToProxy | false | Retry once through Apify Proxy if direct traffic is blocked or rate-limited. |
Output
One row per hotel, stored in the default dataset and shown in the Hotels dataset view:
propertyToken, searchQuery, name, price (parsed number), priceText (exactly as Google printed it), currency, rating, reviewsCount, hotelClass, hotelType, vendor (the booking provider Google is quoting), thumbnail, detailsUrl, checkInDate, checkOutDate, scrapedAt.
rating, reviewsCount, currency and vendor are null when the card does not show them. hotelClass and hotelType are reserved and currently always null — the public results layout does not carry them. Rows are de-duplicated across queries on propertyToken, falling back to name + price, so a hotel that appears in two of your searches is returned and billed once.
A no-input run emits one _sample: true row and no chargeable hotel event.
Proxy policy
Direct traffic is the default. Enable fallbackToProxy only for rate limiting, blocking, or geo-sensitive volume; a single Apify proxy URL is then used for one fallback retry. Apify Proxy usage is billed to your own account by Apify and is separate from this Actor's per-hotel price.
There is a strict 30-second wall deadline per query and bounded per-request timeouts, so a stalled query ends the search for that destination rather than burning compute.
Pricing
$3.50 per 1,000 hotels ($0.0035 each), with no run-start fee. Flat rate — no volume tiers, no plan gates — and you are charged only through the hotel event, once per successfully parsed hotel row.
Empty, blocked, timed-out and diagnostic rows are never charged, and neither is the no-input sample. A run of 10 queries at maxItemsPerQuery: 50 returns at most 500 unique hotels and costs at most $1.75.