Google Travel Hotels Scraper avatar

Google Travel Hotels Scraper

Pricing

from $3.60 / 1,000 property results

Go to Apify Store
Google Travel Hotels Scraper

Google Travel Hotels Scraper

Scrape Google Travel hotel listings with prices, star ratings, the full 1-5 star review breakdown and what guests praised or complained about. Export to CSV, JSON, Excel or XML.

Pricing

from $3.60 / 1,000 property results

Rating

0.0

(0)

Developer

ParseForge

ParseForge

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Share

ParseForge Banner

๐Ÿจ Google Travel Hotels Scraper

๐Ÿš€ Export Google Travel hotel data in seconds. 43 fields per property, including the full 1-5 star review breakdown and the exact number of guests who praised or complained about each amenity.

This Actor turns a Google Travel search into a clean dataset. Give it a destination and a pair of stay dates, and it returns the properties Google shows, each with its live price for that stay, its star class, its guest rating, its street address and phone, its official website, its photos, and the review intelligence Google buries behind hover states.

Data comes straight from google.com/travel, the same surface a traveller sees when they compare hotels. The Actor reads Google's own embedded data payload rather than scraping styled HTML, so field names stay stable through Google's redesigns and every one of the 27 supported languages returns the same 43 columns.

๐ŸŽฏ Target Audience๐Ÿ’ก Primary Use Cases
Revenue managers and hotel ownersTrack competitor rates for specific stay dates
OTAs and travel startupsSeed a property catalogue with ratings, GPS and contact details
Market researchers and consultantsBenchmark guest sentiment across a city or a district
Travel agencies and DMCsBuild client-ready shortlists with real prices and reviews
Data teams and AI buildersFeed grounded hotel context into a travel assistant

๐Ÿ“‹ What the Google Travel Hotels Scraper does

  • Searches google.com/travel by destination, neighbourhood, landmark or hotel name.
  • Prices a real trip. Set a check-in and check-out date and every price returned is the rate for that stay, with the night count on the row.
  • Returns 43 fields per property: identity, price, location, contact, content and review intelligence.
  • Reports totalResultsEstimate on every row, so you always know how many properties Google matched against how many it published.
  • Opens each property's own Google Travel page to add street address, phone, official website, check-in and check-out times, nearby places and guest review excerpts. Switch it off for a faster listing-only run.
  • Accepts pasted Google Travel URLs, both search pages and single property pages.
  • Answers in 27 languages, translating property class, descriptions and review text.

๐Ÿ’ก Why it matters: every Google Hotels scraper returns a rating and a review count. This one returns the shape of that rating. A 4.1 built on 47% five-star and 17% one-star reviews is a completely different property from a 4.1 built on a smooth curve, and only one of those two is a problem you can sell a solution to.

๐ŸŽฌ Full Demo (๐Ÿšง Coming soon)

๐Ÿ“Š Output

Every run produces one row per property. Arrays and objects come through intact in JSON and XML, and flatten into columns in CSV and Excel.

