Google Hotel Prices Scraper - Every Booking Site, 90 Dates
Pricing
from $0.35 / 1,000 prices
Google Hotel Prices Scraper - Every Booking Site, 90 Dates
Track what every booking site charges for a hotel. One row per booking site per date, with the price before and after taxes, the free-cancellation deadline and a direct booking link, plus a free summary row naming the cheapest site. Many hotels and up to 90 check-in dates in one run.
Pricing
from $0.35 / 1,000 prices
Rating
0.0
(0)
Developer
Zen Studio
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
14 hours ago
Last modified
Categories
Share
Google Hotel Prices Scraper | Every Booking Site's Rate, 90 Check-in Dates (2026)
From Zen Studio, creators of Google Hotels Scraper, Google Maps Scraper and Google Maps Reviews. Built on our established travel, maps and reviews suite.
Why choose this actor?
Get the cheapest site and savings calculated for you. Each hotel and date includes a free summary row with the cheapest quoted nightly rate, the hotel's own rate, savings against it, the median and the price spread. Hotel ratings, address and coordinates help you join the comparison to your own research.
Compare every booking site Google lists for your hotel. Get one row per site and date, including Booking.com, Expedia, Agoda, the hotel's own site and smaller booking sites. A city hotel typically returns 25 to 35 of them. Export nightly rates, available stay totals, prices before and after taxes, cancellation deadlines and direct booking links.
Track up to 90 consecutive check-in dates in one run. Price multiple hotels while keeping the same stay length. Choose from 18 markets, compare desktop and mobile offers in separate runs, and use relative dates so scheduled monitoring rolls forward automatically.
Quick input
Try one hotel across three check-in dates, starting 30 days from today:
{"hotels": ["Park Hyatt Tokyo"],"checkInDate": "30","days": 3,"nights": 1,"adults": 2,"currency": "USD","market": "US"}
Open actor input and add hotel names, Google Hotels links or hotel IDs. days controls how many check-in dates to compare; nights sets the length of each stay. Export JSON, CSV or Excel.
Booking sites and available terms vary by hotel, dates, market and device. The summary ranks nightly rates before taxes; tax-inclusive values are separate fields. Price rows are billed; summary rows are free, as set out under Pricing below. The artwork shows a recorded rate excerpt, not a current quote.
| Zen Studio · Travel, Maps & Reviews | ||||
You are here | Find hotels by city | Business details | Guest reviews | More review sources |
Key Features
- Every booking site's price, one row each — nightly rate and stay total, before and after taxes, the exact tax split where the site publishes one, what the rate includes, membership perks, the rooms on offer, and the free-cancellation deadline.
- A direct booking link on every row — the booking site's own URL, carrying the hotel, your dates, the room and the rate code, so a price in your export is a price you can still click.
- A free summary row per hotel and date — cheapest site and price, the hotel's own rate, the saving against it in money and percent, median, spread, how many sites quoted, plus the hotel's rating, review count, class, address and coordinates. Not charged: it is worked out from prices you already paid for.
- Up to 90 check-in dates per run, for as many hotels as you want, one row per booking site per hotel per date.
- Real multi-night stays —
nightsprices a three-night stay starting on each date, not just single nights. - 18 markets — Google quotes a hotel differently to a visitor in each country. Priced for the United States, one Tokyo hotel returned 28 booking sites and a cheapest rate of $1,185; priced for Germany, 21 sites, EUR 1,278, and German booking sites in the list. Pick the market you are tracking.
- Phone rates and computer rates — a few sites quote a phone a different price, and one or two appear on only one of them. Run both and compare.
- Relative dates —
"30"means thirty days from the day the run starts, so a saved schedule never goes stale. - Free tier — 10 lifetime runs, 3 hotel dates per run. No credit card required.
Copy to your AI assistant
zen-studio/google-hotel-prices-scraper on Apify. Every booking site's price for named hotels across consecutive check-in dates. Give hotels:["Park Hyatt Tokyo" or a Google Hotels link or a hotel id] (entity:"..." for one is also accepted) + checkInDate ("2026-11-20" or a number of days from today like "30") + days:N consecutive check-in dates (max 90) + nights:N stay length (max 30, default 1). Two record types in one dataset: recordType=="price" is one row per booking site with rates before and after taxes, tax split, free-cancellation date, rooms and partnerUrl (the booking site's own link); recordType=="summary" is one free row per hotel and date naming cheapestSite, savingsVsOfficialPercent, median, spread and the hotel's rating, address and coordinates - filter to it when you want the answer rather than the table. market:"US"|"DE"|"JP"|... changes which sites quote and what they charge, not just the currency, and currency is set separately; device:"mobile" surfaces a few phone-only rates. Only named hotels - to search a city or region use zen-studio/google-hotels-scraper. Charged per price row, summary rows free; current prices at https://apify.com/zen-studio/google-hotel-prices-scraper. Full spec: GET https://api.apify.com/v2/acts/zen-studio~google-hotel-prices-scraper/builds/default (Bearer TOKEN) -> inputSchema, actorDefinition.storages.dataset, readme. Token: https://console.apify.com/account/integrations
How to price hotels
The whole market for one hotel, tonight
{"hotels": ["Hotel Adlon Kempinski Berlin"],"checkInDate": "1","days": 1,"nights": 1,"currency": "EUR","market": "DE"}
A 30-day price curve
{"hotels": ["Park Hyatt Tokyo"],"checkInDate": "7","days": 30,"nights": 1,"adults": 2,"currency": "USD"}
One row per booking site per date, about 850 prices, plus 30 summary rows naming the cheapest site on each night.
Your hotel against its competitors
{"hotels": ["Hotel Adlon Kempinski Berlin","25hours Hotel Bikini Berlin","The Ritz-Carlton Berlin"],"checkInDate": "14","days": 14,"nights": 2,"currency": "EUR","market": "DE"}
Three hotels across fourteen check-in dates, each priced for a two-night stay. The summary rows alone give you a competitive rate table: 42 rows, one per hotel per date.
The same night in two markets
Run it twice, once with "market": "US" and once with "market": "DE". Every row carries the market it was priced for, so the two runs append into one table.
Rates a phone is shown
{"hotels": ["Park Hyatt Tokyo"],"checkInDate": "30","days": 3,"device": "mobile"}
Already using another hotel price scraper?
Its input runs here unchanged. entity, checkInDate, days, adults, currency and device are all understood, a single hotel name or id in entity works exactly as before, and anything you sent about routing is ignored rather than refused.
{"entity": "ChgIw-i9jd_587w3GgwvZy8xcHR4cWI4OTIQAQ","checkInDate": "2026-11-20","days": 3,"adults": 2,"currency": "USD","device": "desktop"}
What data can you extract?
Every price row carries:
| Field | What it is |
|---|---|
hotel, hotelId | The hotel this price is for, on every row |
checkIn, checkOut, nights | The stay that was priced |
adults, rooms | The party it was priced for |
currency, market, device | What it was priced in, for whom, and as shown where |
partner | The booking site |
officialSite | True when this is the hotel's own site |
position | Where Google listed it |
nightlyRate, nightlyRateValue | Per night, before taxes, formatted and as a number |
nightlyRateWithTaxes, nightlyRateWithTaxesValue | Per night, taxes in |
stayTotal, stayTotalValue | Whole stay, before taxes |
stayTotalWithTaxes, stayTotalWithTaxesValue | Whole stay, taxes in |
taxesAndFees | The tax and fee split, exact where the site publishes it |
freeCancellation, freeCancellationUntil | Cancellation terms, and the date they run to |
perks, includes | Membership offers, and what the rate includes |
roomOffers | The rooms behind the price, where the site names them |
logo, partnerUrl | The site's logo, and its own booking link for this rate |
scrapedAt | When the price was read |
Every figure in a row belongs to one offer: the nightly rate multiplies out to that row's own stay total, and partnerUrl opens that price rather than a different one. A booking site Google only shows above the fold is quoted per night, with no stay total, because the figure published beside that price does not count nights.
Every summary row carries the hotel, stay and market columns above, plus:
| Field | What it is |
|---|---|
sitesCount | How many booking sites quoted |
cheapestSite, cheapestNightly, cheapestNightlyValue | Who is cheapest, and for how much |
cheapestWithTaxesValue, cheapestUrl | The cheapest offer with taxes, and where to book it |
officialNightlyValue | What the hotel's own site is asking |
savingsVsOfficial, savingsVsOfficialPercent | What the cheapest offer saves against it |
medianNightlyValue, highestNightlyValue, priceSpread | How far apart the market is |
rating, reviewsCount, hotelClass, stars | The hotel's own standing |
address, phone, website, latitude, longitude | Where and how to reach it |
hexId, placeId, googleMapsUrl | Ids to join this hotel to Maps data |
Output example
A price row, exactly as delivered:
{"recordType": "price","hotel": "Park Hyatt Tokyo","hotelId": "ChcIlvu51MzyqOwsGgsvZy8xMjB5bGsyMxAB","checkIn": "2026-11-20","checkOut": "2026-11-21","nights": 1,"adults": 2,"rooms": 1,"currency": "USD","market": "US","device": "desktop","position": 3,"partner": "Park Hyatt Tokyo","officialSite": true,"nightlyRate": "$2,073","nightlyRateValue": 2073.0,"nightlyRateWithTaxes": "$2,282","nightlyRateWithTaxesValue": 2282.0,"stayTotal": "$2,073","stayTotalValue": 2073.0,"stayTotalWithTaxes": "$2,282","stayTotalWithTaxesValue": 2282.0,"taxesAndFees": 209.0,"freeCancellation": null,"freeCancellationUntil": "Nov 16","perks": ["Get a lower price with free enrollment"],"includes": null,"logo": "https://www.gstatic.com/travel-hotels/branding/13941953594245004087.png","partnerUrl": "https://www.hyatt.com/shop/TYOPH?rooms=1&adults=2&checkinDate=2026-11-20&checkoutDate=2026-11-21&kids=0&src=paidmeta_glob_dap_TYOPH_google_koddi_en_TYOPH_localuniversal_1_US_desktop_2026-11-20_default___organic_meta","roomOffers": null,"scrapedAt": "2026-09-25T09:22:41+00:00"}
And the summary row that came with it, free:
{"recordType": "summary","hotel": "Park Hyatt Tokyo","hotelId": "ChcIlvu51MzyqOwsGgsvZy8xMjB5bGsyMxAB","checkIn": "2026-11-20","checkOut": "2026-11-21","nights": 1,"adults": 2,"rooms": 1,"currency": "USD","market": "US","device": "desktop","sitesCount": 27,"cheapestSite": "Traveluro","cheapestNightly": "$1,185","cheapestNightlyValue": 1185.0,"cheapestWithTaxesValue": 1484.0,"cheapestUrl": "https://www.traveluro.com/hotels/japan_jp_tokyo/139040_park-hyatt-tokyo?checkIn=2026-11-20&checkOut=2026-11-21&placeId=H139040&campaignName=Google_US¤cyCode=USD&dealKey=CAIQqwEiDAjg7NjVBhD8x6WJAipMDQCAuUQVAEC2RCU9Cu1CLc1MNEMwATh4RQCAuURKCwiA2tjVBhDo-O1zYgpTdGFuZGFyZCBLaAKCAQCNAY-KuUSgAa6_l60GqAHIBjCNBjigvghAgPgPSAFSCNLwfxvIo5DYWMgGYgMKASA&countryCode=US&languageCode=en&rule=Google_US&site=localuniversal&origin=31&ads=&priceDisplayedTotal=1484.00&priceDisplayedTax=298.88&device=desktop&adults=2&children=0","officialNightlyValue": 2073.0,"savingsVsOfficial": 888.0,"savingsVsOfficialPercent": 42.8,"medianNightlyValue": 1831.0,"highestNightlyValue": 2073.0,"priceSpread": 888.0,"rating": 4.5,"reviewsCount": 4588,"hotelClass": "5-star hotel","stars": 5,"propertyType": "hotel","category": "hotel","address": "2, 3 Chome-7-1 Nishishinjuku, Shinjuku City, Tokyo 163-1055, Japan","phone": "+81 3-5322-1234","website": "https://www.hyatt.com/park-hyatt/en-US/tyoph-park-hyatt-tokyo?src=corp_lclb_google_seo_tyoph&utm_source=google&utm_medium=organic&utm_campaign=lmr","latitude": 35.686213099999996,"longitude": 139.69048279999998,"countryCode": "JP","thumbnail": "https://lh3.googleusercontent.com/gps-cs-s/AHRPTWm2q9hWfqaLEAEfvtAvKeFlzsVgHSfc5luwZCQ_cqjT0Kwt-9pBt9FJyuMtfDcO1S613K7j6v2HJJc6FAEc_6y6UveHM03NWsY2lZ8ZWTW6tOEJiu7JgkhvRjln_TILn7pTto5tHouA9Hk=s150-w92-h150-n-k-no","hexId": "0x6018f32cd7dab227:0x2cd8a394ca8e7d96","placeId": "ChIJJ7La1yzzGGARln2OypSj2Cw","googleMapsUrl": "https://www.google.com/maps?cid=3231512592087154070","scrapedAt": "2026-09-25T09:22:41+00:00"}
Dataset views
Both row types land in one dataset and are told apart by recordType.
- Prices — one row per booking site, the default view.
- Cheapest per hotel and date — the summary rows, the view to open when you want the answer rather than the working.
Pricing — Pay Per Event (PPE)
$0.50 per 1,000 prices. Subscription plans pay less, down to $0.35.
| Event | Per call | Per 1,000 |
|---|---|---|
| Price (one booking site, one hotel, one date) | $0.0005 | $0.50 |
| Summary row | Free | Free |
| Actor start | $0.005 | — |
| What you are doing | Prices | Cost |
|---|---|---|
| One hotel, one date | ~28 | $0.014 + start |
| One hotel, a 30-day curve | ~840 | $0.42 |
| 20 hotels, 7 dates each | ~3,900 | $1.96 |
| 5 hotels tracked daily for a month, 30 dates each | ~126,000 | $63, or $44 on the top plan tier |
Apify's own platform charges are listed separately in the Console.
Free tier: 10 lifetime runs, 3 hotel dates per run. No credit card required.
How it compares
| This Actor | Typical alternative | |
|---|---|---|
| Hotels per run | As many as you like | One |
| Stay length | Any, from one night to thirty | One night only |
| Dates per run | Up to 90 consecutive check-in dates | Unlimited, one night each |
| Fields per price | 31, including taxes-in prices, tax split, cancellation date and rooms | 9 |
| Which hotel a row is for | On every row, with its id | Not in the row at all |
| Booking link | The booking site's own URL | A tracking wrapper, relative and short-lived |
| Cheapest offer | Named for you in a free summary row, with the saving against the hotel's own site | Work it out yourself |
| Market | Chosen as a market, by country | Set by hand as a proxy country |
| Price | $0.50 per 1,000 prices | $1.00 per 1,000 |
FAQ
Are the prices live? Yes. Every run asks for your exact dates at run time. Nothing is cached, and each row echoes back the stay that was priced.
Why are there more booking sites here than on Google's own page? Google shows a few above the fold and files the rest under "All options". Both are collected, merged and deduplicated, which is usually 25 to 35 sites for a city hotel.
Can I book at the price I see?
partnerUrl is the booking site's own link for that rate, carrying your dates, the room and the rate code. Rates move, so treat an export as a reading at scrapedAt, not a reservation.
Does party size change the price?
No. Google quotes the same nightly rate whatever adults and rooms are set to. The values are recorded on the row so your export documents what was asked for.
Why is the same hotel priced differently for a different market? Because it is a different offer. Booking sites bid per market, local sites only appear in their own, and taxes are shown differently. That is a question worth asking rather than a discrepancy to normalise away: the cheapest US offer on one Tokyo night was about 15% under the cheapest German one after converting.
What if a hotel has no prices for a date? It is reported as having no prices and costs you nothing. That happens on nights a hotel is not selling, and far enough ahead that Google is not taking bookings for them yet.
Can I use a hotel name, or do I need an id? A name works, and so does a Google Hotels link or an id from an earlier run. A name is resolved to the property Google matches it to; if that comes back wrong, paste the link instead.
Can I price a whole city rather than named hotels? Not here — that is Google Hotels Scraper, which searches a market and returns up to about 1,000 hotels with 54 fields each. Use it to find the hotels, then track them here.
What if the market I picked cannot be reached? The run stops and says so, before anything is charged. Every row names the market it was priced for, so serving you another market's prices under that name would be worse than an error. Try again in a few minutes, or pick a different market.
Can I run this on a schedule?
Yes, and it is built for it. Use a relative checkInDate so each run prices the next N nights rather than a fixed date that ages out.
What's the free tier? 10 lifetime runs, 3 hotel dates per run. No credit card required.
More Zen Studio scrapers for travel & local data
- Google Hotels Scraper — search a whole market, 54 fields per hotel
- Google Maps Scraper — 40+ fields per place, past Google's 250-per-view ceiling
- Google Maps Reviews Scraper — unlimited review histories, one row per review
- Place Review Aggregator — one place, five review platforms, one export
Support
- Bugs: Issues tab
- Features: Issues tab
Legal Compliance
Extracts publicly available data. Users must comply with Google's terms of service and data protection regulations (GDPR, CCPA).
One row per booking site per hotel per date, with taxes in and out, the cancellation deadline and a direct booking link — plus a free row naming the cheapest site and what it saves. $0.50 per 1,000 prices.
