Google Hotels Scraper: Prices, Offers & Hotel Data avatar

Google Hotels Scraper: Prices, Offers & Hotel Data

Pricing

from $0.60 / 1,000 hotels

Go to Apify Store
Google Hotels Scraper: Prices, Offers & Hotel Data

Google Hotels Scraper: Prices, Offers & Hotel Data

Google Hotels by place, dates and guests: nightly and total prices, booking-site offers, official-site flags, ratings, amenities, photos and location. Paged results, confirmed currency, free failure notes and a spending limit.

Pricing

from $0.60 / 1,000 hotels

Rating

0.0

(0)

Developer

Zaiq

Zaiq

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

11 days ago

Last modified

Features

Limited permissions

Share

Google Hotels Scraper: Prices, Offers & Hotel Data

Get hotels for a place, dates and guests, with nightly prices, stay totals, ratings, amenities, photos and optional booking-site offers. Each hotel starts with a plain verdict showing the price and whether offers were found. Results page automatically, with duplicates removed.

Price: $0.00075 per priced hotel, or $0.00275 per hotel with booking offers, plus $0.003 per successful search. The offer price includes the hotel; the two hotel events are alternatives. A 20-hotel search costs $0.01805 including Apify's start charge. Start with {"searches":["hotels in Lisbon"]}.

What you get

FieldWhat it holds
Hotelverdict, kind, status, name, type, hotelClass, rating, reviews, rank, url
Stay pricespricePerNight and priceTotal before taxes with fees included; taxes, fees, totalWithTaxes, totalWithTaxesPerNight; displayedPricePerNight and priceBasis when a breakdown is unavailable
Dates, guests and currencycheckIn, checkOut, nights, adults, childrenAges, stayConfirmed, requestedCurrency, actual currency and priceNote. Unconfirmed prices are withheld.
DetailsAmenities and availability flags, description, coordinates, country, website, photo links, rating breakdown, review topics, nearby places and source IDs. Address and phone when supplied.
Booking offersoffers: site, nightly/stay price, currency, official-site and sponsored flags, deal labels and safe direct booking links where supplied. rooms: featured room rates and cancellation terms. Each offer has guestCoverage and guestMatch; children priced as adults are marked, and prices for a different guest mix are withheld.
ComparisonlowestPricePerNight, lowestPriceSite, hotelWebsitePricePerNight, sites, offerCount, offersStatus, dealLabels
AdvertisingSponsored-only placements are separate, free sponsored-hotel rows. Organic rows can have hasSponsoredPlacement.
SUMMARYPer-input counts, stopping reasons, incomplete-result warnings, source totals, route changes, traffic, timing and charges.

What people use it for

  • Price monitoring: Repeat the same searches and dates on a schedule.
  • Booking-site comparison: Compare the hotel website with the offers Google exposes for the same stay.
  • Travel data: Collect prices, ratings, amenities, locations and photo links.
  • Market research: Compare the hotel supply Google shows for several places.

How to use it

  1. Enter a place in Searches, or leave the form as it is for the 20-hotel first run.
  2. Optionally set dates, adults, child ages, currency, country and language. Blank dates mean 14 days from the run date, for 2 nights.
  3. Turn on Every booking site’s price for offers. Set Maximum cost per run, then start.

Input

FieldExampleNotes
Searcheshotels in LisbonOne query per line, up to 100. Empty searches and hotel links use the first-run example.
Check-in / check-out2027-02-10 / 2027-02-13One stay per run; 1–30 nights. Invalid dates return a free note.
Adults / children’s ages2 / ["7", "10"]1–12 adults and up to 8 children aged 0–17; one room.
CurrencyEURRequested currency; each row records what Google actually returned.
Hotels per search201–10,000 organic results. Google may end earlier. Search records, notes and sponsored rows are extra.
Every booking site’s priceoffOn: one combined hotel-and-offers event. Missing offers use the basic event only if a confirmed hotel price was delivered.
Include vacation rentalsonOff excludes records Google identifies as vacation rentals. Unknown types remain visible.
Include sponsored placementsonFree supplementary ads with a smaller field set. Offers are not fetched for these rows.
Hotel linkstokens from earlier resultsEntity links or property tokens. Always fetches offers and available details. One shared successful-search fee for the link list.
Country / languagept / enGoogle market and content language. Direct and datacenter routes do not guarantee visitor country. Common amenity labels are in English.
Request limit1500Whole-run source limit, including retries; up to 10,000. Stops with a free note.