FieldTypeDescription
๐Ÿ–ผ imageUrlstringPrimary property photo
๐Ÿจ namestringProperty name as Google publishes it
๐Ÿ”— hotelUrlstringGoogle Travel page for the property
๐Ÿ”‘ entityKeystringGoogle Travel entity id, stable across runs
๐Ÿ“Œ placeIdstringGoogle Maps place id, for joining to Maps data
๐Ÿงญ featureIdstringGoogle feature id (hex pair)
๐Ÿ—บ googleMapsUrlstringDirect Google Maps link
โญ hotelClassstringOfficial class, for example "3-star hotel"
๐ŸŒŸ starRatingnumberClass as a number
๐Ÿท propertyTypestringhotel, vacation_rental and similar
๐Ÿ’ฐ pricestringFormatted price for the requested stay
๐Ÿ’ต priceValuenumberSame price as a number
๐Ÿ’ฑ currencystringISO currency of the quote
๐Ÿ“… checkInDatestringStay start, ISO date
๐Ÿ“… checkOutDatestringStay end, ISO date
๐ŸŒ™ nightsnumberNights in the quoted stay
๐ŸŒŸ ratingnumberGoogle guest rating out of 5
๐Ÿ—ฃ reviewCountnumberNumber of Google reviews
๐Ÿ“ addressstringStreet address
๐Ÿ—บ areastringNarrowest area Google assigns, usually the neighbourhood
๐ŸŒ countryCodestringISO country code
๐Ÿ“ latitude / longitudenumberGPS coordinates
โ˜Ž๏ธ phonestringPublic phone number
๐ŸŒ officialSiteUrlstringThe hotel's own booking link
๐Ÿ• checkInTime / checkOutTimestringPublished desk times
๐Ÿ“ descriptionstringGoogle's one-line summary
๐Ÿ“– editorialSummarystringGoogle's full editorial write-up
๐Ÿ˜ neighborhoodDescriptionstringWhat the surrounding area is like
๐Ÿ”Ž searchQuerystringThe query that produced the row
๐Ÿ“Š totalResultsEstimatenumberProperties Google matched for that query
๐Ÿ–ผ photoCountnumberPhotos Google publishes
๐Ÿ“ˆ ratingBreakdownobjectPercentage and count for each of 1-5 stars
๐Ÿ’ฌ amenityHighlightsarrayPer category: mentions, positive, negative, sentiment
๐ŸŒ reviewSourcesarrayEach review platform with its own rating and count
๐Ÿ—จ reviewExcerptsarrayGuest review texts with author, date and source
๐Ÿงญ locationHierarchyarrayRegion, city and district, broadest first
๐Ÿ“ nearbyPlacesarrayNamed nearby places with type and place id
๐Ÿš‡ nearbyTravelTimesarrayLandmarks, stations and airports with travel times
๐Ÿ–ผ photosarrayPhoto URLs
๐Ÿ•’ scrapedAtstringISO timestamp of collection
โŒ errorstringPopulated only on a failed row

Real sample records

