Home › Guides › Google Hotels Scraper

Google Hotels data: nightly prices, booking-site offers and hotel contacts for any destination

Google Hotels compares the price of a stay across the booking sites it lists — Booking.com, Expedia, Hotels.com, Agoda, the hotel's own site and others. The Google Hotels Scraper returns that comparison as one row per property: the nightly price, each booking site's offer with totals, room rates with free-cancellation terms, star class, guest rating and review count, third-party ratings such as Tripadvisor, and the hotel's address, phone, website and Google Place ID. No Google account, no API key, no browser.

Who it's for

What you get

GroupFields
PropertyName, property type (hotel, hostel, resort hotel, vacation rental…), star class, description, highlights, amenities (vacation rentals), thumbnail
PriceNightly lead price (before taxes), price text with and without taxes, deal label ("16% less than usual"), cheapest offer
Booking sitesPer site: provider, whether it is the hotel's official site, nightly price with and without taxes, total price with and without taxes, booking link with your dates; number of offers
RoomsProvider, room, features, free cancellation (yes / unknown), cancellation term ("Free cancellation until Nov 10"), prices
ReviewsRating, review count, reviews per star, review topics with mentions, third-party ratings (Tripadvisor, Trip.com…) with their review counts
Contact & locationAddress, phone, website, Google Place ID, Maps feature ID, latitude, longitude, country code, neighborhood, check-in and check-out times
SearchCheck-in, check-out, nights, adults, currency, rank in this search, the place Google searched, Google Hotels URL, property token, scrape time

Booking sites, rooms, address, phone, Place ID and third-party ratings come from each hotel's price comparison, read when includeOffers is on (the default).

A real row from a platform run on 2026-09-27 — hotels in Paris, 12–14 November 2026, 2 adults, EUR (trimmed):

{
  "name": "MOB HOUSE",
  "propertyType": "hotel",
  "hotelClass": 4,
  "rating": 4.3,
  "reviewsCount": 1130,
  "pricePerNight": 67.31,
  "cheapestOffer": { "provider": "Traveluro", "pricePerNight": 67.31, "totalPriceWithTaxes": 179.3, "isOfficialSite": false },
  "address": "70 Rue des Rosiers, 93400 Saint-Ouen-sur-Seine, France",
  "phone": "+33 1 55 28 80 80",
  "website": "https://www.mobhouse.com/",
  "googlePlaceId": "ChIJIfquhEVv5kcRwVvMuyVzegQ",
  "offersCount": 26,
  "offers": [
    { "provider": "MOB HOUSE", "isOfficialSite": true, "pricePerNight": 110.38, "pricePerNightWithTaxes": 119.85, "totalPrice": 220.75, "totalPriceWithTaxes": 239.7 },
    { "provider": "Traveluro", "isOfficialSite": false, "pricePerNight": 67.31, "pricePerNightWithTaxes": 89.65, "totalPrice": 134.62, "totalPriceWithTaxes": 179.3 }
  ],
  "roomRates": [
    { "provider": "Expedia.com", "room": "1 double bed", "freeCancellation": true, "cancellation": "Free cancellation until Nov 9", "pricePerNight": 108, "pricePerNightWithTaxes": 135 }
  ],
  "externalRatings": [{ "source": "Tripadvisor", "rating": 3.6, "scale": 5, "reviewsCount": 66 }],
  "checkIn": "2026-11-12",
  "checkOut": "2026-11-14",
  "nights": 2,
  "currency": "EUR"
}

In this row the hotel's own site asks 110.38 per night while the cheapest listed booking site asks 67.31 — the kind of gap a rate-parity check is looking for, with both sides of it in one record.

Input: destinations, hotels and stay dates

