Hotel Review Aggregator API: Google, Booking, Expedia & More avatar

Hotel Review Aggregator API: Google, Booking, Expedia & More

Pricing

from $1.99 / 1,000 reviews

Go to Apify Store
Hotel Review Aggregator API: Google, Booking, Expedia & More

Hotel Review Aggregator API: Google, Booking, Expedia & More

Extract hotel reviews from Google Maps, Tripadvisor, Booking.com, Expedia and Yelp. Automatically match one hotel across sources, normalize ratings and export reviews, guest details and owner replies to JSON, CSV or Excel.

Pricing

from $1.99 / 1,000 reviews

Rating

0.0

(0)

Developer

ClearPath

ClearPath

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

1

Monthly active users

3 days ago

Last modified

Share

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

Compare hotel ratings across 5 platforms. Same rating scale. Original scores preserved.

From Clearpath, creators of Booking.com Reviews Scraper and Expedia Hotels Scraper. Bring guest feedback from multiple travel platforms into one hotel research workflow.

Why choose this actor?

Compare scores on the same scale. Reviews from Google, Tripadvisor, Booking.com, Expedia and Yelp use a shared five-point scale. For example, 8/10 becomes 4/5. The original score and its scale stay in the output, so you can compare platforms without losing the source data.

Match the hotel automatically. Enter its name and city or address. The actor finds the corresponding property on your selected platforms and combines its reviews in one dataset. Uncertain matches are skipped and explained in the run summary; exact hotel links can help resolve ambiguity.

Keep the detail behind the rating. Export review text, pros and cons, guest photos, stay details and owner replies where available. Source-specific fields are preserved alongside the shared columns. Collect up to 5,000 reviews across matched sources in one run.

Compare your hotel reviews

Quick start

Replace the hotel and location with yours. This example selects all five platforms and requests up to 100 reviews in total, shared across matched sources.

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

Open actor input to choose your hotel and sources. Expedia and Yelp are optional; both are enabled above. Review availability varies by platform. Free accounts receive up to 10 reviews per run. Export CSV or Excel for comparison, or JSON to preserve nested guest, stay and response details.

Hotel & Place Review Tools
 Hotel Reviews
You are here
 Booking.com
Guest reviews
 Expedia
Hotels & reviews
 Place Reviews
Local businesses

Copy to your AI assistant

clearpath/hotel-review-aggregator on Apify. Aggregates property-matched hotel reviews from Google, Tripadvisor, Booking.com, Expedia, and Yelp into one schema. Expedia and Yelp are opt-in via sources. 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 Expedia and 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 five 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 Expedia hotel reviews

Expedia is optional. Add expedia to your source selection; the total review limit stays shared across all sources.

{
"hotel": "Bellagio",
"location": "Las Vegas, USA",
"sources": ["google", "tripadvisor", "booking", "expedia"],
"maxReviews": 100
}

Expedia reviews retain their original scores, dates, review-brand attribution, and available guest details under platformData. The normalized rating uses a five-point scale. Date-only reviews do not receive an invented publication time. If a hotel cannot be matched confidently, add its exact Expedia hotel page under sourceUrls.expedia.

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 five sources; Expedia and Yelp are opt-in
maxReviewsinteger100Global result limit, 100 to 5,000 for paid accounts
sourceUrlsobject{}Exact Google, Tripadvisor, Booking.com, Expedia, 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, Expedia, 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 for five review platforms. 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 Expedia included by default?

Expedia is available as an optional source. Select it under Review sources or include expedia in your input. Google, Tripadvisor, and Booking.com remain the defaults. Expedia's displayed totals can exceed the written reviews available for collection; any incomplete collection is indicated in the run summary.

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, Expedia, 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, Expedia, and Yelp hotel reviews into one analysis-ready dataset.