{
"imageUrl": "https://lh3.googleusercontent.com/gps-cs-s/AHRPTWnfqYIEjYimXF24poOhrWAFqXBvRkjCdoD7ugTVYSbqJ9G1Gqn_6OWQAzrvdApKLkqwNZYlclpmZqF2UuB4CBHpi95ltsZys9AebmLOkUsdM_NDcemhJcFGhwvOSTEJ89k6aR2P=s150-w92-h150-n-k-no",
"name": "Bruc & Bruc",
"hotelUrl": "https://www.google.com/travel/entity/key/ChkI44_nu6ir1IVxGg0vZy8xMWJ0djY2ZmdrEAE",
"placeId": "ChIJu5ChX-iipBIR48d5h1pRC3E",
"hotelClass": "3-star hotel",
"starRating": 3,
"propertyType": "hotel",
"price": "$85",
"priceValue": 84.802086,
"currency": "USD",
"checkInDate": "2026-11-10",
"checkOutDate": "2026-11-13",
"nights": 3,
"rating": 3.7,
"reviewCount": 148,
"address": "Carrer de Mallorca, 290",
"area": "Dreta de l'Eixample",
"countryCode": "ES",
"latitude": 41.3964619,
"longitude": 2.1663277,
"phone": "+34 605 93 21 31",
"officialSiteUrl": "https://www.brucandbruc.es/",
"description": "Breezy rooms, some with balconies, in a casual hotel offering complimentary Wi-Fi.",
"searchQuery": "Barcelona",
"totalResultsEstimate": 1472,
"photoCount": 9,
"ratingBreakdown": {
"oneStar": { "percent": 17, "count": 26 },
"twoStar": { "percent": 4, "count": 6 },
"threeStar": { "percent": 11, "count": 17 },
"fourStar": { "percent": 21, "count": 32 },
"fiveStar": { "percent": 47, "count": 67 }
},
"amenityHighlights": [
{ "category": "Cleanliness", "mentions": 15, "positiveMentions": 11, "negativeMentions": 3, "sentiment": 0.588 },
{ "category": "Sleep", "mentions": 10, "positiveMentions": 5, "negativeMentions": 5, "sentiment": 0 },
{ "category": "Bathroom and toiletries", "mentions": 9, "positiveMentions": 4, "negativeMentions": 4, "sentiment": 0 }
],
"reviewSources": [{ "source": "Trip.com", "rating": 4.3, "ratingScale": 5, "reviewCount": 34 }],
"reviewExcerpts": [
{
"source": "Trip.com",
"author": "Trip.com Member",
"relativeDate": "a month ago",
"rating": 3,
"ratingScale": 5,
"text": "The location is excellent, it is near all the major tourist spots. However, amenities were limited."
}
],
"locationHierarchy": ["Catalonia", "Barcelona", "Barcelona", "Dreta de l'Eixample"],
"nearbyTravelTimes": [
{ "name": "Basรญlica de la Sagrada Famรญlia", "type": "N/A", "travelTimes": ["8 min", "14 min"] },
{ "name": "Casa Batllรณ", "type": "N/A", "travelTimes": ["10 min", "10 min"] }
],
"scrapedAt": "2026-09-01T15:43:57.901Z",
"error": null
}
{
"name": "Hotel Riu Plaza Manhattan Times Square",
"hotelClass": "4-star hotel",
"propertyType": "hotel",
"checkInDate": "2026-11-10",
"checkOutDate": "2026-11-13",
"nights": 3,
"rating": 4.7,
"reviewCount": 2352,
"area": "Theater District",
"countryCode": "US",
"checkInTime": "3:00 PM",
"checkOutTime": "12:00 PM",
"searchQuery": "Times Square, New York",
"totalResultsEstimate": 108,
"scrapedAt": "2026-09-01T15:39:54.334Z",
"error": null
}
{
"name": "ใ‚คใƒ“ใ‚น ใƒ‘ใƒช ใƒˆใ‚ฅใƒผใƒซ ใ‚จใƒƒใƒ•ใ‚งใƒซ ใ‚ซใƒณใƒ–ใƒญใƒณใƒŒ 15ๅŒบ",
"hotelClass": "3 ใคๆ˜Ÿใฎ่ฆณๅ…‰ๅฎขๅ‘ใ‘ใƒ›ใƒ†ใƒซ",
"starRating": 3,
"placeId": "ChIJH-R_1yJw5kcR5vQPk8C3W0Y",
"rating": 3.8,
"reviewCount": 6627,
"countryCode": "FR",
"latitude": 48.8470547,
"longitude": 2.3013411,
"ratingBreakdown": {
"oneStar": { "percent": 10, "count": 671 },
"twoStar": { "percent": 7, "count": 477 },
"threeStar": { "percent": 15, "count": 1039 },
"fourStar": { "percent": 29, "count": 1943 },
"fiveStar": { "percent": 39, "count": 2497 }
},
"error": null
}

โœจ Why choose this Actor

  • The review breakdown, not just the average. Percentage and count for each of the five star buckets, on every property, in one column.
  • Amenity sentiment with real counts. Google tracks how many reviewers mentioned Cleanliness, Sleep, Location, Bathroom, Service and more, and how many were positive or negative. That is a ready-made competitive gap analysis.
  • Prices for a real stay. Set your dates and every quote is for those exact nights, with the night count on the row so you can normalise to a nightly rate.
  • Joinable identifiers. placeId links straight to Google Maps data, entityKey is stable across runs, featureId covers legacy Maps joins.
  • Honest coverage reporting. totalResultsEstimate tells you how many properties Google matched, so you know exactly what share of a market a run covers.
  • Built on Google's own data payload, not on styled markup with rotating class names.
  • 27 languages, one schema. Field names never change; only the values are translated.
  • No proxy required. Google Travel answers this Actor directly, so proxy is off by default and available when you need volume.

