ParseForge Scrapers

Google Travel Hotels Scraper

parseforge/google-travel-scraper

TravelAutomationLead generation

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.

Run this scraper See the API call
Total runs
6
Bookmarked
0
Last modified
3 days ago

This scraper was last updated on .

What does the Google Travel Hotels Scraper return?

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 owners Track competitor rates for specific stay dates
OTAs and travel startups Seed a property catalogue with ratings, GPS and contact details
Market researchers and consultants Benchmark guest sentiment across a city or a district
Travel agencies and DMCs Build client-ready shortlists with real prices and reviews
Data teams and AI builders Feed 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.

Field Type Description
๐Ÿ–ผ imageUrl string Primary property photo
๐Ÿจ name string Property name as Google publishes it
๐Ÿ”— hotelUrl string Google Travel page for the property
๐Ÿ”‘ entityKey string Google Travel entity id, stable across runs
๐Ÿ“Œ placeId string Google Maps place id, for joining to Maps data
๐Ÿงญ featureId string Google feature id (hex pair)
๐Ÿ—บ googleMapsUrl string Direct Google Maps link
โญ hotelClass string Official class, for example "3-star hotel"
๐ŸŒŸ starRating number Class as a number
๐Ÿท propertyType string hotel, vacation_rental and similar
๐Ÿ’ฐ price string Formatted price for the requested stay
๐Ÿ’ต priceValue number Same price as a number
๐Ÿ’ฑ currency string ISO currency of the quote
๐Ÿ“… checkInDate string Stay start, ISO date
๐Ÿ“… checkOutDate string Stay end, ISO date
๐ŸŒ™ nights number Nights in the quoted stay
๐ŸŒŸ rating number Google guest rating out of 5
๐Ÿ—ฃ reviewCount number Number of Google reviews
๐Ÿ“ address string Street address
๐Ÿ—บ area string Narrowest area Google assigns, usually the neighbourhood
๐ŸŒ countryCode string ISO country code
๐Ÿ“ latitude / longitude number GPS coordinates
โ˜Ž๏ธ phone string Public phone number
๐ŸŒ officialSiteUrl string The hotel's own booking link
๐Ÿ• checkInTime / checkOutTime string Published desk times
๐Ÿ“ description string Google's one-line summary
๐Ÿ“– editorialSummary string Google's full editorial write-up
๐Ÿ˜ neighborhoodDescription string What the surrounding area is like
๐Ÿ”Ž searchQuery string The query that produced the row
๐Ÿ“Š totalResultsEstimate number Properties Google matched for that query
๐Ÿ–ผ photoCount number Photos Google publishes
๐Ÿ“ˆ ratingBreakdown object Percentage and count for each of 1-5 stars
๐Ÿ’ฌ amenityHighlights array Per category: mentions, positive, negative, sentiment
๐ŸŒ reviewSources array Each review platform with its own rating and count
๐Ÿ—จ reviewExcerpts array Guest review texts with author, date and source
๐Ÿงญ locationHierarchy array Region, city and district, broadest first
๐Ÿ“ nearbyPlaces array Named nearby places with type and place id
๐Ÿš‡ nearbyTravelTimes array Landmarks, stations and airports with travel times
๐Ÿ–ผ photos array Photo URLs
๐Ÿ•’ scrapedAt string ISO timestamp of collection
โŒ error string Populated 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 Actor Typical Google Hotels scrapers Google Hotels by hand
Fields per property 43 Name, price, rating, address Whatever you copy
1-5 star review breakdown โœ… percent and count โŒ โŒ hover only
Amenity sentiment counts โœ… per category โŒ โŒ
Guest review excerpts โœ… with author and source Rarely Manual
Nearby places and travel times โœ… โŒ Manual
Stay-date pricing โœ… Sometimes โœ…
Google Maps placeId โœ… Rarely โŒ
Coverage reported per run โœ… totalResultsEstimate โŒ โŒ
Languages 27 Usually English only Any
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.

๐Ÿ”— Recommended Actors

๐Ÿ’ก 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.

What input does the Google Travel Hotels Scraper accept?

FieldTypeWhat it doesDefault
searchTerms array Where to look. A city, a neighbourhood, a landmark or a hotel name - anything you would type into the Google Travel search box. Google publishes about 20 properties per query, so several narrow destinations return far more than one broad one. ["Paris"]
startUrls array Paste Google Travel URLs directly. Both a search page (google.com/travel/search?q=...) and a single property page (google.com/travel/entity/key/...) work. not set
maxItems integer Free users: Limited to 10 items (preview). Paid users: Optional, max 1,000,000 10
checkInDate string Stay start, as YYYY-MM-DD. Leave both dates empty and Google quotes its default one-night stay starting tomorrow. not set
checkOutDate string Stay end, as YYYY-MM-DD. Ignored unless a check-in date is set as well. not set
scrapePropertyDetails boolean On by default. Opens every property's own Google Travel page to add street address, phone, official website, check-in and check-out times, nearby places and review excerpts. Turn it off for a faster, listing-only run. true
includeReviewExcerpts boolean Include the guest review texts Google shows on the property page, with author, relative date and source platform. true
maxReviewExcerptsPerProperty integer How many review texts to keep per property. 5
maxPhotosPerProperty integer How many photo URLs to keep per property. 10
language string (27 options) Language Google answers in. Property class, descriptions and review text come back translated. Spanish is not offered because Google serves a data-free page for it. en
proxyConfiguration object Google Travel answers this Actor without a proxy, so it is off by default. Switch it on for high volume, or pick a country to control which currency Google quotes prices in - the currency follows the exit IP, not a URL parameter. {"useApifyProxy":false}

How much does the Google Travel Hotels Scraper cost?

from $3.60 per 1,000 results

Charged forWhat it isPrice each
Property result Charged once per property delivered to the dataset, with all 43 fields. $0.0036 to $0.0045

Tiered: the lower figure is the price on a higher Apify plan. Billing and the free credit live on Apify.

How do I call the Google Travel Hotels Scraper API?

One POST returns the dataset directly. Same shape for every scraper in the library, so swapping the slug is the only change.

POST ยท run and get results
curl -X POST "https://api.apify.com/v2/acts/parseforge~google-travel-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "searchTerms": [
      "Paris"
    ],
    "maxItems": 10,
    "scrapePropertyDetails": true,
    "includeReviewExcerpts": true,
    "maxReviewExcerptsPerProperty": 5
  }'

What example inputs can I use?

Use these inputs to see how a run is configured.

input.json
{
  "searchTerms": [
    "Paris"
  ],
  "maxItems": 10,
  "scrapePropertyDetails": true,
  "includeReviewExcerpts": true,
  "maxReviewExcerptsPerProperty": 5
}

What do users say about the Google Travel Hotels Scraper?

No reviews yet. Be the first.

How do I report an issue with the Google Travel Hotels Scraper?

We build and maintain this scraper, so a problem with it comes to us. Report it on the Apify listing and the thread stays attached to the scraper where the next person can find it: open an issue.

Broken and urgent, or you would rather not post in public? Write to parseforge@protonmail.com and it reaches the people who wrote it.

What related scrapers can I use?

Run Google Travel Hotels Scraper on Apify All scrapers