Google Hotels Scraper API avatar

Google Hotels Scraper API

Pricing

from $1.56 / 1,000 verified hotel and stays

Go to Apify Store
Google Hotels Scraper API

Google Hotels Scraper API

Compare Google Hotels prices and organic booking offers for your dates, adults and currency. Search destinations or use hotel links for hotel price monitoring. $1.95/1,000 hotels plus $0.001/start at default memory; provider offers included. Maintained by CleanScrape.

Pricing

from $1.56 / 1,000 verified hotel and stays

Rating

0.0

(0)

Developer

CleanScrape

CleanScrape

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

20 hours ago

Last modified

Share

Collect hotel prices for a specific stay, together with the organic booking offers available through Google Hotels, part of Google Travel. Each result identifies the property, dates, guest count and currency, so you can use it in a spreadsheet or your own price-monitoring workflow.

Maintained by CleanScrape. Questions or unexpected results: contact.cleanscrape@gmail.com. Include your run ID and a brief description; never send API tokens.

The main form shows the destination, stay preset, nights, adults, currency and Maximum hotels. Open Specific hotels or dates (optional) for property links or exact check-in and check-out dates. Filters and scan limits are below that; connection controls are in Advanced connection settings. Existing presets and saved tasks keep their original behavior.

Watch a real run

Let's use a two-night trip to London as an example. This short walkthrough shows the stay controls, hotel prices, included provider offers and spreadsheet export using a real Actor run.

Open the London example, then change the destination and stay to suit your search. The video uses recorded prices, not current booking quotes. Place searches cover the first source results page, not every hotel in a city.

For a provider spreadsheet, choose Export, select Provider offers in the dialog, and then choose Excel or CSV. Provider offers are included in each hotel result rather than billed as additional results. Check room and cancellation terms before comparing quotes.

Try a small example

Suppose you are comparing accommodation in London for a two-night trip next month.

Open the five-hotel example task. The example uses relative dates, so you can reuse it for a later trip.

  1. Enter hotels in London under Place searches.
  2. Choose In 30 days, 2 nights, 2 adults and British pound.
  3. Leave Maximum hotels at 5 and start the run.
  4. Open the Hotel prices table for headline nightly and stay totals. Switch to Provider offers to compare collected booking-provider quotes in separate display rows.
  5. Read the Run report alongside the results. It explains source errors, filtering and coverage limits.

For exact properties, clear the prefilled Place searches entry and paste Google Hotels URLs under Exact Google Hotels properties. You can also keep both inputs to combine discovery with specific properties. The Actor checks that the returned property ID matches. Place searches are discovery, not exact hotel-name matching. Words such as "four-star" or a neighborhood name are search hints, not verified filters or geographic boundaries.

{
"queries": ["hotels in London"],
"datePreset": "in_30_days",
"nights": 2,
"currency": "GBP",
"adults": 2,
"maxResults": 5
}

Compare hotel prices for the same stay

Open a property in Google Hotels and copy its full property-page URL. Paste one link per entry under Exact Google Hotels properties (optional), then clear Place searches if you do not want additional discovery results. Set the dates, adults and currency in this form; values embedded in a pasted link do not replace those settings.

For a reusable example, this link to The Waldorf Hilton, London requests a new stay in 30 days:

{
"queries": [],
"hotelUrls": [
"https://www.google.com/travel/hotels/entity/ChUI3_-FnbCxhLlLGgkvbS8wNmNna3EQAQ/prices"
],
"datePreset": "in_30_days",
"nights": 2,
"adults": 2,
"currency": "GBP",
"maxResults": 1
}

Availability and quotes can change. Use your own property link for your comparison. To switch back to a place search, remove the property links and enter a destination. To switch from exact dates to a preset, clear both date fields as well.

Dates without manual formatting

Use tomorrow, next Friday, in seven days or in thirty days. Presets are calculated from the run's UTC date and work with schedules. Dates are saved when a run starts and stay fixed if that same run restarts. A new scheduled run calculates a new stay. If saved dates have become past, start a new run instead. For a fixed trip, select Choose exact dates under When is the stay?, then open Specific hotels or dates (optional) and select both calendar dates. Explicit check-in and check-out values take precedence over a preset.

The Actor supports one requested room and 1-6 adults. Children, multiple rooms and date grids are not supported yet. It does not silently ignore unsupported input fields.

What you receive

One dataset row represents one property and stay, including the collected organic provider offers. Dates, currency, adult count and property identity must pass source checks before a row is delivered.

FieldMeaning
name, hotelId, googleHotelsUrlProperty identity and a link with the requested stay
checkIn, checkOut, nights, adults, currencySource-verified stay context
nightlyPrice, totalPriceGoogle's displayed headline amounts, preserved separately
offersSupported organic provider quotes, amounts, source terms and Google booking redirects
offerCount, offersStatus, warningsCollected coverage and relevant limitations
rating, reviewCount, addressProperty information when the supported source supplies it
verification, fetchedAt, recordKeyQuality checks, collection time and stable property/stay key

