Google Hotels Scraper: Prices, Ratings and Stars for Your Dates
Pricing
$0.01 / 1,000 hotel properties
Google Hotels Scraper: Prices, Ratings and Stars for Your Dates
Google Hotels scraper without a browser: nightly and total prices for your dates, guests and currency, plus stars, rating, reviews, coordinates and website for every property Google lists, across all result pages. Prices checked against your dates. Trial: 0.01 USD per 1,000 hotels until 30 Nov 2026.
Pricing
$0.01 / 1,000 hotel properties
Rating
0.0
(0)
Developer
Cozybit
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
12 hours ago
Last modified
Categories
Share
Google Hotels Scraper: prices, ratings and hotel details for your dates
Get hotel and vacation-rental prices from Google Hotels as clean records, without a browser and without a Google account. For each search (a city, area or "hotels near ...") and your dates and guests, you get every property Google lists:
- Price: the lowest nightly price Google shows for your dates and the total for the stay, in the currency you choose.
- Quality: hotel class (stars), Google rating and number of reviews.
- Details: coordinates, website, check-in and check-out times, short description, thumbnail, and links to the Google Hotels and Google Maps entries.
- Optional booking sites: every site Google lists for the hotel (Booking.com, Expedia, the hotel's own site and others) with its nightly and total price and a link.
- Optional single-hotel mode: one hotel across up to 60 consecutive check-in dates, one row per night.
- Optional filters: free cancellation, price range, minimum hotel class and minimum guest rating, applied by Google itself, so you only pay for hotels that match.
Typical uses: price monitoring for a city or competitor set, rate-parity checks across booking sites, revenue management for one hotel, travel-deal research, market studies of a destination.
Prices include all platform costs: you pay per hotel returned and nothing for proxies or compute.
Input
| Field | What it does | Default |
|---|---|---|
| Search queries | 1-100 searches, such as Paris, hotels in Paris, hotels near Times Square, a hotel's name or its property_token | required |
| Check-in / check-out date | YYYY-MM-DD, or a time from the run date such as 3 weeks or 23 days (handy for scheduled runs); up to 330 days ahead, 1-30 nights | 14 days from today, one night |
| Consecutive check-in dates | 1-60: search each query for this many check-in dates in a row, same stay length | 1 |
| Adults | 1-6 | 2 |
| Children's ages | Up to 4 ages, 0-17 (experimental, see Limits) | none |
| Currency | Any currency Google supports, such as USD, EUR, GBP, INR, JPY | USD |
| Search country | The Google market to search from, such as US, DE, GB | US |
| Maximum properties per query | 1-500; the actor follows Google's result pages | 20 |
| Include booking sites | Add each hotel's booking sites with prices and links | off |
| Free cancellation only | Google's free-cancellation filter | off |
| Minimum / maximum nightly price | Whole numbers in your currency | none |
| Minimum hotel class | 2-5 stars; that class and above | any |
| Minimum guest rating | 3.5+, 4.0+ or 4.5+ | any |
Example: up to 100 properties in Paris for two adults, three nights in March, prices in euros:
{"queries": ["Paris"],"checkIn": "2027-03-12","checkOut": "2027-03-15","adults": 2,"currency": "EUR","country": "FR","maxResultsPerQuery": 100}
Example: a scheduled daily check of two nights in Paris three weeks ahead; the dates move with each run:
{ "queries": ["hotels in Paris"], "checkIn": "3 weeks", "checkOut": "23 days" }
Example: 4- and 5-star hotels in Paris rated 4.5 or better, up to 250 USD a night:
{ "queries": ["hotels in Paris"], "checkIn": "2027-03-12", "checkOut": "2027-03-14", "minStars": 4, "minRating": "4.5", "maxPrice": 250, "maxResultsPerQuery": 40 }
Example: one hotel, one-night stays for each of the next 30 check-in dates, with every booking site's price:
{ "queries": ["Crowne Plaza Paris Republique"], "checkIn": "2027-03-01", "checkOut": "2027-03-02", "checkInDays": 30, "includeBookingSites": true }
Output
One record per property. Example (shortened thumbnail URL):
{"query": "Orlando", "position": 4, "page": 1, "status": "ok", "error": null,"name": "Universal Endless Summer Resort - Dockside Inn and Suites","type_text": "3-star hotel", "stars": 3, "rating": 4.4, "review_count": 25901,"price_per_night": 331, "price_per_night_text": "$331", "total_price_text": "$662", "currency": "USD","check_in": "2026-11-13", "check_out": "2026-11-15", "adults": 2, "children_ages": [],"latitude": 28.4597363, "longitude": -81.462522, "country_code": "US","website": "https://www.universalorlando.com/web/en/us/places-to-stay/universals-endless-summer-resort-dockside-inn-and-suites","check_in_time": "4:00 PM", "check_out_time": "11:00 AM","description": "Relaxed resort hotel with a food court, outdoor pools & sand beaches, plus free theme park shuttles.","thumbnail_url": "https://lh3.googleusercontent.com/...","property_token": "ChkIvd-lusSMvMYJGg0vZy8xMWgzbDBseGw1EAE","google_hotels_url": "https://www.google.com/travel/hotels/entity/ChkIvd-lusSMvMYJGg0vZy8xMWgzbDBseGw1EAE","maps_feature_id": "0x88e77f436ca4cc19:0x98cf06447496fbd","source_url": "https://www.google.com/travel/search?q=Orlando&hl=en&gl=us&curr=USD&ts=...","scraped_at": "2026-10-30T17:37:01.936Z"}
price_per_nightis the lowest nightly price Google shows across booking sites, before Google's rounding (price_per_night_textis the rounded label).total_price_textis Google's label for the whole stay. Whether taxes are included follows Google's display for the search country.- Fields Google does not show for a property are
null; for example vacation rentals often have no stars, and a sold-out property has no price. property_tokenidentifies a property across runs and is the key for price monitoring. You can also use it as a search query to get exactly that hotel.booking_sitesisnullunless you turn on "Include booking sites". Then it lists each site in Google's order:
"booking_sites": [{ "site": "Crowne Plaza Paris - Republique by IHG", "price_per_night": 218.98, "total_price": 437.97, "is_official": true,"link": "https://www.google.com/travel/lodging/clk?pc=...&pcurl=https://www.ihg.com/..." },{ "site": "Booking.com", "price_per_night": 223.07, "total_price": 446.15, "is_official": false, "link": "https://www.google.com/travel/lodging/clk?..." }]
is_official marks the hotel's own website. link is Google's click-through link to that site's offer; links expire. A hotel without offers for your dates, such as a sold-out one, has an empty list. If one hotel's booking sites cannot be read, the hotel is still returned, with booking_sites: null and the reason in booking_sites_error.
- Single hotel: a query with a hotel's name or
property_tokenreturns that one hotel. With "Consecutive check-in dates" above 1 you get one row per check-in date, each with its owncheck_inandcheck_out. - Records keep the same field names in format v1; any future change will be announced here first.
status: "no_data" means Google listed no properties for that search. status: "error" means the search failed after all retries; error says why. You never pay for no_data or error records. A run summary (RUN_SUMMARY) is saved in the run's key-value store.
Use it from code
Get your API token in Apify Console under Settings > API & Integrations. Each example runs the actor, waits for it to finish and prints the hotels.
Python (pip install apify-client):
from apify_client import ApifyClientclient = ApifyClient("<YOUR_API_TOKEN>")run = client.actor("cozybit/google-hotels-scraper").call(run_input={"queries": ["hotels in Paris"],"checkIn": "2027-03-12","checkOut": "2027-03-15","currency": "EUR","country": "FR",})for hotel in client.dataset(run["defaultDatasetId"]).iterate_items():print(hotel["name"], hotel["price_per_night"], hotel["rating"])
JavaScript (npm install apify-client):
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: '<YOUR_API_TOKEN>' });const run = await client.actor('cozybit/google-hotels-scraper').call({queries: ['hotels in Paris'],checkIn: '2027-03-12',checkOut: '2027-03-15',currency: 'EUR',country: 'FR',});const { items } = await client.dataset(run.defaultDatasetId).listItems();for (const hotel of items) console.log(hotel.name, hotel.price_per_night, hotel.rating);
HTTP API, one request that runs the actor and returns the records as JSON (for runs up to 5 minutes; use the clients above for longer ones):
curl -X POST "https://api.apify.com/v2/acts/cozybit~google-hotels-scraper/run-sync-get-dataset-items" \-H "Authorization: Bearer <YOUR_API_TOKEN>" -H "Content-Type: application/json" \-d '{"queries": ["hotels in Paris"], "checkIn": "2027-03-12", "checkOut": "2027-03-15", "currency": "EUR", "country": "FR"}'
To track prices over time, save the input as a task in Apify Console and add a schedule; relative dates such as "checkIn": "3 weeks" keep each run looking the same distance ahead.
Pricing
Trial price until 30 November 2026: 0.01 USD per 1,000 hotels (the lowest price Apify allows). From 1 December 2026 this scraper costs 2.50 USD per 1,000 hotels. Apify notifies all users before a price change.
You pay per property returned; platform usage (compute and proxies) is included.
| Event | Price |
|---|---|
| Hotel (one property with its price for your dates) | 2.50 USD per 1,000 (0.0025 USD each) |
Booking sites and single-hotel mode are included in the hotel price during the trial; we will announce any separate price here before it applies.
Worked examples:
- One city, the first 20 properties: 20 hotels = 0.05 USD.
- 10 cities, 100 properties each: 1,000 hotels = 2.50 USD.
- Daily price monitoring of 50 properties for 30 days: 1,500 hotels = 3.75 USD.
To cap spending, set a maximum cost per run in the run options; the actor stops cleanly when it is reached.
Free Apify plan
On the free Apify plan a run returns at most 20 hotels. When the limit is reached the run finishes successfully with the status message "Free Apify plan limit reached"; everything collected so far is in the dataset. Any paid Apify plan removes the limit.
Reliability
In 36 test runs on the Apify platform (18 cities, 5 countries and currencies, check-in 3-180 days ahead, 1-4 nights), every search returned properties (1,428 in total) and Google limited no IP. The median run took 11 seconds. All 94 hotels requested with booking sites got their list. With filters on (Paris, London, New York, Rome, Berlin), all 227 returned hotels met every star, rating and price filter.
Prices are Google's own numbers: every hotel that also appeared in another Google Hotels scraper's results had the same nightly price to the cent, the same rating and the same review count. Against the most-used booking-site scraper on one Paris hotel, we returned 97 site offers to its 95, with 91 of the 93 shared offers priced within 1 USD of each other, and finished in 9.5 s against its 12.3 s.
How it stays reliable: the actor reads the data Google embeds in its result page instead of driving a browser, sends a few paced requests per IP and switches to a new IP when Google limits one. Every property is checked against your dates and currency, so a page where Google ignored your request becomes a clear error instead of wrong prices. If Google changes its page format, the run fails with a message naming the changed part rather than returning an empty or wrong dataset.
Limits
- Address and phone are not included: Google leaves them out of searches with dates, and fetching each hotel's page would multiply the cost.
- Children's ages are experimental: the request includes them, but Google's response does not confirm them, so check prices for family searches.
- Prices are what Google shows at the time of the run and change often.
- Filters apply to city and area searches, not to single-hotel or
property_tokenqueries. Free cancellation is Google's filter; check the terms of the offer you book. - Booking sites depend on Google's partners for the search country, so the list differs by market. For city searches, they add one request per hotel: 30 Paris hotels with booking sites took about 1.5 minutes.
- Up to 500 properties per search and 100 searches per run. Google itself usually stops after a few hundred properties per search.
- Google Hotels has no official public API; when Google changes its site the actor may fail until it is updated.
Related actors
- Google Hotels Booking-Site Prices: every booking site's price for one hotel over up to 60 check-in dates, one row per site.
- Google Flights Scraper: flight prices, schedules, bags and amenities for any route and date.
- Google Flights Fare Calendar: the cheapest fare for every day over up to 180 days.
Support
Report problems and feature requests on the actor's Issues tab, ideally with the run link.