Hotel Review Aggregator: Google, Tripadvisor, Booking & Yelp avatar

Hotel Review Aggregator: Google, Tripadvisor, Booking & Yelp

Pricing

from $1.99 / 1,000 reviews

Go to Apify Store
Hotel Review Aggregator: Google, Tripadvisor, Booking & Yelp

Hotel Review Aggregator: Google, Tripadvisor, Booking & Yelp

Aggregate hotel reviews from Google, Tripadvisor, Booking.com, and Yelp in one property-matched dataset with normalized ratings and guest details.

Pricing

from $1.99 / 1,000 reviews

Rating

0.0

(0)

Developer

ClearPath

ClearPath

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

10 hours ago

Last modified

Share

Hotel Review Aggregator | Google, Tripadvisor, Booking.com & Yelp Reviews (2026)

We match the hotel across every platform, so you don’t have to.

Hotel review aggregator output: Google, Tripadvisor, Booking.com, and Yelp reviews as structured JSON

One hotel. Four review platforms. One clean dataset. Property matching and rating normalization are handled automatically.
Clearpath Hotel Review Suite   •  Aggregate everything or use one source directly
Hotel Review Aggregator All sources (current) Google Maps Reviews Scraper Google Reviews Booking.com Reviews Scraper Booking.com Reviews Tripadvisor Reviews Scraper Tripadvisor Reviews Yelp Reviews Scraper Yelp Reviews

Copy to your AI assistant

clearpath/hotel-review-aggregator on Apify. Aggregates property-matched hotel reviews from Google, Tripadvisor, Booking.com, and Yelp into one schema. Call ApifyClient("TOKEN").actor("clearpath/hotel-review-aggregator").call(run_input={...}), then client.dataset(run["defaultDatasetId"]).list_items().items. Provide one hotel plus a location, Google Maps URL, or Place ID. Full spec: GET https://api.apify.com/v2/acts/clearpath~hotel-review-aggregator/builds/default (Bearer TOKEN) → inputSchema, actorDefinition.storages.dataset, readme. Token: https://console.apify.com/account/integrations

What does this hotel review aggregator do?

Give the Actor one hotel. It finds the corresponding property on Google Maps, Tripadvisor, Booking.com, and optionally Yelp.

Every candidate must match the same canonical hotel before collection starts. Uncertain sources are skipped and explained in the run summary. A similar name or high search rank alone is not enough.

  • Aggregate hotel reviews across platforms: one run and one dataset for up to four sources
  • Normalize hotel ratings: compare five-star and ten-point scores on a shared five-star scale while retaining the original value
  • Export hotel review data: download JSON, CSV, Excel, XML, or HTML from Apify storage
  • Monitor hotel reputation: schedule daily or weekly runs and send results through webhooks, Make, Zapier, Google Sheets, or your data warehouse

How to aggregate hotel reviews

  1. Open the Hotel Review Aggregator Input tab.
  2. Enter the hotel's full public name and its city or address.
  3. Select at least two review sources and choose a result limit from 100 to 5,000.
  4. Run the Actor, then open the Dataset for reviews and OUTPUT for property and source status.

Basic: Google, Tripadvisor, and Booking.com

{
"hotel": "Hotel Adlon Kempinski",
"location": "Berlin, Germany",
"countryCode": "DE",
"sources": ["google", "tripadvisor", "booking"],
"maxReviews": 100
}

Add Yelp hotel reviews

{
"hotel": "Hotel Adlon Kempinski",
"location": "Berlin, Germany",
"countryCode": "DE",
"sources": ["google", "tripadvisor", "booking", "yelp"],
"maxReviews": 500
}
{
"hotel": "The Plaza",
"sources": ["google", "tripadvisor", "booking"],
"maxReviews": 1000,
"sourceUrls": {
"google": "https://www.google.com/maps/place/The+Plaza/",
"tripadvisor": "https://www.tripadvisor.com/Hotel_Review-g60763-d675616-Reviews-The_Plaza_New_York.html",
"booking": "https://www.booking.com/hotel/us/the-plaza.html"
}
}

