Google Hotels Scraper - Prices, Rates & Availability avatar

Google Hotels Scraper - Prices, Rates & Availability

Pricing

from $2.39 / 1,000 hotel results

Go to Apify Store
Google Hotels Scraper - Prices, Rates & Availability

Google Hotels Scraper - Prices, Rates & Availability

Scrape Google Hotels prices, rates and availability for any city or hotel and dates: nightly price, taxes, every booking site's rate (Booking.com, Expedia, official site…), rating, reviews, stars, amenities. Rate-parity and price-change monitoring built in.

Pricing

from $2.39 / 1,000 hotel results

Rating

0.0

(0)

Developer

Quelli di Carne Genuina

Quelli di Carne Genuina

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

Get hotel prices from Google Hotels for any city, neighborhood or list of hotels and any dates: nightly rate, total stay price, taxes and fees, the price on every booking site (official hotel website, Booking.com, Expedia, Hotels.com, Agoda, Trip.com and more), guest rating, reviews, star class, amenities and coordinates. Built-in rate parity check and price-change monitoring. No Google account, no browser, no cookies to manage.

Independent tool, not affiliated with Google LLC. It reads the public prices shown on google.com/travel/hotels.

What you get

One row per hotel and stay, with every booking site's price (real result, shortened):

{
"hotelName": "River Palace Hotel",
"pricePerNight": 136.02,
"totalRate": 272.04,
"currency": "EUR",
"lowestPriceVendor": "Super.com",
"officialSitePrice": 202.73,
"cheaperThanOfficialSite": ["Hotelsnest.com", "Super.com", "Amimir.com", "trivago DEALS"],
"bookingSources": [{ "vendorName": "Super.com", "ratePerNight": 136.02, "totalRate": 272.05, "bookingUrl": "https://www.google.com/travel/lodging/clk?pc=…" }],
"starRating": 4,
"overallRating": 4.4,
"reviewCount": 767,
"checkInDate": "2026-11-20",
"checkOutDate": "2026-11-22"
}

Try it in 1 click: the prefilled example runs in under a minute. Press Start with the prefilled input ("hotels in Rome", check-in in 30 days, 2 nights): in our test today it finished in 22 seconds at 512 MB and returns up to 20 hotels, so it costs at most $0.08 on the Apify Free plan (less on paid plans).

Price: from $3.99 per 1,000 hotels on the Apify Free plan down to $2.39 on Gold and above, booking-site prices included, no start fee.

Why this Google Hotels scraper

  • 20% cheaper on every Apify plan than the most used Google Hotels actor (e.g. $3.99 vs $4.99 per 1,000 hotels on Free, $2.39 vs $2.99 on Gold and above; see the price table below), and every booking site's price is included in the per-hotel price.
  • Built for reliability: each request is retried on a fresh IP, one failing city or hotel never fails the run, and a RUN_SUMMARY record tells you what happened for each target. You always get the hotels that were collected.
  • Drop-in compatible: locations, checkInDate, checkOutDate, adults, currency, languageCode, countryCode, maxResults, requestTimeoutSecs work exactly as in the popular Google Hotels actors (aliases searchQuery, maxItems, language, country accepted too).
  • Rate parity out of the box: official-site price, cheapest site, and which sites undercut the official rate.
  • Monitoring: relative dates ("30 days") for schedules, previous price and % change on every row, optional output of changes only.

Who uses it

  • Hotel revenue managers: track your property and your competitive set every day, across every channel Google shows.
  • Rate parity / distribution teams: catch OTAs selling below the official website.
  • Travel agencies, tour operators, travel startups: hotel inventory and prices for any destination, by date and occupancy.
  • Market research and AI agents: "What does a 4-star hotel in Lisbon cost in December?" answered with fresh data.

Input

{
"locations": ["hotels in Rome"],
"hotels": ["Hotel Artemide Rome"],
"checkInDate": "30 days",
"checkOutDate": "32 days",
"adults": 2,
"childrenAges": [7],
"currency": "EUR",
"countryCode": "it",
"maxResults": 50,
"hotelClass": ["4", "5"],
"minRating": "4.0",
"includeBookingSources": true
}
FieldWhat it does
locationsSearches as typed in Google Hotels: "hotels in Rome", "Paris", "hotels near Times Square".
hotelsSpecific properties: Google Hotels URL, entity ID (entityId from a previous run) or just the hotel name.
checkInDate / checkOutDateYYYY-MM-DD or days from today ("30 days"). Defaults: 30 days from today, 1 night.
adults / childrenAgesOccupancy of one room, e.g. 2 adults and [5, 9].
currency, languageCode, countryCodeAny ISO currency, Google language (hl) and market (gl).
maxResultsHotels per location (pagination is automatic).
includeBookingSourcesPrice of every booking site with links (default on, no extra cost).
minPrice, maxPrice, minRating, hotelClassFilters; hotels filtered out are not charged.
onlyPriceChanges, monitorStoreNameMonitoring mode: output only new hotels or changed prices.

