Every LLM can recommend a hotel; none of them know what tonight's room costs. The prices sit on Google Hotels, rendered by JavaScript, tangled in date pickers, and unavailable through any official endpoint. I built my workflow around the Google Hotels Search Scraper on Apify instead: a destination and dates in, structured JSON out, with nightly rates, ratings, and amenities per property.
Disclosure: the Apify links in this post are affiliate links. If you run the Actor, I may earn a referral commission at no extra cost to you.
Does Google Hotels have an API?
No. Google offers no public hotels API, and the search that answers "hotels in Lisbon under $180" exists only as a web page. That is why "google hotels api" leads to hosted scrapers, and the practical definition is a scraper you call like an API: it reads the public results for your query and returns each property as a JSON record.
What the Google Hotels API returns
The Google Hotels API returns one record per property for a destination and date range: name, nightly and total price, guest rating, star class, amenities, coordinates, and images.
| Field | Example | Notes |
|---|---|---|
name |
Memmo Alfama Hotel |
Property name |
rate_per_night |
{ "lowest": "$174" } |
With total_rate for the stay |
overall_rating |
4.5 |
Plus the review count |
hotel_class |
4-star hotel |
With extracted_hotel_class as a number |
amenities |
["Free Wi-Fi", "Pool"] |
Filterable at query time |
property_token |
ChkI... |
Key for follow-up detail, photos, and reviews lookups |
Search results also include ads and the active filters, and three sibling modes reuse the same Actor: autocomplete for destination suggestions, photos for a property's image set, and reviews for per-review rows with subratings.
Who this is for
Hotel revenue managers rate-shopping their comp set, travel app builders who need live prices behind their UI, and analysts doing hotel market research across cities without buying a hospitality data subscription.
The manual way, and where it breaks
Scraping Google Hotels yourself means driving a headless browser through a JavaScript app: inject dates, wait for prices to settle, scroll for more properties, and parse a DOM that changes with every experiment Google runs. Currency and language shift results silently, vacation rentals mix into hotel results, and pagination is gesture-based. Each of those is a special case in your code, forever.
The faster way: run the Google Hotels Search Scraper
Apify Console
- Open the Google Hotels Search Scraper and click Try for free.
- Set
qto a destination search, addcheck_in_dateandcheck_out_date, and any filters likehotel_classormax_price. - Run it and export the properties as JSON, CSV, or Excel.
REST
curl -X POST "https://api.apify.com/v2/acts/johnvc~google-hotels-search-scraper/runs?token=YOUR_APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{ "search_type": "search", "q": "hotels in Austin", "check_in_date": "2026-09-10", "check_out_date": "2026-09-12", "max_pages": 1 }'
Endpoint reference: the Apify API docs.
Scrape hotel prices in Python
from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("johnvc/google-hotels-search-scraper").call(
run_input={
"search_type": "search",
"q": "hotels in Lisbon",
"check_in_date": "2026-10-02",
"check_out_date": "2026-10-04",
"adults": 2,
"currency": "USD",
}
)
for page in client.dataset(run["defaultDatasetId"]).iterate_items():
for hotel in page.get("properties", []):
print(hotel["name"], hotel.get("rate_per_night"), hotel.get("overall_rating"))
Localization is three parameters: gl for country, hl for language, currency for the money, so "Tokyo hotels priced in yen" is a value change.
Rate-shop your competitor set
The revenue-management staple. Run competitor rate shopping for your hotel pulls your comp set's live rates for the dates you care about.
Track Las Vegas prices for CES week
Event pricing is its own sport: Track Las Vegas hotel prices for CES week watches a compressed market around a fixed date.
Build review and photo datasets
The other modes earn their keep in data work: Extract guest reviews for any hotel feeds a sentiment dataset, and Download all photos for any hotel yields real property imagery keyed by property_token.
Quote live rates from Claude via MCP
Through Apify's MCP server, Claude, Claude Code, and Cursor can call the scraper as a tool: ask for "a 4-star in Lisbon under $180 for the first weekend of October" and the agent answers with live properties and prices. The task Search Google Hotels from Claude via MCP is the working config, and you can read more about Claude at claude.ai.
FAQ about scraping Google Hotels
How much does the Google Hotels scraper cost to run?
Billing is pay per event, and it works out to pennies per page of search results; max_pages caps a run before it starts. New Apify accounts include free platform credit, so early rate checks generally cost nothing out of pocket.
Can this hotel scraper book rooms?
No. It is read-only data extraction: prices, ratings, amenities, reviews, and photos. Reservations stay with the booking sites, and anything promising otherwise from scraped data deserves your skepticism.
Does the scraper cover vacation rentals?
Yes. A vacation-rentals toggle brings them in with bedroom and bathroom filters, so short-term rental inventory can sit in the same dataset as hotels.
Can Claude quote live rates through this scraper via MCP?
Yes, that is the MCP task above: connect the Apify MCP server and the scraper becomes a tool your agent calls mid-conversation with real prices in the reply.
Can I schedule the scraper for nightly rate checks?
Yes, and rate shopping only really works on a schedule. Save your comp-set search as a task, attach a nightly cron, and diff rate_per_night between runs. Start from the Google Hotels Search Scraper page.
More from Truffle Pig Data
Deeper dives on the same Actor: Google Hotels Scraper for AI Agents on Medium, the LinkedIn version, and the Peerlist article on live hotel prices.
Wrapping up
If your travel tool quotes prices from training data, it is guessing. Give it the Google Hotels Search Scraper and quote tonight's rates instead.
Top comments (0)