An exact Google Maps URL or googlePlaceId can replace location. Other exact source links still pass the cross-source identity check.

Hotel review aggregator input

ParameterTypeDefaultDescription
hotelstringrequiredOne hotel's full public name
locationstringnoneCity, area, postal code, or street address; required without exact Google identity
countryCodestringnoneOptional country picker in Console; API input uses an ISO two-letter code such as DE, GB, or US
sourcesarrayGoogle, Tripadvisor, Booking.comTwo to four sources; Yelp is opt-in
maxReviewsinteger100Global result limit, 100 to 5,000 for paid accounts
sourceUrlsobject{}Exact Google, Tripadvisor, Booking.com, or Yelp property links
googlePlaceIdstringnoneExact Google Place ID used as canonical identity

The requested limit is balanced across matched sources and reassigned when one source has fewer reviews available. The Actor streams bounded batches to the dataset, so 5,000-review runs do not retain the full result set in memory.

What hotel review data can you extract?

Each dataset item is one normalized review with 28 top-level fields. Source-specific detail remains under platformData, so unification does not discard useful native fields.

  • Review content: title, text, pros, cons, language, date, helpful votes, photos, and owner response
  • Reviewer and stay: profile, contribution counts, country, traveller type, room, dates, and nights where available
  • Hotel identity: canonical Google Place ID, address, coordinates, phone, website, and source property record
  • Quality controls: normalized and original ratings, match status, match score, source status, and partial-result messages

This is one complete Tripadvisor dataset row from Hotel Adlon Kempinski Berlin. Empty arrays are the review's actual values; no keys are omitted.