Output

One item per hotel and stay (real result, shortened):

{
"hotelName": "River Palace Hotel",
"entityId": "ChcItbiE_4Lfs4JqGgsvZy8xdGh2X2RtdBAB",
"googleHotelsUrl": "https://www.google.com/travel/hotels/entity/ChcItbiE_4Lfs4JqGgsvZy8xdGh2X2RtdBAB",
"pricePerNight": 136.02,
"pricePerNightDisplay": "€136",
"totalRate": 272.04,
"currency": "EUR",
"lowestPriceVendor": "Super.com",
"officialSitePrice": 202.73,
"cheaperThanOfficialSite": [
"Hotelsnest.com",
"Super.com",
"Amimir.com",
"trivago DEALS"
],
"bookingSources": [
{
"vendorName": "Hotelsnest.com",
"isOfficialSite": false,
"ratePerNight": 147.88,
"totalRate": 295.76,
"bookingUrl": "https://www.google.com/travel/lodging/clk?pc=AA80OswF_an21Ni..."
},
{
"vendorName": "Super.com",
"isOfficialSite": false,
"ratePerNight": 136.02,
"totalRate": 272.05,
"bookingUrl": "https://www.google.com/travel/lodging/clk?pc=AA80OsxGrOpYyAu..."
}
],
"hotelClass": "4-star hotel",
"starRating": 4,
"overallRating": 4.4,
"reviewCount": 767,
"gpsLatitude": 41.9133381,
"gpsLongitude": 12.4749991,
"checkInTime": "2:00 PM",
"checkOutTime": "11:30 AM",
"website": "https://www.riverpalacehotel.it/?utm_source=gbp&utm_medium=organic",
"ratingsBreakdown": [
{
"stars": 5,
"percent": 67,
"count": 488
},
{
"stars": 4,
"percent": 22,
"count": 175
}
],
"reviewsBreakdown": [
{
"name": "Breakfast",
"sentiment": 0.67,
"totalMentioned": 97,
"positive": 81,
"negative": 9
}
],
"nearbyPlaces": [
{
"name": "Piazza del Popolo",
"transportations": [
{
"type": 2,
"duration": "4 min"
}
]
}
],
"images": [
"https://lh3.googleusercontent.com/grass-cs/AABkmLc..."
],
"location": "hotels in Rome",
"rank": 2,
"checkInDate": "2026-11-20",
"checkOutDate": "2026-11-22",
"nights": 2,
"adults": 2,
"previousPricePerNight": 141.5,
"priceChangePct": -3.9,
"scrapedAt": "2026-10-16T19:51:17.462Z"
}

pricePerNight is the nightly price Google shows for the stay (taxes included where Google includes them); totalRate is the stay total. RUN_SUMMARY in the key-value store lists, for each location or hotel, how many hotels were saved and any error.

Pricing

Pay per result, with every booking site's price included. The price per hotel depends on your Apify plan:

Apify planPer hotelPer 1,000 hotels
Free$0.00399$3.99
Bronze$0.00346$3.46
Silver$0.00293$2.93
Gold, Platinum, Diamond$0.00239$2.39

No start fee. Hotels removed by your filters, and unchanged hotels in onlyPriceChanges mode, are not charged. Set a maximum charge per run to cap spending: the scraper stops cleanly when it is reached.

Migrating from zerobreak/google-hotels-scraper

All of zerobreak's input fields are accepted with the same names, so an existing input usually works after changing the actor ID to lagenuina_agency/google-hotels-scraper.

zerobreak inputThis actorNotes
locationslocationszerobreak searches "Hotels in
checkInDate / checkOutDatecheckInDate / checkOutDateSame YYYY-MM-DD; relative dates like "30 days" also work, and both are optional here (default: 30 days from today, 1 night).
adultsadultsSame. Children: add childrenAges.
currencycurrencySame.
languageCodelanguageCodeSame (hl).
countryCodecountryCodeSame (gl).
maxResultsmaxResultsSame meaning; maximum here is 500 per location (zerobreak allows up to 1,000).
requestTimeoutSecsrequestTimeoutSecsSame.
proxyConfigurationproxyConfigurationSame; the default Apify Proxy is enough.
(not available)hotels, minPrice, maxPrice, minRating, hotelClass, onlyPriceChangesExtra: price specific hotels by name, URL or entity ID, filters, price-change monitoring.

Output: the core fields keep the names shown in zerobreak's README example (hotelName, hotelDescription, gpsLatitude, gpsLongitude, hotelClass, starRating, overallRating, reviewCount, checkInTime, checkOutTime, pricePerNight, pricePerNightDisplay, totalRate, currency, amenityCodes, ratingsBreakdown, reviewsBreakdown, nearbyPlaces, bookingSources, checkInDate, checkOutDate, scrapedAt). Differences: reviewsBreakdown uses totalMentioned instead of total_mentioned; booking sources have isOfficialSite and totalRate instead of isSponsored and numGuests; there is no propertyType or top-level totalRateDisplay. Added here: entityId, googleHotelsUrl, website, images, lowestPriceVendor, officialSitePrice, cheaperThanOfficialSite, rank, nights, previousPricePerNight, priceChangePct.

