Hotels.com Reviews Scraper - Guest Feedback & Sentiment avatar

Hotels.com Reviews Scraper - Guest Feedback & Sentiment

Pricing

from $2.15 / 1,000 results

Go to Apify Store
Hotels.com Reviews Scraper - Guest Feedback & Sentiment

Hotels.com Reviews Scraper - Guest Feedback & Sentiment

Extract hotel reviews from Hotels.com with ratings, sentiment analysis, travel companion data, reviewer info, photos & responses. Includes reviewText, reviewRating (1-10), sentiments (liked/disliked), traveledWith field, reviewDate, authorName, tripType, and managementResponse. Date filtering.

Pricing

from $2.15 / 1,000 results

Rating

5.0

(6)

Developer

Muhamed Didovic

Muhamed Didovic

Maintained by Community

Actor stats

0

Bookmarked

9

Total users

7

Monthly active users

5 days ago

Last modified

Share

Hotels.com Reviews Scraper - Extract Guest Feedback & Sentiment Data

Unlock the Full Power of Hotels.com Review Data - The only scraper you need to track, analyze, and understand hotel reviews on Hotels.com with enterprise-grade reliability and precision. Whether you're monitoring customer sentiment, tracking hotel performance, conducting hospitality research, or building review datasets, our scraper delivers comprehensive, real-time insights while saving you time and resources.

"From guest feedback to sentiment analysis, we turn Hotels.com review data into actionable business intelligence."

Overview

The Hotels.com Reviews Scraper is your go-to tool for extracting hotel review data from Hotels.com using their official GraphQL API. Ideal for hotel managers, hospitality analysts, reputation management teams, market researchers, and data scientists, it extracts detailed review information including ratings, guest feedback, sentiment analysis, travel companion data, and reviewer demographics. With easy setup and multiple export formats (JSON, CSV), it's perfect for anyone looking to gather comprehensive hotel review data from Hotels.com.

What does Hotels.com Reviews Scraper do?

The Hotels.com Reviews Scraper is a powerful tool that enables you to:

Comprehensive Review Data Collection

  • Guest Reviews
    • Extract complete review text, titles, and ratings (1-10 scale)
    • Scrape reviewer names and demographics
    • Gather travel companion information (business, family, partner, group, solo)
    • Capture trip details (stay duration, travel dates)
    • Download review photos submitted by guests
    • Extract management responses to reviews
  • Sentiment Analysis Data
    • Automatic sentiment categorization (liked/disliked aspects)
    • Extract specific feedback on cleanliness, staff & service, amenities, property conditions, room comfort
    • Identify positive and negative sentiment patterns
    • Analyze guest satisfaction metrics
    • Track sentiment trends over time

Advanced Scraping Capabilities

  • Pagination Handling: Automatically navigates through all review pages (25 reviews per page)
  • Date Filtering: Filter reviews by date range using the reviewsFrom parameter to scrape only recent reviews
  • Duplicate Detection: Smart duplicate detection prevents re-scraping the same reviews
  • Efficient Processing: Stops pagination early when date filters indicate no more relevant data
  • Multi-locale Support: Handles different locales and site IDs (US, UK, Greece, etc.)
  • GraphQL API Integration: Uses Hotels.com's official GraphQL API for reliable data extraction

Flexible Scraping Options

  • Hotel Detail Pages: Extract reviews from any Hotels.com hotel page
    • US Site: https://www.hotels.com/ho434012/hotel-anastassiou-kastoria-ellada/?locale=en_US&siteid=300000001
    • UK Site: https://www.hotels.com/ho123456/hotel-name/?locale=en_GB&siteid=300000008
    • Greek Site: https://el.hotels.com/ho434012/hotel-name/?locale=el_GR&siteid=300000021
  • Date-Filtered Scraping: Scrape only reviews from specific dates forward
    • Recent Reviews: Add reviewsFrom: "2025-01-01" to get only 2025 reviews
    • Time-based Analysis: Track review trends month-by-month or quarter-by-quarter

This tool is ideal for:

  • Hotel reputation management and monitoring
  • Competitive intelligence and benchmarking against competitors
  • Guest sentiment analysis and service improvement insights
  • Market research for hospitality industry trends
  • Review aggregation for data analytics and machine learning
  • Monitoring competitor performance and customer satisfaction
  • Building comprehensive review databases for business intelligence