Output

Each result is one row in the run's dataset (download it as JSON, CSV, Excel, XML or HTML, or read it through the API). An example row (values shortened):

{
"verdict": "EUR 287.34 for 3 nights including taxes; 14 booking sites.",
"kind": "hotel",
"name": "Example Central Hotel",
"hotelClass": 5,
"rating": 4.7,
"reviews": 6546,
"pricePerNight": 82.81,
"priceTotal": 248.43,
"taxes": 38.91,
"fees": 0.0,
"totalWithTaxes": 287.34,
"currency": "EUR",
"checkIn": "2026-11-20",
"checkOut": "2026-11-23",
"nights": 3,
"adults": 2,
"childrenAges": [],
"amenities": [
"Paid breakfast",
"Free Wi-Fi",
"Paid parking",
"Indoor pool",
"Hot tub",
"Air conditioning",
"Pet-friendly",
"Fitness center",
"Spa",
"Bar",
"Restaurant",
"Room service",
"Full-service laundry",
"Accessible",
"Business center",
"Kid-friendly",
"Smoke-free property"
],
"isSponsored": false,
"offersStatus": "available",
"offerCount": 18,
"url": "https://hotels.example.com/property/sample",
"offers": [
{
"site": "Example hotel website",
"pricePerNight": 207.2,
"priceTotal": 621.59,
"currency": "EUR",
"isOfficialSite": true,
"isSponsored": false,
"freeCancellation": null,
"link": "https://booking1.example.com/stay"
},
{
"site": "Example booking site 2",
"pricePerNight": 95.78,
"priceTotal": 287.34,
"currency": "EUR",
"isOfficialSite": false,
"isSponsored": false,
"freeCancellation": null,
"link": "https://booking2.example.com/stay"
},
{
"site": "Example booking site 3",
"pricePerNight": 196.12,
"priceTotal": 588.38,
"currency": "EUR",
"isOfficialSite": false,
"isSponsored": false,
"freeCancellation": null,
"link": "https://booking3.example.com/stay"
}
]
}

This example comes from a real signed-out run on 25 October 2026. Hotel and booking-site names and site addresses have been replaced; price, rating and amenity values are from the run. Offers are shortened here. Filter kind = hotel for hotel records. The dataset also contains charged search records, free sponsored-hotel placements and free note rows. SUMMARY lists counts, charges and incomplete inputs.

Pricing

  • $0.00075 per hotel with a confirmed price, when booking offers are off.
  • $0.00275 per hotel with booking offers, including the hotel data. It is not added to the basic hotel event.
  • $0.003 per successful search, once the search delivers its first priced hotel. A hotel-link list shares one fee.
  • Invalid, blocked and wholly unpriced searches have no hotel or search event. Failed offers fall back to the basic event only if a confirmed hotel price was delivered.
  • Sponsored placements, unavailable-price hotel rows and failure notes are free. The same price on every Apify plan.
  • Apify's $0.00005 start charge counts towards the buyer's Maximum cost per run.

What typical jobs cost at the list price:

JobCost
20 priced hotels, one search, offers off$0.01805
100 priced hotels, one search, offers off$0.07805
1,000 priced hotels, one search, offers off$0.75305
20 hotels with booking offers, one search$0.05805
10 hotel links with offers, one shared search fee$0.03055
One priced hotel / one hotel with offers$0.00380 / $0.00580

Examples include one $0.00005 start charge. Each additional successful search adds $0.003. Set Maximum cost per run to cover the search fee and at least one hotel: $0.00380 for basic data or $0.00580 for offers. Requests stop when the remaining limit cannot cover the work. Free notes still appear after the limit.