{
"schemaVersion": "1.0",
"recordType": "review",
"platform": "tripadvisor",
"reviewId": "1058906411",
"title": "Great stay",
"text": "I had luxurious and absolutely lovely stay.",
"pros": null,
"cons": null,
"rating": 5,
"ratingOriginal": 5,
"ratingScale": "1-5",
"date": "2026-05-04",
"publishedAt": "2026-05-04T00:44:08-04:00",
"reviewUrl": "https://www.tripadvisor.com/ShowUserReviews-g187323-d190694-r1058906411-Hotel_Adlon_Kempinski_Berlin-Berlin.html#review1058906411",
"language": "en",
"helpfulVotes": 0,
"reviewer": {
"id": "07ACE69DF86D94F0DFC42B2E4908D95A",
"name": "Mathias_lund",
"url": "https://www.tripadvisor.com/MemberProfile-a_uid.07ACE69DF86D94F0DFC42B2E4908D95A",
"location": null,
"countryCode": null,
"reviewCount": 1,
"contributions": {
"reviews": 1,
"hotelReviews": 1,
"restaurantReviews": 0,
"attractionReviews": 0,
"photos": 0,
"helpfulVotes": 0
},
"avatarUrl": null,
"joinedAt": "2019-04-08T14:19:05-04:00",
"anonymous": false,
"verified": null
},
"hotelId": "google:ChIJHQQciMZRqEcR2X4b8-vf5Bk",
"hotelName": "Hotel Adlon Kempinski Berlin",
"hotel": {
"id": "google:ChIJHQQciMZRqEcR2X4b8-vf5Bk",
"name": "Hotel Adlon Kempinski Berlin",
"address": "Unter den Linden 77, 10117 Berlin",
"city": "10117 Berlin",
"region": null,
"postalCode": null,
"countryCode": "DE",
"latitude": 52.5161791,
"longitude": 13.3805048,
"phone": "030 22610",
"website": "https://www.kempinski.com/en/hotel-adlon",
"googlePlaceId": "ChIJHQQciMZRqEcR2X4b8-vf5Bk",
"googleMapsUrl": "https://www.google.com/maps/preview/place/Hotel+Adlon+Kempinski+Berlin"
},
"sourceHotel": {
"id": "190694",
"name": "Hotel Adlon Kempinski Berlin",
"url": "https://www.tripadvisor.com/Hotel_Review-g187323-d190694-Reviews-Hotel_Adlon_Kempinski_Berlin-Berlin.html"
},
"stay": {
"travelDate": "2026-04",
"travellerType": null,
"guestType": null,
"roomName": null,
"roomId": null,
"nights": null,
"checkinDate": null,
"checkoutDate": null,
"status": null
},
"ownerResponse": {
"text": "Dear Guest, thank you so much for your kind words. We look forward to welcoming you back.",
"title": "Owner Response",
"authorName": "Christian Hirt",
"authorRole": "Inhaber",
"publishedAt": "2026-05-04T23:32:46-04:00",
"language": "en"
},
"subratings": [
{"name": "Rooms", "label": "Rooms", "rating": 5, "ratingOriginal": 5, "ratingScale": "1-5"},
{"name": "Value", "label": "Value", "rating": 4, "ratingOriginal": 4, "ratingScale": "1-5"},
{"name": "Sleep Quality", "label": "Sleep Quality", "rating": 4, "ratingOriginal": 4, "ratingScale": "1-5"},
{"name": "Location", "label": "Location", "rating": 5, "ratingOriginal": 5, "ratingScale": "1-5"},
{"name": "Cleanliness", "label": "Cleanliness", "rating": 5, "ratingOriginal": 5, "ratingScale": "1-5"},
{"name": "Service", "label": "Service", "rating": 5, "ratingOriginal": 5, "ratingScale": "1-5"}
],
"photos": [],
"match": {
"status": "matched",
"score": 87.1
},
"platformData": {
"locationId": 190694,
"placeName": "Hotel Adlon Kempinski Berlin",
"placeKind": "hotel",
"placeUrl": "https://www.tripadvisor.com/Hotel_Review-g187323-d190694-Reviews-Hotel_Adlon_Kempinski_Berlin-Berlin.html",
"reviewId": "1058906411",
"rating": 5,
"title": "Great stay",
"text": "I had luxurious and absolutely lovely stay.",
"publishedDate": "2026-05-04T00:44:08-04:00",
"publishedPlatform": "Desktop",
"travelDate": "2026-04",
"language": "en",
"helpfulVotes": 0,
"machineTranslated": false,
"subratings": [
{"name": "Rooms", "value": 5},
{"name": "Value", "value": 4},
{"name": "Sleep Quality", "value": 4},
{"name": "Location", "value": 5},
{"name": "Cleanliness", "value": 5},
{"name": "Service", "value": 5}
],
"reviewUrl": "https://www.tripadvisor.com/ShowUserReviews-g187323-d190694-r1058906411-Hotel_Adlon_Kempinski_Berlin-Berlin.html#review1058906411",
"ownerResponse": {
"text": "Dear Guest, thank you so much for your kind words. We look forward to welcoming you back.",
"title": "Owner Response",
"responder": "Christian Hirt",
"connection": "Inhaber",
"publishedDate": "2026-05-04T23:32:46-04:00",
"language": "en"
},
"user": {
"userId": "07ACE69DF86D94F0DFC42B2E4908D95A",
"username": "Mathias_lund",
"displayName": null,
"location": null,
"avatar": "//static.tacdn.com/img2/generic/site/no_user_photo-v1.gif",
"profileUrl": "https://www.tripadvisor.com/MemberProfile-a_uid.07ACE69DF86D94F0DFC42B2E4908D95A",
"joinedDate": "2019-04-08T14:19:05-0400",
"contributions": {
"reviews": 1,
"hotelReviews": 1,
"restaurantReviews": 0,
"attractionReviews": 0,
"photos": 0,
"helpfulVotes": 0
}
},
"scrapedAt": "2026-09-01T22:26:21.612194+00:00"
},
"scrapedAt": "2026-09-01T22:26:21.612194+00:00"
}

The run's OUTPUT record separately reports the canonical hotel, requested and effective limits, total reviews, partial status, and per-source status. That makes failed, unavailable, ambiguous, mismatched, and exhausted sources visible without polluting the review dataset.