Price per 1,000 hotels (public Apify Store prices, checked on 17 October 2026; both actors price by Apify plan):

Apify planzerobreakThis actor
Free$4.99$3.99 (-20%)
Bronze$4.32$3.46 (-20%)
Silver$3.66$2.93 (-20%)
Gold and above$2.99$2.39 (-20%)

Speed and completeness: we have not benchmarked the two actors side by side. Run the same input on both and compare your own runs.

Limits / not supported

  • One room per search: adults (up to 12) plus childrenAges. Multi-room bookings are not supported.
  • Up to 500 hotels per location, and never more than Google itself lists for that search.
  • Prices are the ones Google shows for the chosen market (countryCode) and currency; whether taxes are included follows Google's display for that market.
  • No room types, rate plans, cancellation policies or review texts: you get the nightly and total price per booking site, ratings and review statistics.
  • No Google-side sorting, amenity or free-cancellation filters. minPrice, maxPrice, minRating and hotelClass are applied by the actor after reading the results (filtered hotels are not charged).
  • A hotel given by name is matched to Google's first result for that name: check matchedHotel, or use the Google Hotels URL / entity ID for an exact property.
  • If the booking-site prices of one hotel cannot be loaded, the hotel is still returned with bookingSources: null and bookingSourcesError.

Monitor hotel prices and rate parity

  1. Put your hotel and competitors in hotels (names or Google Hotels URLs).
  2. Use relative dates, e.g. checkInDate: "14 days", so each scheduled run looks the same distance ahead.
  3. Schedule the actor daily in Apify and connect Slack, email, Google Sheets, Make, n8n or Zapier.
  4. Alert on cheaperThanOfficialSite (parity breach) or on priceChangePct.

Use it from AI agents (MCP)

Any MCP client (Claude, ChatGPT, Cursor, custom agents) can call this scraper through the Apify MCP server:

{
"mcpServers": {
"apify": { "url": "https://mcp.apify.com/?actors=lagenuina_agency/google-hotels-scraper" }
}
}

Ask things like "Find 4-star hotels in Lisbon under €150 for 12-14 December" or "Is Booking.com cheaper than the official site of Hotel Artemide next weekend?": the inputs map directly to destination, dates, guests, currency and filters, and results come back as clean JSON.

Integrations and API

Call it from your code with the official Apify clients:

# pip install apify-client
from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("lagenuina_agency/google-hotels-scraper").call(run_input={"locations": ["hotels in Rome"], "checkInDate": "30 days", "checkOutDate": "32 days", "maxResults": 20})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item)
// npm i apify-client
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('lagenuina_agency/google-hotels-scraper').call({"locations": ["hotels in Rome"], "checkInDate": "30 days", "checkOutDate": "32 days", "maxResults": 20});
const { items } = await client.dataset(run.defaultDatasetId).listItems();

No-code: use the Apify app in n8n, Make or Zapier (action "Run Actor", pick lagenuina_agency/google-hotels-scraper), or the langchain-apify / CrewAI ApifyActorsTool integrations for AI agents. Results can also be pushed to Google Sheets, Slack, webhooks or any S3 bucket via Apify integrations.

More tools from Quelli di Carne Genuina

Ad intelligence

Competitor & SEO research

Travel prices

Retail prices

Content & social data

FAQ

How do I get hotel prices from Google Hotels for specific dates? Set locations (or hotels), checkInDate and checkOutDate. Each hotel comes back with the nightly and total price for that stay.

Can I see the price on Booking.com, Expedia and the hotel's own website? Yes, bookingSources lists every booking site Google shows for the stay, with nightly and total price and the booking link. officialSitePrice and cheaperThanOfficialSite summarize rate parity.

Is there a Google Hotels API? Google does not offer a public Google Hotels API (its Hotel APIs are for hotels and partners sending their own prices). This actor gives you the public prices as JSON through the Apify API, from Python, JavaScript, n8n, Make, Zapier or MCP.

Does it include taxes? pricePerNight is the nightly price as Google displays it for your market, and each booking source has its own nightly and total price.

Which currencies, languages and countries are supported? Any currency Google Hotels supports (USD, EUR, GBP, JPY, CHF…), any Google language (languageCode) and market (countryCode).

How many hotels can I get per city? Up to maxResults per location (default 20, up to 500); the scraper pages through Google's results.

How do I track hotel prices over time? Schedule the actor with relative dates. Each row carries previousPricePerNight and priceChangePct; turn on onlyPriceChanges to receive only changes.

Do I need proxies or a Google account? No account. The default Apify Proxy works; failed requests are retried automatically on a new IP.

Something broke? Open an issue on the Issues tab: we answer within 24 hours.