Google Hotels Scraper & API - Google Travel Hotel Prices, Deals avatar

Google Hotels Scraper & API - Google Travel Hotel Prices, Deals

Pricing

from $0.15 / 1,000 hotel results

Go to Apify Store
Google Hotels Scraper & API - Google Travel Hotel Prices, Deals

Google Hotels Scraper & API - Google Travel Hotel Prices, Deals

Google Hotels scraper and API (Google Travel): enter a city or "hotels near" search plus dates; get one row per hotel with nightly and total price incl. taxes, star class, rating, reviews, amenities, coordinates and deal badges. $0.15 per 1,000 hotels, against $1.00 and $4.99 for the two most-used.

Pricing

from $0.15 / 1,000 hotel results

Rating

0.0

(0)

Developer

Giovanni Rich

Giovanni Rich

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

11 hours ago

Last modified

Categories

Share

Google Hotels scraper and unofficial Google Hotels API: enter a city or "hotels near ..." search plus your dates, and get every property's nightly price, total stay price with taxes, rating, review count, star class, amenities, coordinates and deal badges as clean JSON, CSV or Excel. Use it for hotel price monitoring, hotel rate comparison and rate-parity checks: it reads the data Google already embeds in the page over plain HTTP, with no headless browser, so runs finish in seconds and use very little compute. $0.15 per 1,000 hotels, against $1.00 and $4.99 for the two most-used Google Hotels scrapers (read 5 Nov 2026).

What you get

  • Prices: nightly price, nightly price with taxes, total for the whole stay, taxes and fees, currency, and Google's deal badge (e.g. "DEAL 24% less than usual").
  • Quality: Google rating (1-5), review count, a 1-to-5-star review breakdown, and hotel class (2-star, 3-star, ...).
  • Location: latitude and longitude, nearby places (airport, transit, attractions, restaurants) with travel times, and optionally the full street address and phone number.
  • Property info: amenities (Free Wi-Fi, Pool, Free breakfast, ...), a short description, check-in and check-out times, official website, a thumbnail plus up to 10 photos.
  • IDs and links: Google Hotels URL, Google Maps URL, Google entity token and Maps feature ID, to join with other datasets or track the same hotel over time.
  • Pagination: the scraper pages through the results until it reaches your maxResults. Duplicates across pages are removed automatically.

Sample output

Real rows from a test run: "hotels in Charlotte", 3 nights, 15-18 Oct 2026, 2 adults, USD.

namepricePerNighttotalPriceratingreviewCounthotelClassdeal
Sonesta Select Charlotte University Research Park752633.99153DEAL 19% less than usual
Sleep Inn Charlotte University Place822833.79554DEAL 15% less than usual
Country Inn & Suites by Radisson, Charlotte University Place, NC93323414734-

Use cases

  • Hotel price monitoring and rate-parity checks for a city or a list of competitor hotels
  • Daily price tracking: schedule the same searches and compare by entityToken over time
  • Travel apps, comparison sites, trip planners and AI travel agents
  • Market research: supply, star mix and price bands by neighbourhood
  • Lead lists of hotels, with website and phone (turn on includeDetails)

Pricing

$0.15 per 1,000 hotels (pay per result; failed requests and duplicates are never charged), plus a $0.00005 start fee per run. Platform usage and proxies are included. Address, phone, website and photos (includeDetails) cost the same per hotel.

You scrapeYou pay
20 hotels (the prefilled input)about $0.003
100 hotels$0.015
1,000 hotels$0.15
10,000 hotels$1.50
100,000 hotels$15.00

The Apify free plan's $5 monthly credit covers about 33,000 hotels. The prefilled input ("hotels in Charlotte" and "hotels in Paris", 10 each) returns 20 hotels in about 7 seconds.

How that compares with the other Google Hotels scrapers on the Store (Free-plan prices per 1,000 results, read 5 Nov 2026):

