Google Hotels Scraper - Google Travel Hotel Prices & OTAs avatar

Google Hotels Scraper - Google Travel Hotel Prices & OTAs

Pricing

from $3.00 / 1,000 hotel price with all ota offers

Go to Apify Store
Google Hotels Scraper - Google Travel Hotel Prices & OTAs

Google Hotels Scraper - Google Travel Hotel Prices & OTAs

Google Travel hotel prices for any city or hotel list: lowest nightly rate, every OTA offer (Booking.com, Expedia, Agoda, Trip.com, official site), price calendar across many check-in dates, typical price range and hotel details. Fast, no browser.

Pricing

from $3.00 / 1,000 hotel price with all ota offers

Rating

0.0

(0)

Developer

Kamer Ozkan

Kamer Ozkan

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

10 days ago

Last modified

Share

Google Hotels Scraper: Google Travel Hotel Prices & OTA Rates

Run on Apify Pricing Memory Status

Get Google Travel hotel prices for one hotel or a whole city. This Google Hotels scraper extracts real-time hotel prices, rate parity insights, and OTA booking offers from Google Hotels (Google Travel) for any city, landmark, or list of properties. Retrieve the lowest nightly rate, all booking site offers (Booking.com, Expedia, Hotels.com, Agoda, Trip.com, Priceline, official hotel sites), multi-date price calendars (up to 365 days), Google's typical price benchmark, tax breakdowns, and full property metadata.

Built for speed and reliability: browserless direct protocol engine, no login, no cookies, no heavy headless browser overhead.


Why Google Hotels Scraper?

FeatureWhat you get
Pricing Model$0.003 / hotel with all OTAs
Execution Speed2 to 4 seconds per search (no browser)
Memory Footprint512 MB
All OTA OffersYes (10+ booking channels in one row)
Price BenchmarkYes (low, typical, high)
Multi-Date CalendarsYes (up to 365 check-in dates)

Core Use Cases

  • Hotel Revenue Management & Rate Shopping: Track your hotel's competitive set daily. See which OTA undercuts your official rate and monitor price shifts in real time.
  • Rate Parity Enforcement: Verify whether Booking.com, Expedia, or Agoda are violating parity agreements for your rooms across upcoming seasons.
  • Price Calendars & Seasonality Analysis: Scan 30, 90, or 365 check-in dates in a single run to uncover peak demand dates, holiday surges, and low-season troughs.
  • Travel Tech & Deal Sites: Build high-frequency hotel price comparison engines and deal alert feeds for any city worldwide.
  • AI Agents & Workflows: Integrate clean JSON directly into n8n, Make, Zapier, LangChain, or LLM-driven travel planners.

Key Features

  • Query-Based Discovery: Search any destination (hotels in Paris, luxury hotels in Manhattan, cheap hotels near Colosseum) with automatic pagination.
  • Specific Hotel Monitoring: Track designated hotels by name, Google Hotels entity URL, or hotelId.
  • All OTA Offers in One Row: Receive provider name, nightly price, stay total, and direct booking URL for every booking channel.
  • Google Price Insight: Instant comparison against historical averages (priceLevel: low, typical, high) with low/high threshold values.
  • Stay Total & Tax Breakdown: Base room total plus estimated taxes and fees.
  • Filters Before Billing: Minimum stars, minimum guest rating and a nightly price range. Hotels that do not match are skipped and never charged.
  • Relative Dates: Use dynamic expressions (+14 days, tomorrow) for automated daily monitoring without updating dates manually.
  • 30+ Currencies & Global Point of Sale: Set currency (USD, EUR, GBP, TRY) and country market code (US, GB, DE, TR).

How to scrape Google Hotels

  1. Type one or more searches into Search queries, exactly as you would on Google Hotels (hotels in Rome, hotels near Times Square), or paste hotel names, Google Hotels URLs or hotel IDs into Specific hotels.
  2. Pick the check-in date, nights and guests. For a price calendar, raise Number of check-in dates (30 gives one row per hotel per day for a month).
  3. Leave Include all OTA offers on to get every booking site's price, or turn it off for a cheaper lowest-price-only run.
  4. Click Start and download the results as JSON, CSV or Excel, or schedule the run for daily rate tracking.

Input Parameters

ParameterTypeRequiredDefaultDescription
searchQueriesArray of StringsNo[]Search destinations or landmarks to discover hotels. If both lists are empty, the example search hotels in Istanbul runs.
hotelsArray of StringsNo[]Specific hotel names or Google Hotels URLs to track.
checkInDateStringNo"+14 days"Check-in date (YYYY-MM-DD or relative like +14 days, today+14, tomorrow, 2 weeks).
numberOfDatesIntegerNo1Scan multiple consecutive check-in dates (1 to 365).
dateStepIntegerNo1Step in days between calendar dates (e.g. 7 for weekly).
nightsIntegerNo1Length of stay in nights (1 to 30).
adultsIntegerNo2Number of adult guests (1 to 10).
currencyStringNo"USD"3-letter currency code (USD, EUR, GBP, TRY, etc.).
includeOtaOffersBooleanNotrueExtract all OTA booking site offers. If false, extracts lowest price only.
maxHotelsPerSearchIntegerNo20Maximum properties to collect per search query (up to 500), counted after filters.
minHotelClassIntegerNo0Only hotels with at least this many stars (search queries only).
minRatingStringNoemptyOnly hotels with at least this Google guest rating, e.g. 4.5.
minPricePerNight / maxPricePerNightIntegerNo0Price range per night in the selected currency (lowest search price). Filtered-out hotels are not charged.
proxyConfigurationObjectNo{ "useApifyProxy": true }Apify proxy settings (Datacenter or Residential).

