Google Hotels Scraper avatar

Google Hotels Scraper

Pricing

from $2.45 / 1,000 hotel results

Go to Apify Store
Google Hotels Scraper

Google Hotels Scraper

Google Hotels Scraper: search any destination and get hotels with prices per night, ratings, review counts, stars, address and coordinates. Filter by rating, price, star class, free cancellation and pool or spa. Export JSON, CSV or Excel.

Pricing

from $2.45 / 1,000 hotel results

Rating

0.0

(0)

Developer

herus13

herus13

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

5 days ago

Last modified

Categories

Share

The Google Hotels Scraper extracts hotels from Google Hotels for any destination, with the price per night and for the stay, rating, review count, star class, address and coordinates. Pick the dates, the number of adults and a currency, then narrow the list by rating, price, stars, free cancellation, pool or spa.

What you get

One dataset, one row per hotel or vacation rental, priced for your dates and party size. A row:

{
"kind": "hotel",
"position": 1,
"query": "Paris",
"entity_id": "ChkIu9HfsMXs5vmqARoNL2cvMTF4NDRqdnR0YxAB",
"name": "Hotel Example Paris Centre",
"property_type": "hotel",
"categories": ["Hotel"],
"hotel_class": 4,
"rating": 4.4,
"review_count": 2713,
"rating_histogram": {"1": 70, "2": 41, "3": 160, "4": 520, "5": 1922},
"price_per_night": 212.0,
"price_total": 424.0,
"taxes": 31.0,
"currency": "USD",
"deal_label": "GREAT DEAL",
"price_vs_usual_pct": 31,
"check_in": "2026-11-10",
"check_out": "2026-11-12",
"adults": 2,
"address": "1 Rue Example, 75001 Paris, France",
"latitude": 48.8606,
"longitude": 2.3376,
"phone": "+33 1 23 45 67 89",
"website": "https://www.example.com",
"check_in_time": "3:00 PM",
"thumbnail": "https://lh3.googleusercontent.com/example",
"source_url": "https://www.google.com/travel/search?q=hotels+in+Paris",
"scraped_at": "2026-10-06T09:30:00+00:00",
"_meta": {"author": "https://apify.com/herus13", "status": "ok", "message": null}
}

_meta is run metadata, not scraped data. Google can leave a field empty for a listing, for example a phone number or a deal label; those stay null rather than being guessed.

  • position is the row's place in the order you asked for, within its destination.
  • price_per_night and price_total follow the currency you choose and cover your check_in date and nights. taxes is the amount Google shows on top, when it shows one.
  • deal_label and price_vs_usual_pct carry Google's own comparison with the usual price for that hotel.
  • rating_histogram counts reviews per star, "1" to "5".
  • entity_id is Google's id for the hotel.

A hotel with no price for your dates and party size is left out, not returned as an empty row. The run's log says how many listings were skipped for that reason.

What it costs

EventFreeBronzeSilverGold+
Actor Start (apify-actor-start)$0.00005$0.00005$0.00005$0.00005
hotel result (hotel-result)$0.0035$0.00315$0.0028$0.00245

Input

FieldTypeRequiredDefaultWhat it does
queriesarrayno—Places to search, one per entry, for example Paris or hotels near Shibuya. Each destination is searched separately and returns up to max_results hotels; a hotel found twice in one destination is returned once. Required: if empty, the run is refused.
check_instringno—Check-in date as YYYY-MM-DD, for example 2026-12-01. Must not be in the past. Leave empty for 30 days after the run starts. Prices are quoted for this date and nights.
nightsintegerno1Length of the stay the prices are quoted for, from 1 to 30 nights. Default 1. Each row reports the price per night and the total for the stay.
adultsintegerno2Adults in the party, from 1 to 6. Default 2. Children and the number of rooms cannot be set. Prices rise with the party size, and a hotel with no room for it has no price and is skipped.
currencystringno"USD"Currency every price is quoted in: USD, EUR, GBP, THB or VND. Default USD. min_price and max_price are in this currency too.
max_resultsintegerno20How many hotels to return for each destination, from 0 to 1000. Default 20. N returns at most N; 0 returns none. Google lists fewer for small places, so a run can return less than N.
property_typesarrayno["hotel"]Which listings to keep: hotel, vacation_rental or both. Default ["hotel"], hotels only. Must name at least one. Vacation rentals have no star class and fewer fields filled.
sortstringno"relevance"Order of the results: relevance, lowest_price, most_reviewed or highest_rating. Default relevance. Lowest_price is near-monotone, not exact. Highest_rating returns Google's top-rated set (4.7 and up) in a weighted order, not strictly by rating. Most_reviewed is exact.
min_ratingnumberno—Keep only hotels rated at least this: 3.5, 4.0, 4.5 or 4.8. Any other value is refused. Leave empty for no minimum.
min_priceintegerno—Keep only hotels priced at or above this per night, in currency, whole units, 0 or more. Leave empty for no lower bound. Must not exceed max_price.
max_priceintegerno—Keep only hotels priced at or below this per night, in currency, whole units, 0 or more. Leave empty for no upper bound. Must not be below min_price.
free_cancellationbooleannofalseKeep only hotels with free cancellation. Default false.
hotel_classarrayno—Keep only hotels of these star classes; tick any of 2, 3, 4 and 5. Leave empty for every class. Each row reports its hotel_class.
amenitiesarrayno—Keep only hotels that have all of these: pool, spa. No other amenity can be filtered. Leave empty for no amenity filter.
proxyUrlsarrayno—Leave empty and the run uses the residential proxy this actor ships with, included in the price of the run. To route the run through your own account instead, add one gateway URL per entry, for example http://user:pass@host:port — works with any provider that issues URLs. When set, the run uses these first and switches to the included proxy if they stop working, so a broken proxy never fails the run. Use US exits.