Actor30-day usersPrice per 1,000 hotels
zerobreak / Google Hotels Scraper534$4.99
vittuhy / Google Travel Hotel Prices533$1.00 + $0.005 per run
kestrel / Google Hotels Prices Scraper128$4.00 + $2.00 per 1,000 offers
johnvc / Google Hotels Search Scraper66$0.01 + $0.02 per page + $0.02 setup (about $1.00 at 20 hotels per page)
factden / Google Hotels Scraper48$4.00 (+ $5.00 per 1,000 price lists)
lergassy / Google Hotels Scraper23$3.00 ($8.00 with details)
kaix / Google Hotels & Vacation Scraper18$0.08 + $0.00005 per run
martin.forejt / Google Hotels Scraper6$0.10 + $0.00005 per run
danthedataman / Google Hotels Stay Ledger1$0.09 + $0.00005 per run
topapi / Google Hotels Scraper2$0.095 (+ $1.00 per 1,000 with booking-site prices)
thescrappa / Google Hotels Search Scraper0$0.20 + $0.00005 per run
nice_dev / Google Hotels Scraper1$0.072 + $0.01 per run (+ $2.79 per 1,000 with details)
azzouzana / Google Hotels Scraper (guest reviews, not hotel rows)3$0.90 per review + $0.005 per run
cheapapi / Google Hotels Scraper2$0.45 + $0.003 per search
cozybit / Google Hotels Scraper1$0.01, stated as a trial until 30 Nov 2026
gravelly_caladium and trap_check / Google Hotels1 eachfree today
This actor$0.15 + $0.00005 per run

So it costs under a sixth of vittuhy's price and about a thirtieth of zerobreak's. It is not the cheapest: gravelly_caladium and trap_check are free today, cozybit charges $0.01 as a trial, and nice_dev, kaix, danthedataman, topapi and martin.forejt charge $0.07-$0.10 (1-18 users each). This one is for you if you want the full tax-inclusive price breakdown, the 1-to-5-star review split and join-ready IDs in every row.

Why this one

  • A fraction of the price of the two most-used Google Hotels scrapers: $0.15 per 1,000 hotels, against $1.00 plus a start fee and $4.99.
  • The full price picture in one row: nightly price, nightly price with taxes, total stay price, taxes and fees, and Google's deal badge, with no separate per-offer charge.
  • Review quality, not just a score: rating, review count and the 1-to-5-star breakdown, plus hotel class.
  • Join-ready IDs: entityToken and the Maps feature ID stay the same across runs, so daily price tracking is a simple join.
  • Light: plain HTTP, no browser, so a 50-hotel query usually finishes in well under a minute and big schedules stay cheap.
  • Address, phone, website and photos when you turn on includeDetails, at the same price per hotel.

FAQ

Is there an official Google Hotels API? Not for reading search results. Google's Hotel Prices / Travel Partner APIs are for hotels and booking sites that send their own rates to Google; there's no public API that returns Google Hotels search results, prices and ratings. This actor fills that gap: you call it like an API (see "API example" below) and get JSON back.

What does a typical run cost? $0.15 per 1,000 hotels plus $0.00005 per run. The prefilled 20-hotel run costs about $0.003; tracking 5 cities x 100 hotels every day is about $0.08 a day, or about $2.30 a month. A one-off sweep of 10 cities x 200 hotels is $0.30.

Is it legal to scrape Google Hotels? This actor collects only publicly available data about businesses (hotels), not personal data. You're responsible for using it in line with Google's terms of service and privacy laws such as GDPR. This is not legal advice: if you're unsure, check with a lawyer.

Does it need a login, cookies, a browser or a Google API key? No. It makes plain HTTPS requests and reads the structured data Google embeds in the page. That's why it's fast and cheap to run.

How fast is it and how many hotels can I get? A 50-hotel query usually finishes in well under a minute. Google serves about 150-250 unique hotels per query; to cover a big city in full, split it into areas ("hotels in Shinjuku", "hotels in Shibuya"). If a query returns fewer than maxResults, Google ran out of new hotels; the RUN_SUMMARY record shows the stop reason. To get a single hotel, use its name as the query with maxResults: 1.

Can I schedule it or call it from my code? Yes. Use an Apify Schedule to run the same searches daily, or start runs through the Apify API, the JavaScript/Python clients, Make, Zapier, n8n or the Apify MCP server. For different dates, run once per date range; entityToken stays the same across runs so you can join the results.

