Google Hotels Scraper — Prices & Booking Site Comparison avatar

Google Hotels Scraper — Prices & Booking Site Comparison

Pricing

from $1.50 / 1,000 hotel listings

Go to Apify Store
Google Hotels Scraper — Prices & Booking Site Comparison

Google Hotels Scraper — Prices & Booking Site Comparison

Google Hotels prices for any city or hotel and dates: nightly and total price, star class, rating, reviews, amenities, coordinates and links, plus optional Booking.com / Expedia / official-site price comparison and date-by-date price tracking. Pay only for hotels with prices.

Pricing

from $1.50 / 1,000 hotel listings

Rating

0.0

(0)

Developer

Dustin Griffie

Dustin Griffie

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

6 hours ago

Last modified

Share

Get Google Hotels results for any city, neighbourhood or landmark — nightly price, price with taxes, total stay price, star class, guest rating, review count, amenities, address, coordinates, photos and links — and optionally every booking site's price for each hotel (Booking.com, Expedia, Hotels.com, Agoda, Trip.com, the hotel's official site…) with direct booking links.

No browser: the Actor talks to the same data endpoint the Google Hotels page uses, so it is fast (about 1,000 hotels in 4 minutes) and cheap to run, with automatic retries and a residential-proxy fallback.

What you can do

Use caseHow
All hotels in a city for your dates, cheapest firstlocations: ["Lisbon, Portugal"], sortBy: "lowest_price"
4–5 star hotels rated 4.5+ with a pool under €300hotelClass: [4,5], minRating: "4.5", amenities: ["pool"], maxPrice: 300
Compare Booking.com vs Expedia vs official siteincludeOtaPrices: true (search) or list hotels in hotels
Track one hotel's price for every night of a monthhotels: ["Avenida Palace, Lisbon"], checkIn + dateRangeEnd, nights: 1
Rate parity / revenue management for your property and competitorshotels = your property + competitor set, dateRangeEnd, dateStepDays: 7
Familiesadults: 2, childrenAges: [4, 9]
Any currency / marketcurrency: "JPY", country: "jp"

How to scrape Google Hotels

  1. Click Try for free and enter one or more cities or areas (for example Austin, TX), or hotel names or Google Hotels links.
  2. Pick check-in and check-out dates, guests and currency. Add filters (stars, rating, price, amenities) if you need them.
  3. Turn on booking-site price comparison if you want Booking.com, Expedia, the official site and others side by side.
  4. Click Start. Download the results as JSON, CSV or Excel, or get them through the Apify API, integrations or a schedule.

Input

  • Cities or areas – one per line. Each place × stay is a search, paginated up to Max hotels per location (Google serves ~20 per page).
  • Hotels to price-check – names (add the city), Google Hotels links or entity ids. One row per hotel × stay with all booking sites.
  • Dates – check-in / check-out, or a date sweep: Check-in → Repeat until with Nights per stay and a Step.
  • Guests, currency, market, filters (price range, stars, minimum rating, amenities, free cancellation, hotels vs vacation rentals, hotels only) and sort (relevance, lowest price, highest rating, most reviewed).
  • Amenity filters: free_wifi, free_breakfast, free_parking, pool, indoor_pool, outdoor_pool, fitness_center, restaurant, bar, spa, beach_access, kid_friendly, pet_friendly, room_service, air_conditioning, all_inclusive, wheelchair_accessible, ev_charger.

Example:

{
"locations": ["Austin, TX", "Shibuya, Tokyo"],
"checkIn": "2026-12-04",
"checkOut": "2026-12-06",
"adults": 2,
"currency": "USD",
"sortBy": "lowest_price",
"maxResultsPerLocation": 40,
"includeOtaPrices": true,
"maxOtaHotelsPerLocation": 10
}

Output

Every row has a status and a human-readable statusMessage.

Hotel row (recordType: "hotel"):