Features

  • Comprehensive Review Extraction: Detailed guest reviews, ratings, sentiments, photos, and management responses
  • Multiple Data Points:
    • Review Content: Full review text, titles, and numeric ratings (1-10 scale)
    • Reviewer Information: Guest names, travel types, trip duration, and travel companion details
    • Sentiment Data: Liked/disliked aspects with automatic categorization
    • Media: Guest-uploaded photos and images from reviews
  • Advanced Filtering:
    • Date Range Filtering: Use reviewsFrom parameter to scrape only recent reviews
    • Smart Pagination: Automatically stops when reaching date cutoff or no more reviews
    • Duplicate Prevention: Built-in duplicate detection across pagination
  • Flexible Input: Supports Hotels.com URLs with various locales:
    • US, UK, Greek, and other regional Hotels.com sites
    • Automatic locale and site ID detection from URLs
  • Automatic Pagination: Handles multi-page review results automatically (25 reviews per page)
  • Efficient Processing: Concurrent scraping with configurable concurrency settings
  • Reliable Performance: GraphQL API integration with built-in retry mechanisms and proxy support
  • Structured Data Export: Download review data in JSON or CSV format for analysis

Supported Data Types

The Hotels.com Reviews Scraper extracts comprehensive review data from Hotels.com hotel pages:

  1. Guest Reviews - Complete review information with all available data

    • Example: https://www.hotels.com/ho434012/hotel-anastassiou-kastoria-ellada/?locale=en_US&siteid=300000001
    • Fields: reviewText, reviewTitle, reviewRating, reviewDate, authorName, sentiments, etc.
  2. Sentiment Analysis - Automatic categorization of guest feedback

    • Liked Aspects: "Liked: cleanliness, staff & service, room comfort"
    • Disliked Aspects: "Disliked: amenities, property conditions & facilities"
    • Sentiment Labels: Extracted from the GraphQL API's sentiment analysis
  3. Travel Companion Data - Information about who the guest traveled with

    • Examples: "Traveled with family", "Business traveler, traveled with partner", "Traveled with group"
    • Fields: traveledWith, tripType
  4. Review Media - Guest-uploaded photos and images

    • Photo URLs: High-resolution images from guest reviews
    • Management Responses: Hotel responses to guest feedback
    • Fields: photos[], managementResponse

Each review includes comprehensive metadata including hotel information, scraping timestamps, pagination data, and provider details, all fully documented in the Output Fields section below.

Quick Start

  1. Sign up for Apify: Create your free account at apify.com.
  2. Find the Scraper: Search for "Hotels.com Reviews Scraper" in the Apify Store.
  3. Configure Input: Add Hotels.com hotel URLs to the startUrls array.
  4. Run the Scraper: Execute the scraper on the Apify platform.
  5. Data Collection: The scraper will output all hotel review data in JSON or CSV format.

Input Configuration

Here's an example of how to set up the input for the Hotels.com Reviews Scraper:

{
"startUrls": [
"https://www.hotels.com/ho434012/hotel-anastassiou-kastoria-ellada/?locale=en_US&siteid=300000001",
"https://www.hotels.com/ho123456/another-hotel-name/?locale=en_US&siteid=300000001",
"https://el.hotels.com/ho789012/greek-hotel/?locale=el_GR&siteid=300000021"
],
"reviewsFrom": "2024-01-01",
"maxItems": 1000,
"maxConcurrency": 10,
"minConcurrency": 1,
"maxRequestRetries": 100,
"proxy": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"]
}
}

Input Fields Explanation

  • startUrls: Array of Hotels.com hotel URLs to scrape reviews from:
    • US Hotel: "https://www.hotels.com/ho434012/hotel-name/?locale=en_US&siteid=300000001"
    • UK Hotel: "https://www.hotels.com/ho123456/hotel-name/?locale=en_GB&siteid=300000008"
    • Greek Hotel: "https://el.hotels.com/ho789012/hotel-name/?locale=el_GR&siteid=300000021"
    • Note: The scraper automatically extracts hotel ID, locale, and site ID from URLs
  • reviewsFrom (Optional): Filter reviews by date (format: "YYYY-MM-DD"):
    • Example: "2024-01-01" - Only scrape reviews from January 1, 2024 onwards
    • Smart pagination: Automatically stops when reaching older reviews (since reviews are in chronological order)
    • Leave empty to scrape all reviews regardless of date
  • maxItems: Maximum number of reviews to scrape (default: 1000).
  • maxConcurrency: Maximum number of pages processed simultaneously (default: 10).
  • minConcurrency: Minimum number of pages processed simultaneously (default: 1).
  • maxRequestRetries: Number of retries for failed requests (default: 100).
  • proxy: Proxy configuration object for enhanced scraping reliability:
    • useApifyProxy: Set to true to use Apify's proxy service
    • apifyProxyGroups: Array of proxy groups (e.g., ["RESIDENTIAL"] for residential IPs)

Date Filtering