Do I need proxies? How does it avoid blocks? Apify Proxy (datacenter) is on by default, with realistic Chrome desktop headers and a session pool. When Google blocks a request (403/429, a captcha page, or a page with no result data), that session is retired and the request is retried on a fresh IP, up to 6 retries by default. If the log shows repeated "Blocked by Google" retries, switch the proxy group to RESIDENTIAL.

How to use

  1. Enter one or more searches in Search queries (e.g. hotels in Paris, hotels near Times Square) and, optionally, check-in / check-out dates, guests and currency.
  2. Click Start. A 50-hotel query usually finishes in well under a minute.
  3. Download the results as JSON, CSV, Excel or HTML from the Output tab, or call the actor through the Apify API and pull the dataset from your own code.

Input example

FieldDefaultDescription
queries-What you'd type into Google Hotels: "hotels in Paris", "hotels near Times Square", "boutique hotels in Lisbon"
checkIn / checkOutGoogle's defaultYYYY-MM-DD. If you leave checkOut empty, the stay is one night. Stays can be up to 30 nights.
adults2Guests (occupancy changes prices)
currencyUSDAny 3-letter ISO code: EUR, GBP, JPY, ...
maxResults50Unique properties per query (0 = as many as Google returns)
includeVacationRentalsfalseInclude the apartments and houses Google mixes into hotel results
includeDetailsfalseAdds the street address and phone number. Costs one extra request per hotel.
language / countryen / usGoogle hl / gl parameters
proxyConfigurationApify ProxySwitch to RESIDENTIAL if you see blocks

Example:

{
"queries": ["hotels in Charlotte", "hotels in Paris", "hotels in Tokyo"],
"checkIn": "2026-12-10",
"checkOut": "2026-12-13",
"adults": 2,
"currency": "USD",
"maxResults": 100
}

Output example

One dataset item per property. This one is from a real run: Paris, 3 nights, 15-18 Oct 2026 (arrays shortened).

{
"query": "hotels in Paris",
"position": 1,
"name": "Les Jardins de Saint-Cloud",
"propertyType": "hotel",
"category": "extended_stay_hotel",
"pricePerNight": 116,
"pricePerNightWithTaxes": 127,
"priceText": "$116",
"currency": "USD",
"totalPrice": 382,
"totalPriceBeforeTaxes": 347,
"totalTaxesAndFees": 34.67,
"totalPriceText": "$382",
"deal": "DEAL 24% less than usual",
"checkIn": "2026-10-15",
"checkOut": "2026-10-18",
"nights": 3,
"rating": 4.4,
"reviewCount": 338,
"ratingBreakdown": { "5star": 238, "4star": 53, "3star": 15, "2star": 9, "1star": 23 },
"hotelClass": 3,
"hotelClassText": "3-star tourist hotel",
"address": null,
"phone": null,
"latitude": 48.8439194,
"longitude": 2.2217806,
"checkInTime": "3:00 PM",
"checkOutTime": "12:00 PM",
"description": "Chic studios in a refined apartment hotel offering a breakfast buffet, plus an indoor pool & a gym.",
"amenities": ["Breakfast ($)", "Free Wi-Fi", "Indoor pool", "Air conditioning", "Pet-friendly", "Fitness center", "Parking", "Bar"],
"nearbyPlaces": [
{ "name": "Aéroport de Paris-Charles de Gaulle", "type": "airport", "transport": [{ "mode": "car", "duration": "40 min" }, { "mode": "transit", "duration": "1 hr 19 min" }] }
],
"thumbnail": "https://lh3.googleusercontent.com/grass-cs/ACvplmPh...=s150-w92-h150-n-k-no",
"images": ["https://lh3.googleusercontent.com/grass-cs/ACvplmPh...=w1024"],
"website": "http://www.lesjardinsdesaintcloud.fr/",
"entityToken": "ChkI5cSZt5rXifwfGg0vZy8xMWMycTMxeW5rEAE",
"googleMapsFeatureId": "0x47e67b2498ee8a6b:0x1ff826b9a6e66265",
"googleMapsUrl": "https://www.google.com/maps?cid=3339634915179124171",
"googleHotelsUrl": "https://www.google.com/travel/hotels/entity/ChkI5cSZt5rXifwfGg0vZy8xMWMycTMxeW5rEAE?hl=en&gl=us&curr=USD&ts=...",
"searchPage": 1,
"scrapedAt": "2026-09-23T23:01:41.052Z"
}