{
"status": "ok", "location": "Austin, TX", "position": 2, "checkIn": "2026-12-04", "checkOut": "2026-12-06", "nights": 2,
"name": "HomeTowne Studios Austin", "entityId": "ChcIzo2q98CXwpFGGgsvZy8xdGp6OGM5MRAB",
"pricePerNight": 37, "pricePerNightWithTaxes": 44, "totalPrice": 74, "totalPriceWithTaxes": 88, "currency": "USD",
"propertyKind": "hotel", "hotelClass": 2, "rating": 2.8, "reviewCount": 852, "reviewsByStars": {"1": 315, "2": 82, "3": 115, "4": 110, "5": 230},
"amenities": ["Free Wi-Fi", "Free parking", "Air conditioning", "Fitness center", "Kitchen in rooms"],
"amenitiesNotAvailable": ["Breakfast"],
"address": "12621 Hymeadow Dr", "latitude": 30.4577, "longitude": -97.7903, "phone": "(512) 331-4747",
"website": "https://www.redroof.com/…", "checkInTime": "3:00 PM", "checkOutTime": "11:00 AM",
"description": "Traditional all-suite hotel with kitchenettes…", "thumbnail": "https://lh3.googleusercontent.com/…", "images": ["…"],
"nearbyPlaces": [{"name": "Austin Aquarium", "travel": [{"mode": "car", "duration": "4 min"}]}],
"googleMapsCid": "14130573527917797695",
"googleHotelsUrl": "https://www.google.com/travel/hotels/entity/…?ts=…",
"cheapestProvider": "Super.com", "cheapestPricePerNightWithTaxes": 44, "officialSitePricePerNightWithTaxes": 59, "providerCount": 21,
"providers": [{"provider": "Super.com", "pricePerNight": 37, "pricePerNightWithTaxes": 44, "totalPriceWithTaxes": 88, "isOfficialSite": false, "sponsored": false, "bookingUrl": "https://www.super.com/…"}]
}

The cheapest… / providers fields appear when price comparison is on. Hotel lookups (recordType: "hotel_prices") have the same fields plus hotelInput.

Statuses

statusmeaningcharged
okhotel with a price (and, for lookups, at least one booking-site price)yes
no_priceGoogle lists the hotel but has no price for these dates (sold out / not bookable)no
no_availabilitysearch or lookup with no priced resultno
invalidunknown location, rejected filters, or dates Google ignoredno
not_foundno Google Hotels property matches the hotel nameno
failedstill blocked after all retriesno

Dataset views: Hotels, Booking-site price comparison, Price by date, Statuses. Run statistics (success rate, requests, retries, proxy tier, bytes, timings) are in the RUN_STATS key-value record.

How much does it cost to scrape Google Hotels?

Pay per event. You pay only for results with prices.

EventFree / BronzeSilver and higher
hotel-listing – one hotel row with a price$0.002$0.0015
hotel-prices – one hotel × stay with at least one booking-site price (price comparison or hotel lookup)$0.005$0.004
Actor start$0.00005$0.00005

Example: 1,000 priced hotels with no price comparison cost $2.00 on the Free plan. Adding price comparison for 100 of them costs $0.50 more. Apify's free plan includes $5 of monthly usage, which is enough for about 2,500 priced hotels a month.

Unpriced hotels, duplicates and every non-ok row are free. The Actor respects your Max cost per run: it stops before starting work it can't pay for.

Tips & limits

  • Write places the way you would on Google: "Austin, TX", "Lisbon, Portugal", "near Times Square". Unknown places return an invalid row (Google would otherwise silently show hotels from somewhere else).
  • Google only prices stays up to ~11 months ahead and at most 30 nights. Past dates are rejected up front.
  • Prices are what Google shows to a signed-out visitor in the chosen market (country) — member/mobile-only rates may differ, and the set of booking sites varies by hotel, date and market.
  • Hotel lookups by name use Google's own match; add the city or paste the Google Hotels link for exact results.
  • Family searches (childrenAges) return fewer priced hotels, because many rooms can't fit the whole party (in London, 2 adults + 2 kids got prices for about 40% of hotels, against 95% for 2 adults). Unpriced hotels are still listed with status no_price and are free.
  • Some hotels never show prices on Google, only "Check availability" (for example The Plaza, New York). These come back as no_availability / no_price and are not charged.
  • Filters work exactly like Google Hotels' own filters. Every amenity, star class, guest rating, price range, free cancellation and sort option was checked on 2026-10-23 against the request Google's site sends and against the hotels returned. Amenity filters return hotels that have that amenity (the price range applies to the nightly price before taxes). Google's result counts can jump between searches. That is Google, not the Actor.
  • Google mixes some vacation rentals into hotel results, especially with amenity filters (for example free parking in Miami Beach). Every row has propertyKind (hotel / vacation_rental). Turn on Hotels only (excludeVacationRentals: true) to drop rentals. Dropped rentals aren't saved or charged.
  • The amenity list comes from Google's card/detail data; amenities Google doesn't label are omitted (amenityCodes keeps the raw codes).

FAQ

Do I need a proxy? The default Apify datacenter proxy is used first; the Actor switches to residential automatically if Google starts blocking (keep Fall back to residential on).

Is it legal? The Actor collects publicly available prices. You are responsible for how you use the data; don't collect personal data without a legal basis.