Example JSON Output

Each record represents one hotel property for a specific check-in date:

{
"hotelName": "The Marmara Taksim",
"hotelId": "ChoIv9zm0pCp0vObARoNL2cvMTFkZHd0ZzdmeBAB",
"checkIn": "2026-11-05",
"checkOut": "2026-11-07",
"nights": 2,
"adults": 2,
"currency": "EUR",
"lowestPricePerNight": 145.0,
"lowestTotalPrice": 290.0,
"lowestPriceProvider": "Booking.com",
"offersCount": 8,
"offers": [
{
"provider": "Booking.com",
"pricePerNight": 145.0,
"totalPrice": 290.0,
"bookingUrl": "https://www.google.com/travel/lodging/clk?..."
},
{
"provider": "Official Site",
"pricePerNight": 150.0,
"totalPrice": 300.0,
"bookingUrl": "https://www.google.com/travel/lodging/clk?..."
},
{
"provider": "Expedia",
"pricePerNight": 152.0,
"totalPrice": 304.0,
"bookingUrl": "https://www.google.com/travel/lodging/clk?..."
}
],
"priceInsight": {
"currentPrice": 145,
"typicalLowPrice": 130,
"typicalHighPrice": 180,
"priceLevel": "typical"
},
"stayTotal": {
"baseTotal": 260.0,
"taxesAndFees": 30.0,
"grandTotal": 290.0
},
"rating": 4.5,
"reviewCount": 4210,
"address": "Taksim Meydani, Istanbul, Turkey",
"latitude": 41.0369,
"longitude": 28.9850,
"googleHotelsUrl": "https://www.google.com/travel/search?q=...",
"scrapedAt": "2026-10-06T20:30:00+00:00"
}

Code Examples

Python (apify-client)

from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_API_TOKEN")
run_input = {
"searchQueries": ["hotels in Istanbul"],
"checkInDate": "+14 days",
"nights": 2,
"adults": 2,
"currency": "USD",
"includeOtaOffers": True,
"maxHotelsPerSearch": 25,
}
# Run the Actor and wait for it to finish
run = client.actor("kamerozkan/google-hotels-prices").call(run_input=run_input)
# Fetch results from default dataset
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(f"{item['hotelName']}: lowest ${item['lowestPricePerNight']} on {item['lowestPriceProvider']}")

JavaScript / Node.js (apify-client)

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({
token: 'YOUR_APIFY_API_TOKEN',
});
const runInput = {
searchQueries: ['hotels in Barcelona'],
checkInDate: '+7 days',
nights: 1,
currency: 'EUR',
includeOtaOffers: true,
};
const run = await client.actor('kamerozkan/google-hotels-prices').call(runInput);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(`Extracted ${items.length} hotel rate records:`, items);

cURL

curl --request POST \
--url "https://api.apify.com/v2/acts/kamerozkan~google-hotels-prices/runs?token=YOUR_APIFY_API_TOKEN" \
--header "Content-Type: application/json" \
--data '{
"searchQueries": ["hotels in Rome"],
"checkInDate": "2026-12-01",
"nights": 2,
"currency": "EUR"
}'

Pricing Details

This Actor operates under Pay-Per-Event (PPE):

  • Full Hotel Offer ($0.003): Charged per hotel per check-in date with complete OTA rates, price insights, and stay total.
  • Listing Only ($0.001): Charged per hotel when includeOtaOffers: false (fastest search mode).

Platform compute usage is fully included in the event price. You can set a spending limit in Apify Console to prevent overruns.

Example: 20 hotels in one city for one check-in date with all OTA offers is 20 x $0.003 = $0.06. A 30-day price calendar for 10 hotels is 300 x $0.003 = $0.90.


FAQ

Do I need a Google account or an API key? No. The Actor reads the public Google Hotels pages without login or cookies.

Why did a hotel return no offers? Google shows no bookable offers for some hotels on some dates (sold out or not listed). The row still has isAvailable: false so you can see the gap.

Can I get Google Travel hotel prices for one hotel across many dates? Yes. Put the hotel name, its Google Travel URL or its hotel ID (Ch...) into Specific hotels and set Number of check-in dates (for example 30). You get one row per date with every booking site's price in offers, so 30 dates are 30 rows, not one row per site.

Can I track the same hotels every day? Yes. Put them in Specific hotels, use a relative check-in date such as +14 days, and add a schedule in Apify Console.

Am I charged per booking site? No. One row holds every OTA offer for one hotel and one check-in date, and that row is one $0.003 charge whether Google lists 3 booking sites or 15.

Which currencies and countries work? 30+ currencies in the Currency list and any two-letter country code as the point of sale.

Support and feedback

  • Found a bug or missing a field? Open an issue on the Issues tab of this Actor. We reply within 48 hours and ship most fixes within a few days.
  • Have an idea for a feature? Issues are the fastest way to get it built.
  • If the Actor saves you time, a short review on this page helps other users find it.