The reviewsFrom parameter allows you to filter reviews by date, scraping only reviews from a specific date forward. This is particularly useful for:

  • Monitoring recent guest feedback and sentiment changes
  • Tracking review trends over specific time periods
  • Reducing API calls and scraping time by focusing on recent reviews
  • Building time-series datasets for trend analysis

How Date Filtering Works

  1. Set the Date: Add reviewsFrom: "2024-01-01" to your input configuration
  2. Automatic Filtering: The scraper filters reviews based on their reviewDate field
  3. Smart Pagination: Hotels.com returns reviews in reverse chronological order (newest first)
  4. Early Stopping: When the scraper encounters a full page of reviews older than reviewsFrom, it stops pagination automatically
  5. Efficiency: This saves API calls and processing time since there's no need to check older pages

Example Use Cases

  • Recent Reviews Only: "reviewsFrom": "2025-01-01" - Get only 2025 reviews
  • Quarterly Analysis: "reviewsFrom": "2024-10-01" - Q4 2024 reviews
  • Monthly Monitoring: Run monthly with reviewsFrom set to first day of current month
  • Year-over-Year Comparison: Run separate scrapes for different year ranges

Output Structure

The scraper provides comprehensive hotel review data from Hotels.com. The output includes complete review text, ratings, reviewer information, sentiment analysis, travel companion data, photos, and management responses. Here's a breakdown of the main components:

Sample JSON Output

{
"placeName": "Hotel Anastassiou Kastoria Ellada",
"placeAddress": "",
"provider": "hotels",
"hotelId": "434012",
"hotelUrl": "https://www.hotels.com/ho434012/hotel-anastassiou-kastoria-ellada/?locale=en_US&siteid=300000001",
"reviewId": "67bf52814570c67eb5d18a8b",
"reviewText": "Nice simple stay.",
"reviewTitle": "",
"reviewDate": "2025-03-12T23:00:00.000Z",
"reviewRating": 8,
"rating": "8/10 Very good",
"authorName": "Jeffrey",
"reviewerName": "Jeffrey",
"tripType": "Stayed 1 night in Feb 2025",
"traveledWith": "Business traveler, traveled with family",
"sentiments": [
"Liked: cleanliness, staff & service"
],
"photos": [],
"page": 0,
"scrapedAt": "2026-02-06T07:04:46.691Z"
}

Output Fields Explanation

The scraper returns a comprehensive dataset for each hotel review. Below is a detailed explanation of all fields in the JSON output.

Hotel Identification

  • placeName (String): The hotel name extracted and formatted from the URL (e.g., "Hotel Anastassiou Kastoria Ellada").
  • placeAddress (String): Hotel address. Currently empty as it's not available in the reviews API response.
  • provider (String): Data source identifier, always "hotels" for Hotels.com.
  • hotelId (String): Unique hotel identifier extracted from the URL (e.g., "434012" from /ho434012/).
  • hotelUrl (String): Complete Hotels.com URL for the hotel property page.

Review Identification

  • reviewId (String): Unique identifier for the review assigned by Hotels.com (e.g., "67bf52814570c67eb5d18a8b").
  • page (Number): Pagination page number where this review was found (0-indexed, e.g., 0 for first page, 1 for second page).

Review Content

  • reviewText (String): The main body text of the guest review. This is the detailed feedback written by the guest.
  • reviewTitle (String): Optional title or headline for the review. May be empty if the guest didn't provide a title.

Rating Information

  • reviewRating (Number): Numeric rating value extracted from the rating string (1-10 scale). Example: 8 from "8/10 Very good".
  • rating (String): Full rating string as displayed on Hotels.com, including the descriptive text (e.g., "8/10 Very good", "10/10 Exceptional", "4/10 Fair").

Reviewer Information

  • authorName (String): The name of the guest who wrote the review. May be a real name or "Verified traveler" for anonymous reviews.
  • reviewerName (String): Duplicate of authorName field maintained for compatibility.

Travel Details

  • reviewDate (String): ISO 8601 timestamp of when the review was posted (e.g., "2025-03-12T23:00:00.000Z").
  • tripType (String): Description of the stay duration and timing (e.g., "Stayed 1 night in Feb 2025", "Stayed 3 nights in Jul 2025").
  • traveledWith (String|null): Information about the guest's travel companion(s):
    • Examples: "Business traveler, traveled with family", "Traveled with partner", "Traveled with group"
    • null if the information is not available
    • Extracted from supportingMessages using regex pattern matching for "traveled with" or "travelled with"

Sentiment Analysis

  • sentiments (Array of Strings): Hotels.com's automatic sentiment categorization of the review:
    • Positive feedback: "Liked: cleanliness, staff & service, property conditions & facilities, room comfort"
    • Negative feedback: "Disliked: amenities, property conditions & facilities"
    • May be an empty array if no sentiment data is available
    • Multiple sentiment strings can be present in the array