Tips

  • Schedule repeated runs for price history; keep dates and guest mix consistent.
  • Reuse property tokens in Hotel links. This run’s date inputs control the stay.
  • Compare offers using their own price basis. Visitor country can affect whether displayed offer prices include taxes.
  • Check offersStatus and stayConfirmed. An absent price is not zero.
  • Read SUMMARY.inputs[].stopReason and warnings before treating the result as complete.

Use it through the API

Python

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("zaiq/google-hotels-scraper").call(run_input={"searches": ["hotels in Lisbon"], "maxHotelsPerSearch": 20, "currency": "EUR"})
for row in client.dataset(run.default_dataset_id).iterate_items():
print(row)

JavaScript

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });
const run = await client.actor('zaiq/google-hotels-scraper').call({"searches": ["hotels in Lisbon"], "maxHotelsPerSearch": 20, "currency": "EUR"});
const { items } = await client.dataset(run.defaultDatasetId).listItems();

HTTP (one call, results back)

curl -X POST 'https://api.apify.com/v2/acts/zaiq~google-hotels-scraper/run-sync-get-dataset-items?token=<YOUR_APIFY_TOKEN>' \
-H 'Content-Type: application/json' \
-d '{"searches": ["hotels in Lisbon"], "maxHotelsPerSearch": 20, "currency": "EUR"}'

Integrations and schedules

  • Schedules: run it every hour, day or week from the Apify Console (Schedules) and keep a history of results.
  • Make, Zapier, n8n, Google Sheets, Slack, Airtable: connect it through Apify's integrations, or send each finished run to a webhook.
  • Datasets: results stay in the run's dataset; export them or read them by API whenever you need them.

Use it with AI agents (MCP)

Add Apify's MCP server (https://mcp.apify.com) to Claude, ChatGPT, Cursor, VS Code or any MCP client. The agent can find this Actor and run it for you: ask it for "hotels in Lisbon for three nights, with prices in euros and the booking sites Google shows for each". AI agents can also pay for runs directly through Apify's agentic payments.

Limits

  • Only public signed-out data is read. Login walls and bot checks are reported, not solved.
  • Google can withhold data, ignore guests or end pagination early. Suspect answers move through the available route ladder. The last answer is marked incomplete when needed.
  • Google’s counts are estimates, not a guaranteed inventory. The result limit is a maximum, not a promise to return that many hotels.
  • Offers are those Google exposes at run time, including featured sponsored rates. They are not every rate sold on the internet.
  • Direct and datacenter calls use their actual visitor location. Residential fallback requests the input country when available; country of origin is not independently verified.
  • Basic prices use the supplied numeric tax breakdown. Offers retain Google’s displayed tax basis. The actual currency is reported without local conversion.
  • Ads can ignore child ages. Unconfirmed ad prices are withheld; the placement remains free.
  • Ad-click and tracking-counter links are left out and never visited. Photos are links, not downloaded files.
  • Amenities, address, phone, rooms and cancellation terms may be missing. There is one room and one stay per run.
  • Stable IDs prevent duplicate delivery and charges after a restart of the same run with its dataset preserved.
  • Some sites price children as adults. Offer-level guest coverage makes that adjustment explicit; missing coverage is marked as not supplied.

FAQ

Does the offer price include the hotel?

Yes. It replaces the basic hotel event. There is also one successful-search fee for the input.

Why charge a successful-search fee?

It covers fixed search work, including small jobs. It is charged only after priced hotel data is available.

Why are there extra rows?

The hotel limit excludes search records, free notes and free sponsored-only placements. Turn off Include sponsored placements to omit ads.

Nightly prices or stay totals?

Both. pricePerNight and priceTotal are before taxes, with fees included. totalWithTaxes includes supplied taxes. Displayed prices and booking offers carry their own priceBasis.

What if Google stops early?

Valid results are kept, with a free note and an incomplete status. SUMMARY distinguishes a source interruption from a result or spending limit.

Do restarts charge again?

Already-delivered hotels, search fees and notes are skipped. Separate new runs collect new snapshots.

Support

Questions, a site that changed, or a field you need? Open an issue on this Actor's Issues tab: we answer there, usually within a day.


Also found as: google hotels scraper, google hotels api, hotel price scraper, google travel scraper, hotel price comparison, hotel rates by date, booking-site offers, hotel price monitoring.