Google Hotels Scraper - Prices & Booking Offers
Pricing
from $0.50 / 1,000 hotels
Google Hotels Scraper - Prices & Booking Offers
Search Google Hotels for any place and dates. Each hotel becomes one row with its lowest price per night and per stay, rating, reviews, star class, coordinates and every booking site's offer (Booking.com, Agoda, Trip.com, the hotel's own site...). Failures are reported, not charged.
Pricing
from $0.50 / 1,000 hotels
Rating
0.0
(0)
Developer
Philip Kirkbride
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Get Google Hotels prices for any place and any dates. Type a city, neighborhood or search such as "hotels near Times Square", pick check-in and check-out dates and the number of guests, and every hotel Google lists becomes one row: the lowest price per night and for the whole stay (taxes and fees included), star class, guest rating and review count, coordinates, check-in and check-out times and the hotel's website.
Leave Add every booking site's offer on to add, for each hotel, the price from every booking site Google compares (Booking.com, Agoda, Trip.com, Hotels.com, Hostelworld, Super.com, the hotel's own site and more), cheapest first with a link to each offer, plus the street address, phone number and the range the hotel typically costs for your dates. Prices come in the currency you choose. No Google account is needed.
Use cases
- Rate shopping: compare your hotel's price with the competition for the same dates, every day.
- Booking-site parity: see which site sells each hotel cheapest and how far the others are from it.
- Travel deals: find hotels priced below what they typically cost for your dates.
- Market research: collect star class, ratings and prices for every hotel in a city.
- Trip planning: shortlist hotels by price, rating and location for a group's exact dates.
Quick Start
{"queries": ["Lisbon"],"checkInDate": "2026-12-10","checkOutDate": "2026-12-13","adults": 2,"maxItems": 20,"includeOffers": true}
More examples:
- A family weekend in GBP:
{"queries": ["Edinburgh"], "checkInDate": "2026-11-27", "checkOutDate": "2026-11-29", "adults": 2, "childrenAges": [6, 10], "currency": "GBP", "country": "GB"} - Several cities, prices only (faster):
{"queries": ["Paris", "Rome", "Barcelona"], "checkInDate": "+30 days", "checkOutDate": "+32 days", "includeOffers": false, "maxItems": 100} - Hotels only, no apartments:
{"queries": ["hotels near Times Square"], "hotelsOnly": true}
Input
| Input | Type | Default | Meaning |
|---|---|---|---|
queries | array | — | Places or searches as you would type them on Google Hotels: Lisbon, Austin, TX, hotels near Times Square, resorts in Cancun. A bare place is searched as "hotels in |
checkInDate | string | 7 days from today | Arrival date (YYYY-MM-DD) or days from today (+14 days, +2 weeks). Up to 330 days ahead. |
checkOutDate | string | one night after check-in | Departure date, same formats. At most 30 nights. |
adults | integer | 2 | Adults staying (1 to 6). |
childrenAges | array | — | One age (0 to 17) per child. Adults and children together: at most 6. |
includeOffers | boolean | true | Add every booking site's offer, the cheapest site, address, phone and the typical price range. Turn off for faster, cheaper price lists. |
hotelsOnly | boolean | false | Leave out the vacation rentals (apartments and homes) Google mixes into results. |
maxItems | integer | 20 | Cap on rows for each place or search (up to 1,000). |
currency | string | USD | Currency for every price: USD, EUR, GBP, JPY, … |
country | string | US | Country whose Google Hotels results you want (US, GB, DE, …). |
language | string | en | Language of names and labels (en, es, de, pt-BR, …). |
Places run in the order given. A hotel that appears in more than one search is returned once.
What it returns
The dataset contains one row per hotel or vacation rental:
| Field | Meaning |
|---|---|
searchQuery, searchedQuery, matchedPlace, position | Your query, what was searched for it (a "near" search that finds nothing is retried with "in"), the place Google matched it to and the hotel's position in Google's results (1 = first). |
name, entityId, url | Hotel name, Google Hotels property id and its Google Hotels page. |
propertyType | hotel or vacationRental. |
hotelClass, hotelClassText | Star class (1 to 5) and Google's label, for example 4-star hotel. |
rating, reviewCount, ratingBreakdown | Average guest rating out of 5, number of reviews, and the share and count of reviews per star. |
description | Google's short description of the property. |
address, phone | Street address and phone number (with offers). |
latitude, longitude, countryCode | Map coordinates and the property's country. |
website, googleMapsId | The hotel's own website and its Google Maps id. |
checkInTime, checkOutTime | The hotel's check-in and check-out times. |
checkInDate, checkOutDate, nights, adults, childrenAges | The stay that was priced. |
currency | Currency of every price in the row. |
pricePerNight, pricePerNightText | Lowest nightly price with taxes and fees, as a number and as shown. |
totalPrice, totalPriceText, taxesAndFees | Lowest price for the whole stay with taxes and fees, and the taxes and fees inside it. |
lowestPriceSite, lowestPriceUrl | Site selling the stay cheapest and the link to that offer (with offers). |
dealText | Google's deal label, for example 23% less than usual. |
typicalPriceLow, typicalPriceHigh | The range the hotel typically costs per night for these dates (with offers, when Google shows it). |
offerCount, offers | Every booking site's offer, cheapest first: site, isOfficialSite, pricePerNight, totalPrice (number and as shown) and url (with offers). |
imageUrls | Up to 10 photo links. |
detailLevel | offers when the hotel's booking-site prices were read (offerCount 0 when it is sold out), search otherwise. |
scrapedAt | Collection time (UTC, ISO 8601). |
Fields Google does not show are null, never guessed. Hotels that are sold out for your dates come back with null prices.
The run summary (OUTPUT) reports the stay searched, results, resultsWithOffers, one entry per search in searches (the place Google matched, its total count, pages read and rows delivered), errors with the list at searchErrors, and offerErrors for hotels whose booking-site offers could not be read.
Example queries
- Weekend rates in a city:
{"queries": ["Chicago"], "checkInDate": "2026-12-04", "checkOutDate": "2026-12-06"}, then sort bypricePerNight. - Cheapest site per hotel: keep
includeOfferson and comparelowestPriceSitewith theofferslist. - Deals: keep rows whose
pricePerNightis belowtypicalPriceLow, or with adealText. - Daily rate tracking: schedule the same search every morning and watch
pricePerNightmove. - Group trips: set
adultsandchildrenAgesto see prices for the whole party.
Output example
{"searchQuery": "Lisbon","searchedQuery": "hotels in Lisbon","matchedPlace": "Lisbon","position": 2,"name": "The Central House Lisbon Baixa","entityId": "ChkIg-b2ismUj7M1Gg0vZy8xMWg3MThreGg1EAE","url": "https://www.google.com/travel/hotels/entity/ChkIg-b2ismUj7M1Gg0vZy8xMWg3MThreGg1EAE","propertyType": "hotel","hotelClass": 2,"hotelClassText": "2-star hotel","rating": 4.3,"reviewCount": 754,"ratingBreakdown": [{"stars": 5, "percent": 68, "count": 499},{"stars": 4, "percent": 16, "count": 126},{"stars": 3, "percent": 6, "count": 51},{"stars": 2, "percent": 3, "count": 25},{"stars": 1, "percent": 7, "count": 53}],"description": "Straightforward dorms & private rooms in a casual hostel featuring a colorful cafe/bar.","address": "R. dos Fanqueiros 300, 1100-233 Lisboa, Portugal","phone": "+351 21 887 3552","latitude": 38.7131037,"longitude": -9.1368004,"countryCode": "PT","website": "https://www.thecentralhousegroup.com/","googleMapsId": "0xd1934787bad6065:0x35663ca4915db303","checkInTime": "2:00 PM","checkOutTime": "11:00 AM","checkInDate": "2026-11-12","checkOutDate": "2026-11-14","nights": 2,"adults": 2,"childrenAges": [],"currency": "USD","pricePerNight": 59.7,"pricePerNightText": "$60","totalPrice": 119.39,"totalPriceText": "$119","taxesAndFees": 23.72,"lowestPriceSite": "The Central House Lisbon Baixa Hostel","lowestPriceUrl": "https://reservation.mirai.com/Forwarder/googleFrontDispatcher.htm","dealText": "23% less than usual","typicalPriceLow": "$69","typicalPriceHigh": "$86","offerCount": 16,"offers": [{"site": "The Central House Lisbon Baixa Hostel","isOfficialSite": true,"pricePerNight": 59.7,"pricePerNightText": "$60","totalPrice": 119.39,"totalPriceText": "$119","url": "https://reservation.mirai.com/Forwarder/googleFrontDispatcher.htm"},{"site": "Hostelworld","isOfficialSite": false,"pricePerNight": 65.23,"pricePerNightText": "$65","totalPrice": 130.45,"totalPriceText": "$130","url": "https://www.hostelworld.com/pwa/hosteldetails.php/296255"},{"site": "Booking.com","isOfficialSite": false,"pricePerNight": 65.99,"pricePerNightText": "$66","totalPrice": 131.98,"totalPriceText": "$132","url": "https://www.booking.com/"}],"imageUrls": ["https://lh3.googleusercontent.com/grass-cs/AABkmLc9Crdaf45yQ7xb5_N2s15-NsaXQLzcetxCBIBXbn9cwGOQT5W714kRplSjMio8JBh4CvgwT892rSAEvxt3iVdgxSmQceIpydTx_z-LT9ZZ_GdnDCQhmazoZKyzcAlbwsrKNJvz=s287-w287-h192-n-k-no-v1"],"detailLevel": "offers","scrapedAt": "2026-10-20T18:43:10Z"}
(Offer links are shortened here; the dataset carries the full link for your dates and guests.)
Failed searches and offers
A search that could not be read is reported in the run summary at OUTPUT.searchErrors with its query, code and message. When a hotel's booking-site offers cannot be read, the hotel is still delivered with its lowest price and detailLevel search, and it is listed in OUTPUT.offerErrors. Failures are never dataset rows and are not charged.
Every price is checked against your dates: a hotel Google priced for other dates, or without saying for which dates, is left out and not charged, and the run summary counts it at OUTPUT.stayChecks. A search whose prices are all for other dates is reported with the code DATES_IGNORED, and one whose prices carry no dates with DATES_UNVERIFIED. If no hotel at all could be collected, the run ends with an error instead of finishing green with an empty dataset.
Limits and caveats
- Prices are what Google Hotels shows at the moment of the run for your dates, guests and currency; they change often, and booking sites may show a different final price.
- Google mixes vacation rentals into hotel results; use
hotelsOnlyto leave them out. Rentals have no star class or address. - Google lists up to a few hundred properties for most places. For more, split a large city into neighborhoods; duplicates across searches are removed.
- At most 6 guests, 30 nights and 330 days ahead per search, as on Google Hotels.
- With offers on, each hotel takes about a second; without offers, results come back about 18 at a time.
- Automated access is subject to Google's terms; use this actor only where you have the necessary permissions and a lawful basis.
FAQ
Do I need a Google account? No. Only public hotel and price information is collected.
Which booking sites are covered? Every site Google Hotels compares for that hotel and stay, typically 5 to 20: Booking.com, Agoda, Trip.com, Hotels.com, Hostelworld, Super.com, trivago, the hotel's own website and many more.
Are prices per night or per stay? Both: pricePerNight and totalPrice, each with taxes and fees included.
Can I use relative dates for a scheduled run? Yes. "checkInDate": "+14 days" always searches two weeks ahead of the run date.
Price
$0.0005 per hotel, $0.00125 per hotel with booking-site offers ($0.0005 hotel + $0.00075 offers add-on), plus $0.005 per run start. The offers add-on is charged only when at least one booking-site offer comes back: a hotel that is sold out for your dates, or whose offers could not be read, is charged as a hotel. The run-start event is charged per GB of memory; the default 512 MB run is one start event. The start is charged even if the run saves no results. Failed searches are not charged. When your maximum charge for the run is reached, the run stops and keeps the rows already saved. Platform usage is included in these prices.