InputWhat it does
queriesDestinations as you would type them into Google Hotels (hotels in Paris, Istanbul, resorts in Bali), hotel names (Ritz Paris), Google Hotels links or property tokens
checkInYYYY-MM-DD, or days from today such as +30 (a scheduled run always prices the stay 30 days ahead); default +14
nights / checkOutLength of stay (1–30), or an explicit check-out date; default 1 night
adults · currencyGuests per room (default 2) · currency of every price (30 currencies, default USD)
maxHotelsPerQueryUp to 200 properties per destination; Google pages 20 at a time (default 20)
includeOffersBooking-site offers, rooms, address, phone, Place ID and third-party ratings — one extra request per hotel (on by default)
propertyTypeAll, hotels only (no vacation rentals), or vacation rentals
minRating · minHotelClass · maxPricePerNightFilters applied to the results Google returns; a filtered search reads up to 20 result pages to find enough matches
language · countryLanguage of descriptions and labels; the searcher's market (the booking sites shown follow it)

Price comparison for Paris, 2 nights, 30 days ahead:

{ "queries": ["hotels in Paris"], "checkIn": "+30", "nights": 2, "currency": "EUR", "maxHotelsPerQuery": 10 }

A local market with its own currency and language:

{ "queries": ["Istanbul"], "checkIn": "+30", "currency": "TRY", "language": "tr", "country": "tr", "maxHotelsPerQuery": 20 }

Each hotel once per run. A property is delivered and charged once per run, whichever query finds it first — the same hotel given by name and by token, or returned by two searches, is one row. Destinations Google cannot find deliver no hotels: the run leaves one free row whose error starts with unresolved: and says why, instead of quietly returning hotels near the server's own location.

Measured data quality

Measured on three platform runs (Paris 40 properties, Istanbul 20, Paris 10):

Honest limits

Speed

On the Apify platform, 10 Paris hotels with booking sites took 7 seconds, 40 took 25 seconds and 20 Istanbul properties took 11 seconds. One list request returns up to 20 properties; the booking-site comparison is one more request per hotel. None of the measured runs was rate-limited or needed the residential proxy; if Google does rate-limit a run, the actor switches to Apify residential proxy by itself.

Pricing

Pay per result: each delivered property is one hotel event, with the booking-site offers included. Status rows are free — a search with no results, a destination Google could not find, a hotel already delivered by an earlier query. Apify also charges its standard actor-start event once per run. Current prices are on the actor's Pricing tab on Apify.

Price a destination now: type hotels in Paris, pick the dates and currency, and get every listed booking site's offer per hotel — exportable to JSON, CSV or Excel.

Open the Google Hotels Scraper →

Related

Demand for a destination moves with the seasons; the Google Trends scraper guide shows how to pull 5-year weekly interest for a search term. If you sell to hotels, the website on each row is the key for company enrichment — see the firmographics & competitive intelligence guide. All Google datasets are in the Google data section.

Frequently asked questions

Is pricePerNight the cheapest price?

It is Google's lead price for the stay, before taxes. In the latest measured runs it equalled the cheapest offer in most rows (median ratio 1.00), was at most 15.2% above it and at most 5.2% below it; one row in an earlier test run was 27% below every listed booking site. The cheapestOffer field gives the lowest booking-site price among the offers.

Can I search by hotel name?

Yes. When Google matches the name to one hotel, such as Ritz Paris, the scraper returns that hotel with its price comparison, the same as for its property token. Google's offer list can differ between two requests.

Why do some properties have no star class?

Google shows no class for vacation rentals and for some hotels (5 of 33 hotels in one measured Paris run).

What happens with a typo in the destination?

No hotels are delivered for it. The run leaves one free row whose error starts with unresolved: and explains why, so nothing is charged. On delivered rows, resolvedLocation shows the place Google searched.

Is free cancellation always detected?

Room terms are read from Google's labels, checked in 13 languages including English, Turkish, German, French and Spanish. In another language the term stays in the room features and freeCancellation is null. When a rate states no cancellation term, freeCancellation is null, never false.

Google Hotels Scraper — pay per hotel, booking-site offers included, no Google account.

Get hotel prices on Apify →