DEV Community

Russell Yapp
Russell Yapp

Posted on

How to get Google Hotels prices with an API in 2026

The short answer

Google has no public API for the prices it shows in Google Hotels. The old hotel-price programmes were closed to new users years ago, and nothing replaced them. If you need those prices as structured data now — for a rate-shopping tool, a travel app, a competitor check or an AI agent — you have two options: build and maintain your own scraper, or call one that is already maintained.

I built the second option. The Google Hotels Price Scraper is an Apify Actor. You give it a destination and dates, or specific hotels, and it returns one row per property with the lead nightly price, the per-vendor rates behind it (Booking.com, Expedia, Agoda and the rest), star class, guest rating, review count, amenities and coordinates. You call it through Apify's API, its client libraries, or the console.

Why the existing scrapers keep failing

Google's hotel pages don't serve tidy data. Prices, ratings and vendor offers sit in positional arrays, where a field is identified by its index rather than its name. When Google shifts an index, a scraper doesn't crash. It quietly returns the wrong number in the right-looking field, or nothing at all. Keeping one working means fixtures for every response type, golden tests that catch a shifted field, and a daily check that fails loudly when the shape changes.

I can only speak to what is public. The most-used Google Hotels scraper on the Apify Store showed 22,296 successful runs out of 53,949 in its last 30 days, a 41.3% success rate (checked 28 September 2026). Its description documents one input form while the live form is another, and it leaves the proxy setting for the user to choose. Whatever the cause, it means a large share of runs come back empty, and you pay for the attempt.

The design here is the opposite. The Actor manages its own network access, so there is no proxy setting to get wrong. A run that gets nothing back fails with a clear status instead of returning placeholder rows. A daily check runs the public build and fails if the row shape changes.

What the Actor returns

Each row carries:

  • hotelId, name, propertyType, hotelClass
  • rating and reviewCount
  • address, latitude, longitude
  • checkIn, checkOut, nights, adults, rooms — the searched itinerary, on every row
  • leadPrice — nightly price, total for the stay, currency, and, with vendor rates on, which vendor offers it
  • vendorRates — one entry per vendor with its cheapest total for the stay and how many offers it covers
  • amenities and amenityCodes, url, scrapedAt

Prices are pre-tax, as Google's nightly figure is, and they are in the currency you ask for. The Actor never converts them.

A worked example

A search for hotels in Lisbon for 12 to 14 October 2026, with Apify's Python client:

from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("yappman/google-hotels-prices").call(
    run_input={
        "mode": "search",
        "searches": [{"destination": "Lisbon", "checkIn": "2026-10-12", "checkOut": "2026-10-14", "adults": 2}],
        "maxItems": 20,
        "includeVendorRates": True,
    }
)
for row in client.dataset(run.default_dataset_id).iterate_items():
    lead = row["leadPrice"]
    print(row["name"], lead["perNight"], lead["total"], lead["currency"])
Enter fullscreen mode Exit fullscreen mode

The same call as one curl request that waits for the run and returns CSV:

curl -X POST "https://api.apify.com/v2/acts/yappman~google-hotels-prices/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN&format=csv" \
  -H "content-type: application/json" \
  -d '{"mode":"search","searches":[{"destination":"Lisbon","checkIn":"2026-10-12","checkOut":"2026-10-14"}],"maxItems":20}'
Enter fullscreen mode Exit fullscreen mode

A 20-hotel search takes about 10 seconds. Two real rows from a run on 29 September 2026:

Name Stars Rating (reviews) Per night Total, 2 nights
Independente Principe Real 3 4.3 (1,020) $120.76 $242
Lisbon Wine House - Rooms & Suites 3 3.7 (125) $74.99 $150

With includeVendorRates on, the first hotel came back with 16 vendors. The four cheapest for the same two nights:

Vendor Per night Total
Vio.com $121 $242
goseek.com $121 $242
Super.com $126 $253
Evendo $134 $267

Top comments (0)