How to run it

  1. Open the actor and add one or more destinations, such as Paris or hotels near Shibuya.
  2. Set the check-in date, the number of nights and adults, and the currency. Leave the date empty to quote 30 days ahead.
  3. Optionally narrow the list: sort order, minimum rating, price range, star classes, free cancellation, pool or spa.
  4. Set Max results per destination to the number of hotels you want, then run it and export the dataset as JSON, CSV or Excel.

Four and five star hotels in New York with a pool, most reviewed first. Price bounds, when you set them, are per night and in your chosen currency:

{
"queries": ["New York"],
"check_in": "2026-12-05",
"nights": 3,
"adults": 2,
"currency": "USD",
"max_results": 50,
"hotel_class": ["4", "5"],
"amenities": ["pool"],
"sort": "most_reviewed"
}

Minimal input:

{
"queries": ["Paris"],
"max_results": 5
}

Available as the MCP tool herus13--google-hotel-scraper on mcp.apify.com and through the Apify API; send the same JSON.

Use cases

  • Travel price monitoring: run the same destination and dates every day and track how the price per night moves against the usual price.
  • Market and competitor research: compare rates, star classes and ratings across a city or a neighbourhood for a hotel, an agency or an investor.
  • Lead lists for hospitality suppliers: collect hotel names, addresses, websites and phone numbers for a destination.
  • Trip-planning tools and agents: feed a shortlist of priced hotels, sorted and filtered, into an app or an AI assistant.
  • Review and reputation analysis: pull ratings, review counts and the star histogram for every hotel in a place.

FAQ

How many hotels can one destination return? Up to 1,000 per destination, as many as Google lists for it. A small place returns fewer. Use several destinations to go wider.

Is the order exact? Relevance and most reviewed follow Google's own order. Lowest price is close to ascending but not exact, because Google sorts on an internal key that is not the price shown. Highest rating returns Google's top-rated set, 4.7 and up, in a weighted order rather than strictly by rating.

Which filters can I use? Property type, sort, minimum rating (3.5, 4.0, 4.5 or 4.8), price range per night, free cancellation, star classes 2 to 5, and the amenities pool and spa. No other amenity can be filtered.

How many guests can I search for? One to six adults. Children and the number of rooms cannot be set, and a hotel with no room for your party has no price and is skipped.

Which currencies are supported? US dollar, euro, pound sterling, Thai baht and Vietnamese dong. Every price in a row uses the currency you picked.

Why did I get fewer rows than I asked for? The destination may list fewer hotels, filters can leave few, and listings with no price for your dates are skipped. A long walk through a very large result stops at a page limit and says so in the log.

Do I pay for skipped listings? No. You are charged for each hotel row that lands in the dataset, nothing else, and no failure is ever billed as a row.

Is a proxy included? Yes, a residential proxy is included in the price of the run. To use your own, paste gateway URLs into Your own proxy URLs.

What happens if my input is wrong? The run stops before it scrapes anything, so no results are charged. Its status and log name each field that is wrong and say what to change — fix the input and run again.

Is scraping Google Hotels legal? The actor reads only public search results, the ones any visitor can open without signing in. You are responsible for how you use the data; check Google's terms and your local rules.