How to monitor hotel reviews and reputation

Schedule a daily run for active reputation monitoring or a weekly run for competitor benchmarking. Send the dataset to Google Sheets, Airtable, Make, Zapier, a webhook, or your warehouse.

Use platform, rating, date, and hotelId for cross-source trend analysis. Keep ratingOriginal and ratingScale when you need to reproduce the platform's native score.

For lead generation, combine recurring review data with property records to prioritize hotels with falling ratings, unanswered complaints, or rapid review growth. Reviewer personal data should only be processed for a lawful and necessary purpose.

How to run the scraper and put it on a schedule (official Apify videos):

How much does the hotel review aggregator cost?

Pricing is pay per event. Review charges apply only to property-matched reviews delivered to the default dataset.

See the Actor's Pricing tab for current rates and Apify plan discounts.

Free Apify accounts can use 10 lifetime runs with up to 10 reviews per run. Those runs use the account's included Apify platform credits.

Hotel review API FAQ

What is a hotel review aggregator?

A hotel review aggregator combines guest feedback for the same property from multiple platforms. This Actor returns Google, Tripadvisor, Booking.com, and Yelp reviews in one consistent schema.

Does this replace the Google, Tripadvisor, Booking.com, or Yelp API?

It provides one Apify API and dataset instead of four separate integrations. It also preserves source-specific fields under platformData, which avoids forcing every platform into the lowest common denominator.

How does the Actor avoid mixing two hotels?

Google establishes the canonical property. Other sources must agree on explainable identity signals such as name, address, coordinates, country, phone, or website. Hard location and category conflicts are rejected.

The matcher was developed against 225 live hotels and replayed against frozen holdouts. Its production rule is fail closed: uncertain candidates are skipped, never silently merged.

What happens when a hotel name is ambiguous?

The source status becomes ambiguous and the summary includes alternative candidates where useful. Paste exact source links or a Google Place ID to resolve the property without guessing.

Why can a Booking.com hotel require an exact URL?

Some live property pages do not appear in Booking.com's searchable inventory when rooms are not currently sellable. If name search cannot discover the hotel, paste its Booking.com property URL.

Is Yelp included?

Yelp is optional because regional hotel coverage varies. A four-source live run completed successfully. If Yelp is unavailable, reviews from successful sources are still returned.

How many hotel reviews can I collect?

Paid accounts can request 100 to 5,000 reviews per run. The global limit is balanced across matched sources and reassigned when a source has fewer reviews.

Can I export reviews to CSV or Excel?

Yes. Download as JSON, CSV, Excel, XML, or HTML from the run's Storage tab. JSON preserves nested objects and arrays most accurately.

Can I use the Actor through an API?

Yes. Use the Apify API, Python client, JavaScript client, webhooks, schedules, or MCP. The output and dataset schemas expose the full machine-readable contract.

What should I do if a source fails?

Check the OUTPUT record for that source's status and message. Retry transient failures, or add the exact property URL when discovery is ambiguous or unavailable. Report repeatable problems in the Actor's Issues tab.

The Actor collects publicly available review data. You are responsible for each platform's terms, copyright, database rights, and applicable privacy law, including GDPR and CCPA.

Reviewer names, profile links, locations, photos, and review text may be personal data. Use data minimization, a lawful basis, retention limits, and deletion procedures appropriate to your use case.

More hotel and place review scrapers

🏨 Hotel review sources

📍 Place reviews

Support

  • Bugs: use the Actor's Issues tab with the hotel input and affected source
  • Features: request new sources or schema fields in Issues
  • Email: max@mapa.slmail.me

This Actor extracts publicly available Google, Tripadvisor, Booking.com, and Yelp review data. Users must comply with platform terms and data protection regulations, including GDPR and CCPA.


Aggregate property-matched Google, Tripadvisor, Booking.com, and Yelp hotel reviews into one analysis-ready dataset.