Expedia & Hotels.com Reviews Scraper - Guest Reviews & Ratings avatar

Expedia & Hotels.com Reviews Scraper - Guest Reviews & Ratings

Pricing

from $0.99 / 1,000 reviews

Go to Apify Store
Expedia & Hotels.com Reviews Scraper - Guest Reviews & Ratings

Expedia & Hotels.com Reviews Scraper - Guest Reviews & Ratings

Scrape guest reviews from Expedia, Hotels.com, Orbitz, Travelocity and Vrbo. Paste hotel links or IDs from any of them: review text, rating, stay length, liked and disliked themes, photos, verified status and the hotel's reply. One row per review.

Pricing

from $0.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

18 hours ago

Last modified

Categories

Share

Expedia & Hotels.com Reviews Scraper | Guest Reviews, Ratings & Replies

27 fields per review, from five sites at once: review text, score out of 10, what the guest liked and disliked, stay length, verified status, photos, and the hotel's own reply.

Expedia and Hotels.com reviews scraper: review text, score, liked and disliked themes, stay length, verified status and the hotel's management response as structured JSON

One link, five brands. A property's reviews are identical on Expedia, Hotels.com, Orbitz, Travelocity and Vrbo, so paste a link from whichever site you use. You never have to say which one it came from.

Reviews only. This actor returns no prices, room rates or availability — for those use the Expedia Hotels Scraper.

Copy to your AI assistant

Copy this block into ChatGPT, Claude, Cursor, or any LLM to start using this actor.

clearpath/expedia-hotels-com-reviews-scraper on Apify. Scrapes guest reviews for a hotel from Expedia Group: Expedia, Hotels.com, Orbitz, Travelocity and Vrbo share one review corpus per property, so a link from any of them works and the rows are the same. Call: ApifyClient("TOKEN").actor("clearpath/expedia-hotels-com-reviews-scraper").call(run_input={...}), then client.dataset(run["defaultDatasetId"]).list_items().items for one row per review. A SECOND dataset holds one row per hotel (identity, location, overall score, reviews available vs collected): read run["output"]["hotels"], or open the "summary" dataset in Storage. Inputs: hotels (array, required - hotel page links or numeric hotel IDs, mixed freely; the ID is the number after ".h" in a link), maxReviews (integer, default 100, per hotel, 0 = every review the source serves). No date, rating or language filters: filter the rows yourself. Reviews only - this actor returns no prices, rates or availability. Full actor spec (input schema, dataset fields, README): GET https://api.apify.com/v2/acts/clearpath~expedia-hotels-com-reviews-scraper/builds/default (Bearer TOKEN) returns inputSchema, actorDefinition.storages.datasets, readme. Pricing: pay-per-event, $0.009 per run start plus $1.99 per 1,000 reviews. Get token: https://console.apify.com/account/integrations

Key Features

  • Five brands, one actor: Expedia, Hotels.com, Orbitz, Travelocity and Vrbo links all resolve to the same property and the same reviews
  • 27 fields per review: text, score out of 10, rating label, liked and disliked themes, author, stay length, verified status, helpful votes, photos and the hotel's reply
  • The hotel's side of the story: managementResponse carries the reply text, who wrote it and when — present on 36 of 40 reviews in our test sample
  • Two inputs: hotel links or IDs, and how many reviews per hotel. Nothing else to configure
  • Everything or a sample: maxReviews: 0 collects every review the source serves; a small number gives you a quick look first
  • Honest completion: every hotel gets a summary row saying how many reviews exist, how many were collected and whether the source ran out early

Pricing: Pay Per Event (PPE)

$1.99 per 1,000 reviews, no subscription.

EventPrice
Review scraped$0.00199

Example: 100 reviews costs about $0.20. A 1,000-review sweep of one hotel costs about $2.00.

Apify also charges $0.009 when a run starts, which covers the hotel lookup a run performs before any review is read.

Quick Start

One hotel, first 100 reviews

{
"hotels": ["https://www.expedia.com/Paris-Hotels-Grand-Hotel-Leveque.h5951861.Hotel-Information"],
"maxReviews": 100
}

Only the .h<id> part of a link is read, so paste whatever your browser gives you:

{
"hotels": ["https://www.hotels.com/Hotel.h5951861.Hotel-Information"],
"maxReviews": 100
}

Several hotels, by ID

The ID is the number after .h in any hotel link. Mix IDs and links freely; duplicates are collapsed.

{
"hotels": ["5951861", "9619719", "https://www.orbitz.com/Hotel.h868.Hotel-Information"],
"maxReviews": 50
}

Every review a hotel has

{
"hotels": ["5951861"],
"maxReviews": 0
}

0 means everything the source will serve. On a 1,527-review property this returned 1,475 rows and reported the shortfall rather than pretending it was complete.

Input Parameters

ParameterTypeDefaultDescription
hotelsarrayHotel page links or numeric hotel IDs, mixed freely. Required.
maxReviewsinteger100Reviews per hotel, not per run. 0 collects every review available.

Output Data