With includeDetails: true, address and phone are filled in, for example "8629 J M Keynes Dr, Charlotte, NC 28262" and "(704) 547-7444".

The dataset has two ready-made views: Overview (photo, name, stars, rating, price, deal, link) and Prices (the full price breakdown).

Field fill rates (real test run: 300 hotels across Charlotte, Paris and Tokyo)

FieldFill rate
name, coordinates, photos, Google Hotels URL, Maps URL, currency100%
rating, reviewCount100%
amenities96%
website96%
pricePerNight, totalPrice91% (the rest had no rooms available for the dates)
hotelClass86% (Google lists no class for some properties)
checkInTime83%
description73%
deal25% (only properties Google flags as a deal)
address, phone13% without includeDetails, 95-100% with it

API example

Python (pip install apify-client):

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("rel8ble/google-hotels-scraper").call(run_input={"queries":["hotels in Paris"],"checkIn":"2026-12-10","checkOut":"2026-12-13","adults":2,"currency":"EUR","maxResults":50})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item["name"], item["pricePerNight"], item["totalPrice"], item["rating"], item.get("deal"))

One HTTP call that runs the actor and returns the rows (curl):

curl -X POST "https://api.apify.com/v2/acts/rel8ble~google-hotels-scraper/run-sync-get-dataset-items?token=<YOUR_APIFY_TOKEN>" \
-H "Content-Type: application/json" \
-d '{"queries":["hotels in Paris"],"checkIn":"2026-12-10","checkOut":"2026-12-13","adults":2,"currency":"EUR","maxResults":50}'

Integrations

  • Make, Zapier and n8n: start runs and send new hotel data to your other apps.
  • Google Sheets: export the dataset straight into a spreadsheet, or refresh it on a schedule.
  • Apify API: run the actor and fetch results over REST, or with the official JavaScript and Python clients.
  • Webhooks: get notified when a run finishes and process the data right away.
  • Schedules: run the same searches daily to track Google Hotels prices over time.
  • MCP for AI agents: through the Apify MCP server (https://mcp.apify.com), Claude, ChatGPT, Cursor and other agents can call this Google Hotels API directly and read the results.

Limits (read before large runs)

  • About 150-250 unique hotels per query. Google keeps serving pages after that, but deeper pages contain only vacation rentals or listings you've already seen. The scraper notices this and stops the query. To cover a big city in full, split it into areas: "hotels in Shinjuku", "hotels in Shibuya", ...
  • Search ranking is not stable. Google reshuffles the order between pages, so the same hotel can come up twice. The scraper removes these duplicates, and that's why a page sometimes adds fewer than 20 new hotels.
  • Prices are Google's "from" prices for the dates and occupancy you set: the lowest rate across booking partners, shown in the currency you chose. Properties with no availability for your dates come back with pricePerNight: null.
  • Street address and phone need includeDetails. That opens one extra page per hotel, so the run is slower and uses more proxy traffic.
  • Amenity and deal labels come in the language you set. They're most complete with language: "en".
  • Per-partner price lists (Booking.com vs Expedia vs the hotel's own site) and review texts are not included in this version.

How it works (for developers)

Google Hotels pages carry their result data in AF_initDataCallback({key: 'ds:N', data: ...}) script blobs. The scraper parses every blob. It then walks the nested arrays and picks out anything shaped like a hotel record (a name, a [lat, lng] pair, and an entity token or Maps ID). It doesn't rely on fixed array indexes. Every field is read defensively: if one record is malformed, that record just has fewer fields, and the run doesn't crash. Pagination, dates, guests and currency use the same ts/qs URL parameters Google's own interface uses.

Run it locally:

npm install
npm test # parser tests on saved fixtures
APIFY_LOCAL_STORAGE_DIR=./storage node src/main.js # input in storage/key_value_stores/default/INPUT.json

Need a custom scraper or a ready dataset? Hire me on Fiverr: https://www.fiverr.com/rel8ble