Review Media

  • photos (Array of Strings): URLs of photos uploaded by the guest with their review:
    • High-resolution image URLs hosted on Hotels.com CDN
    • Example: ["https://a.travel-assets.com/ugc/hotel-reviews/s1155-pd9012fd0-original.jpg"]
    • Empty array if the review has no photos

Hotel Response

  • managementResponse (String|undefined): The hotel management's official response to the review:
    • Contains the full text of the hotel's reply to guest feedback
    • undefined if the hotel hasn't responded to the review

Metadata

  • scrapedAt (String): ISO 8601 timestamp of when the data was scraped (e.g., "2026-02-06T07:04:46.691Z").

Field Details and Examples

placeName

Automatically extracted from the hotel URL path and formatted for readability:

  • URL: /ho434012/hotel-anastassiou-kastoria-ellada/
  • Result: "Hotel Anastassiou Kastoria Ellada"

reviewRating vs rating

  • reviewRating: Numeric value only (1-10) → 8
  • rating: Full descriptive string → "8/10 Very good"

traveledWith Field

Captures who the guest traveled with, providing valuable demographic insights:

  • Business + Family: "Business traveler, traveled with family"
  • Couples: "Traveled with partner"
  • Families: "Traveled with family"
  • Groups: "Traveled with group"
  • Solo: "Business traveler" (without additional travel companions)
  • Not specified: null

This field is particularly useful for:

  • Analyzing review sentiment by traveler type
  • Understanding target demographics
  • Tailoring hotel services to guest types
  • Identifying patterns in feedback by travel companion

sentiments Array

Provides pre-categorized feedback in these aspects:

  • cleanliness: Room and property cleanliness
  • staff & service: Employee interactions and service quality
  • amenities: Hotel facilities and features
  • property conditions & facilities: Building maintenance and infrastructure
  • room comfort: Bed quality, temperature control, noise levels

Example with multiple sentiments:

"sentiments": [
"Liked: cleanliness, staff & service, room comfort",
"Disliked: amenities"
]

photos Array

Guest-uploaded images provide visual feedback:

  • Empty array: No photos uploaded with review
  • With photos: Array of CDN URLs to high-resolution images
  • Useful for: Visual sentiment analysis, property condition verification, identifying recurring issues

Use Cases by Field

Reputation Management

Monitor these fields: reviewRating, sentiments, reviewText, reviewDate

Competitor Analysis

Compare: reviewRating, sentiments, traveledWith across properties

Service Improvement

Analyze: sentiments, reviewText, managementResponse patterns

Demographic Insights

Study: traveledWith, tripType, authorName distributions

Time-Series Analysis

Track: reviewDate, reviewRating, sentiments over time periods

Response Rate Monitoring

Calculate: Percentage of reviews with managementResponse present

Technical Notes

  • Pagination: Reviews are returned 25 per page (page field tracks this)
  • Chronological Order: Reviews are in reverse chronological order (newest first)
  • Duplicate Prevention: Built-in deduplication using reviewId
  • Date Filtering: reviewsFrom parameter filters on reviewDate field
  • Locale Support: Works with any Hotels.com locale (en_US, en_GB, el_GR, etc.)
  • GraphQL API: Data comes from Hotels.com's official ProductReviewsList operation
  • Null Handling: Fields like traveledWith and managementResponse may be null/undefined

Troubleshooting

Common Issues

No reviews returned

  • Check if the hotel URL is correct and hotel ID is valid
  • Verify the hotel has reviews on Hotels.com
  • Check if locale and site ID match the URL

Pagination stops early

  • This is expected behavior when using reviewsFrom date filtering
  • Check logs to see if date cutoff was reached
  • Verify review dates in output match expectations

Rate limiting errors

  • Reduce maxConcurrency to 1-3
  • Ensure you're using residential proxies
  • Add delays between requests if needed

Missing fields in output

  • Some fields like traveledWith or photos may be null/empty
  • This is normal - not all reviews have all data
  • Check the actual Hotels.com page to verify data availability

Roadmap

Future enhancements being considered:

  • Hotel details extraction (not just reviews)
  • Price tracking features
  • Availability checking
  • Multi-hotel comparison reports
  • Sentiment scoring algorithms
  • Review photo downloading
  • Translation services integration

Explore More Scrapers

If you found this Apify Smartbuyglasses Scraper useful, be sure to check out our other powerful scrapers and actors at memo23's Apify profile. We offer a wide range of tools to enhance your web scraping and automation needs across various platforms and use cases.

Support

Additional Services