๐Ÿ“ˆ How it compares to alternatives

This ActorTypical Google Hotels scrapersGoogle Hotels by hand
Fields per property43Name, price, rating, addressWhatever you copy
1-5 star review breakdownโœ… percent and countโŒโŒ hover only
Amenity sentiment countsโœ… per categoryโŒโŒ
Guest review excerptsโœ… with author and sourceRarelyManual
Nearby places and travel timesโœ…โŒManual
Stay-date pricingโœ…Sometimesโœ…
Google Maps placeIdโœ…RarelyโŒ
Coverage reported per runโœ… totalResultsEstimateโŒโŒ
Languages27Usually English onlyAny
Properties per search query~20, matching Google's public page~20, same public page~20 per scroll

About that last row. Google publishes roughly 20 properties per search query to a logged-out visitor, no matter who is asking. That is a property of the source, not of this Actor, and any tool claiming otherwise is either paginating a different surface or repeating queries. This Actor is explicit about it: run several narrow destinations ("Le Marais, Paris", "Montmartre, Paris", "hotels near Gare du Nord") instead of one broad one, and read totalResultsEstimate to see how much of the market you have.

๐Ÿš€ How to use

  1. Create a free Apify account. New accounts get $5 in free credit, no card needed: console.apify.com/sign-up.
  2. Open the Actor and click Try for free.
  3. Add your destinations. One per line: a city, a district, a landmark or a hotel name. Narrow beats broad.
  4. Set your stay dates if you want prices for a specific trip. Leave them empty for Google's default one-night rate.
  5. Pick a language if you need something other than English.
  6. Set Max Items to cap the run.
  7. Click Start and watch the log name each property as it lands.
  8. Download the dataset as CSV, Excel, JSON or XML, or pull it from the API.

Prefer to paste URLs? Drop any google.com/travel/search?q=... or google.com/travel/entity/key/... link into the URLs field and skip the search terms entirely.

๐Ÿ’ผ Business use cases

Competitive rate monitoring for hoteliers

Run your own property plus the six hotels you actually compete with, for the dates that matter: the conference week, the long weekend, the shoulder season. Each row carries price, nights, checkInDate and checkOutDate, so a daily schedule builds a rate history without any manual entry. Add ratingBreakdown and you can see whether a rival's premium is backed by guest satisfaction or is just optimistic pricing.

Guest sentiment gap analysis

amenityHighlights gives you, per property, how many reviewers mentioned Cleanliness or Sleep and how many were negative. Pull twenty hotels in a district and you can rank the whole market on the dimension you are about to invest in. If every competitor is bleeding negative mentions on Sleep and you are not, that is your next campaign line, sourced from their reviews rather than your assumptions.

Building a travel product catalogue

placeId, latitude, longitude, address, phone, officialSiteUrl and photos are enough to stand up a property database, and entityKey gives you a stable primary key to refresh against. locationHierarchy lets you group by region, city and district without geocoding anything yourself.

Grounding a travel AI assistant

An assistant that recommends hotels needs facts, not vibes. Feed it description, editorialSummary, neighborhoodDescription, ratingBreakdown, amenityHighlights and nearbyTravelTimes, and it can answer "quiet 4-star near the Sagrada Famรญlia where nobody complains about the beds" with citations instead of hallucinations.

๐Ÿ”Œ Automating Google Travel Hotels Scraper

  • Make and Zapier: trigger on a finished run and push new rows into Sheets, Airtable, Notion or a CRM.
  • Slack: post a daily digest when a tracked competitor's price moves.
  • Airbyte: sync the dataset into Snowflake, BigQuery or Postgres on a schedule.
  • GitHub Actions: call the Actor from a workflow and commit the CSV to a repo for versioned rate history.
  • Google Drive: drop each run's export into a shared folder for the revenue team.
  • Apify Scheduler: run every morning before rates move, with no code at all.