The stay total is not calculated by multiplying a rounded nightly price. Provider quotes can differ from Google's headline offer. A missing field means it was not available in a supported source structure, not that the property lacks that feature.

Export to a spreadsheet or use the API

Use the Output tab's export option for CSV or Excel, selecting Hotel prices for one row per hotel or Provider offers for individual quotes. For integrations, use JSON to keep each hotel's nested offers array. Expanding the provider view does not create extra hotel results or hotel-result charges. A hotel without supported offers may have an empty provider cell; its headline price remains in the Hotel prices view.

The provider table leaves out long booking URLs and internal provider IDs to keep comparisons readable. They remain available in All fields and the full JSON export. Numeric provider prices preserve the source precision; the corresponding nightlyPriceText and totalPriceText fields retain Google's rounded display strings.

In the export dialog, select the view again before downloading; it may not match the table currently open. Apify's CSV and Excel exports can retain empty columns for fields hidden by a view. These do not mean that hotel prices are missing. Use the JSON export when preserving the complete nested records is important.

You can schedule the same input for repeat collection. Use explicit dates to track one particular trip, or a relative preset for a rolling stay. A fresh run collects a fresh snapshot; this Actor does not calculate historical price changes or send alerts.

Comparing prices responsibly

A cheaper offer may be a dorm bed rather than a private room, or have different cancellation and meal terms. Room equivalence is not verified by this Actor. The lowest observed provider is not a rate-parity finding or a guarantee of the cheapest equivalent booking.

Google can map hostel occupancy to multiple beds or bookable units. requestedRooms: 1 describes the request, not independent confirmation that every provider is selling one ordinary hotel room. taxesIncludedInHeadline is currently null: the parser cannot reliably attribute tax wording to the headline quote. Do not assume taxes or local charges are included.

Booking links can expire, and checkout prices can change. The Actor does not open booking destinations, make reservations or verify checkout availability. It does not return paid advertising placements as organic offers.

Coverage and limits

  • The Actor discovers up to 20 properties from the first source results page per place search. It is not a complete city export.
  • Maximum results is a run-wide upper limit, not a promise of that many available prices.
  • Rating filtering happens after lookup, so a restrictive filter can produce fewer results.
  • Provider counts vary by property and stay. Offers are bounded by Maximum offers per hotel.
  • Source blocks stop the workflow. No CAPTCHA bypass or automatic residential fallback is included.
  • Direct requests and Apify datacenter proxy are the supported connection modes. Custom proxy URLs, residential groups and country-targeted proxy settings are rejected rather than silently ignored.
  • A failed lookup or absent quote does not mean a hotel is sold out. Diagnostics belong in the run report, not fabricated price rows.
  • Interrupted runs retain completed rows. An ambiguous charging/storage interruption stops safely for investigation rather than risking duplicate charges.

Pricing

The base price is $1.95 per 1,000 delivered hotel/stay results, plus $0.001 per Actor start at the default 256 MB of memory. Collected organic provider offers and platform usage are included. Expanding or exporting provider offers does not create another billable hotel result.

Delivered hotel resultsBase cost, including one start at default memory
1$0.00295
5$0.01075
20$0.04000
50$0.09850

Bronze subscribers receive 10% off base event prices, Silver 15%, and Gold 20%. The same 20% reduction applies to Platinum and Diamond. Apify applies the subscription-tier price automatically; see the Pricing tab for your applicable rate.

The start event is charged automatically by Apify: one event for up to 1 GB of allocated memory, then one for each additional GB. Keep the default memory unless your workload requires more. A start can be charged even when no quote is returned. Failed lookups, rejected source contexts and filtered-out properties are not hotel-result events.

Restart costs: Apify can charge another start event when a finished or interrupted run is resurrected. The cost examples above assume one start, not repeated restarts. The Actor cannot prevent this platform-managed event before its code starts. Check the run's accumulated charges before resurrecting it with an already exhausted budget.

Set a positive maximum run cost to control spending. When there is not enough budget for another result, the Actor stops delivery and reports charge_limit. A maximum result count is also a cap, not a prepaid package or a guaranteed number of quotes. Resuming an interrupted run does not intentionally re-export or re-charge already saved hotel rows.

If a run returns fewer results than expected

  • Check Run report for the effective dates, currency and adult count. A maximum is a cap, not a guaranteed result count.
  • A source-layout or context-mismatch error means the Actor could not safely verify that response. It does not substitute a price for a different stay.
  • For a source block, wait before trying a small run again. Increasing concurrency or repeatedly restarting is not a reliable fix.
  • If a broad place search is not specific enough, open the property in Google Hotels and paste its full /travel/hotels/entity/ URL. Short Maps links and booking-site links are not supported.
  • For API use, submit arrays of search strings or property URLs. No Google account, hotel ID lookup or additional source API key is needed when you use place searches.

Support and independence

We welcome specific bug reports and examples of missing coverage. Maintenance is ongoing, but source changes can cause interruptions; there is no uptime guarantee or promise that every property always has a quote.

This Actor is an independent tool and is not affiliated with, endorsed by or sponsored by Google or the booking providers shown in its results. All trademarks belong to their respective owners.