Two datasets. Reviews go to the default dataset, one row per review. A second dataset named summary holds one row per hotel.

Review row (27 fields)

GroupFields
The reviewid text title highlightedText date dateRaw
The scorerating ratingScore ratingScaleMax ratingLabel
Themesliked disliked
The guestauthor authorLocation traveledWith stayDuration verified verificationLabel
SignalshelpfulVotes photos originalLanguage language brandType
The hotel's replymanagementResponse (text, author, date, header)
IdentityhotelId hotelName hotelUrl

Hotel row (summary dataset)

hotelId hotelName hotelUrl address city countryCode latitude longitude totalScore reviewsCount reviewsFetched reviewStatus status

reviewsCount is how many reviews the hotel has; reviewsFetched is how many this run delivered. reviewStatus tells you why they differ: limit_reached means your maxReviews stopped it, exhausted means the source ran out, partial means it stopped early and the row says so.

Complete Output Example

One real review, every field as returned:

{
"id": "6a7fa1f71832b92a621e4d54",
"title": null,
"text": "No place to put luggage .",
"highlightedText": null,
"originalLanguage": null,
"language": null,
"brandType": null,
"rating": "8/10 Good",
"ratingScore": 8,
"ratingScaleMax": 10,
"ratingLabel": "Good",
"author": "Saverio",
"authorLocation": null,
"date": "Aug 14, 2026",
"dateRaw": "Aug 14, 2026",
"stayDuration": "Stayed 3 nights in Aug 2026",
"traveledWith": [],
"verified": true,
"verificationLabel": "Verified review",
"liked": [
"Cleanliness",
"staff & service",
"amenities",
"property conditions & facilities"
],
"disliked": [],
"managementResponse": {
"text": "Thank you for your feedback. We understand that you found the luggage space limited. We do offer larger room categories with more space, which may be more suitable for guests travelling with larger luggage. We hope to welcome you again soon!",
"author": "Nicolas",
"respondedOn": "Sep 17, 2026",
"header": "Response from Nicolas on Sep 17, 2026"
},
"helpfulVotes": 0,
"photos": [],
"hotelId": "5951861",
"hotelName": "Grand Hotel Leveque",
"hotelUrl": "https://www.expedia.com/Hotel.h5951861.Hotel-Information"
}

And the hotel it belongs to, from the summary dataset:

{
"hotelId": "5951861",
"hotelName": "Grand Hotel Leveque",
"hotelUrl": "https://www.expedia.com/Hotel.h5951861.Hotel-Information",
"address": "29 rue Cler, Paris, Paris, 75007",
"city": "Paris",
"countryCode": "FRA",
"latitude": 48.857416,
"longitude": 2.306071,
"reviewsCount": 1002,
"totalScore": 9.4,
"reviewStatus": "limit_reached",
"reviewsFetched": 40
}

What You Can Do With It

  • Reputation tracking: watch what guests praise and complain about, hotel by hotel, over time
  • Competitive sets: pull the same review depth for a block of hotels in one district and compare the liked and disliked themes
  • Response auditing: managementResponse shows which complaints a hotel answers and how fast
  • Training and sentiment data: review text with a numeric score and the guest's own theme labels already attached

FAQ

Does a Hotels.com link work? Yes. A property's reviews are identical on Expedia, Hotels.com, Orbitz, Travelocity and Vrbo — we measured it across all four domains and every Expedia Group site ID, and the response was the same every time. Paste whichever link you have.

Where do I find the hotel ID? It is the number after .h in a hotel link. In .../Paris-Hotels-Grand-Hotel-Leveque.h5951861.Hotel-Information the ID is 5951861.

How many reviews can I get for one hotel? Set maxReviews: 0 for everything the source serves. It does occasionally stop short of the published count — on a 1,527-review property it returned 1,475 — and the summary row reports that as partial instead of hiding it.

Does it include the hotel's reply? Yes, in managementResponse, with the responder's name and date. Most reviewed hotels reply to a large share of reviews; 36 of the 40 reviews in our sample carried one.

Can I filter by date, rating or language? Not in the input. Every review comes back with date, ratingScore and originalLanguage, so filter the rows after export.

Does it return prices or availability? No. This actor is reviews only. For rates, room types and availability use the Expedia Hotels Scraper.

What happens if a hotel ID is wrong? The run continues. That hotel gets a summary row with status: "unresolved" and the other hotels still deliver their reviews.

ActorWhat it does
Expedia Hotels ScraperPrices, rooms and live rates, property details, search by city
Booking.com Reviews ScraperGuest reviews, scores and replies from Booking.com
Tripadvisor Reviews ScraperReviews for hotels, restaurants and attractions
Yelp Reviews ScraperBusiness reviews in every language, with owner replies

Support

  • 📧 Email: max@mapa.slmail.me
  • 📖 Found a bug?: Use the issues tab and describe your issue
  • 🔧 Feature Requests: Contact via email or issues tab

This scraper extracts publicly available hotel review data. Users must comply with the source's terms of service and applicable data protection regulations for their intended use.


🚀 Start Scraping Expedia and Hotels.com Reviews