๐ŸŒŸ Beyond business use cases

  • Research. Tourism economists can measure how published rates and guest sentiment vary by district, season and property class, across cities, using one consistent schema.
  • Personal. Planning a trip? Run your shortlist with your real dates and compare the review breakdown side by side instead of trusting five different averages.
  • Non-profit. Event and conference organisers can build an honest accommodation guide for attendees, with prices for the event dates and accessibility-relevant contact details.
  • Experimentation. The amenityHighlights and ratingBreakdown columns are an unusually clean dataset for teaching sentiment analysis or building a rating-distribution model.

๐Ÿค– Ask an AI assistant about this scraper

Point ChatGPT, Claude or Gemini at this page and ask questions like:

  • "Using the Google Travel Hotels Scraper output, which of these hotels has the most polarised reviews?"
  • "Write a Python script that turns ratingBreakdown into a stacked bar chart per property."
  • "From amenityHighlights, which amenity is the biggest weakness across this district?"
  • "Convert this dataset into a Postgres schema keyed on entityKey."

โ“ Frequently Asked Questions

โ“ How many properties do I get per search? Around 20, which is what Google publishes to a logged-out visitor for any one query. totalResultsEstimate tells you how many Google matched in total. To cover more of a market, run several narrower destinations rather than one city name.

โ“ Can I get prices for specific dates? Yes. Set Check-in date and Check-out date and every price is the rate for that exact stay. The row carries the dates and the night count so you can normalise to a nightly figure.

โ“ Which currency are prices in? Google chooses the currency from the location of the request, and it ignores any currency parameter in the URL. Prices come back in US dollars by default. To force another currency, switch on the proxy and pick the matching country.

โ“ Do I need a proxy? No. Google Travel answers this Actor directly, so proxy is off by default. Switch it on for large runs or to control the price currency.

โ“ Why is Spanish missing from the language list? Google serves a page with no embedded data for es, so no scraper can read Spanish results from that surface. Rather than ship a language that silently returns nothing, it is left out. The 27 languages offered all return the full 43 fields.

โ“ What is the difference between hotelClass and rating? hotelClass is the official star classification of the property ("3-star hotel"). rating is the guest score out of 5 from Google reviews. A 2-star hotel can carry a 4.6 guest rating, and often does.

โ“ Why do some fields say "Not Disclosed"? Because Google does not publish that value for that property. An independent hotel often has no listed check-in time, and a hostel has no star class. The field stays in the schema with a sentinel rather than disappearing, so your columns are the same on every row.

โ“ How do I join this to Google Maps data? Use placeId. It is the standard Google Maps place identifier and works directly with the Places API and with Maps datasets. featureId covers older Maps joins, and entityKey is the stable key inside Google Travel itself.

โ“ Can I scrape a single hotel I already have the link for? Yes. Paste the google.com/travel/entity/key/... URL into the URLs field. You get the full detail record for that property with no search step.

โ“ Does it collect vacation rentals too? Google mixes apartments and rentals into hotel results, and they come through with propertyType set accordingly, so you can keep or filter them.

โ“ Is the data live? Yes. Every run fetches Google Travel at that moment. Prices and ratings change, so schedule the Actor if you need a time series.

โ“ Is any of this behind a login? No. The Actor only reads what Google publishes to a logged-out visitor. No accounts, no cookies, no personal data.

๐Ÿ”Œ Integrate with any app

Everything the Actor produces is available through the Apify API, so you can start runs, poll status and pull the dataset from any language. Official clients exist for JavaScript and Python, and the dataset endpoint serves CSV, Excel, JSON and XML directly, which means a spreadsheet or a BI tool can point at a URL and refresh itself.

๐Ÿ’ก Pro Tip: browse the complete ParseForge collection.

๐Ÿ†˜ Need Help? Open our contact form

โš ๏ธ Disclaimer: This is an independent tool and is not affiliated with, endorsed by, or connected to Google. It collects only publicly available data from google.com/travel.