Trip.com Hotel Reviews Scraper avatar

Trip.com Hotel Reviews Scraper

Pricing

Pay per event

Go to Apify Store
Trip.com Hotel Reviews Scraper

Trip.com Hotel Reviews Scraper

Extract public Trip.com hotel reviews, scores, guest text, translations, traveler and room details, rating breakdowns, and media signals. Export structured data or schedule hotel reputation monitoring.

Pricing

Pay per event

Rating

0.0

(0)

Developer

Stas Persiianenko

Stas Persiianenko

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

17 hours ago

Last modified

Categories

Share

Extract public Trip.com hotel reviews into clean JSON, CSV, Excel, XML, or RSS data. Supply one or more hotel URLs and receive newest guest comments, scores, room and traveler context, translations, media signals, and property rating breakdowns. No Trip.com login or private API key is required.

The Actor uses a lightweight HTTP route to Trip.com's server-rendered review pages. That makes scheduled hotel reputation monitoring fast, predictable, and inexpensive.

What does Trip.com Hotel Reviews Scraper do?

Trip.com Hotel Reviews Scraper turns public hotel review pages into structured records ready for analysis. Each result represents one guest review and retains its hotel context.

It extracts:

  • 🏨 hotel name, address, city, country, and stable hotel ID;
  • ⭐ overall score, score label, total review count, and score scale;
  • πŸ“Š location, amenities, service, and cleanliness scores;
  • 🧭 traveler, room, language, and public filter counts;
  • πŸ‘€ reviewer name, avatar, and contribution count;
  • πŸ›οΈ room type, stay month, and traveler type;
  • πŸ’¬ score, label, date, original text, language, and translation;
  • πŸ“· image count, media URLs, source URL, and scrape timestamp.

The public page currently provides up to 15 newest reviews per hotel. The Actor states this limit explicitly instead of claiming unsupported deep pagination.

Who is it for? Trip.com hotel review users

Hotel operators and reputation managers

  • Monitor fresh feedback for one property or a portfolio.
  • Route low scores and negative text into service recovery workflows.
  • Track rating changes before weekly operations meetings.

Travel agencies and hospitality consultants

  • Compare guest experience across recommended properties.
  • Find recurring comments about rooms, cleanliness, location, or service.
  • Build evidence-based destination and accommodation reports.

Market intelligence and research teams

  • Collect public review text for sentiment or topic analysis.
  • Compare traveler segments, room types, and rating dimensions.
  • Preserve dated snapshots for competitive benchmarking.

Developers and data teams

  • Feed structured reviews into warehouses, dashboards, LLMs, or alerts.
  • Run the scraper through the Apify API, schedules, webhooks, Make, or Zapier.
  • Deduplicate monitoring data with stable reviewId values.

Why use this Trip.com review extractor?

  • No login required β€” works with public hotel pages.
  • HTTP-first extraction β€” no browser overhead for the verified route.
  • Monitoring-ready records β€” stable IDs, posted dates, source URLs, and scrape timestamps.
  • Translation-aware β€” keeps original and translated text separate and records translation provenance.
  • Hotel context included β€” every review carries current property scores and count distributions.
  • Multi-property input β€” process one hotel or a portfolio in one run.
  • Flexible exports β€” use JSON, CSV, Excel, XML, RSS, or API responses.
  • Automation included β€” add schedules, webhooks, alerts, and integrations on Apify.

What Trip.com review data can you extract?

CategoryFields
HotelhotelId, hotelName, hotelAddress, hotelCity, hotelCountry
Rating summaryoverallScore, scoreScale, reviewCount, scoreLabel
DimensionsdimensionScores.location, amenities, service, cleanliness
DistributionsfilterCounts, travelerTypeCounts, roomTypeCounts, languageCounts
ReviewerreviewerName, reviewerAvatarUrl, reviewerContributionCount
StayroomType, stayDate, travelerType
ReviewreviewId, reviewScore, reviewScoreScale, reviewLabel, postedAt, text, language
TranslationtranslatedText, translationLanguage, translationProvider, hasTranslation
Media and provenancemediaCount, mediaUrls, sourceUrl, scrapedAt

Optional values are returned as null, not misleading placeholder strings. Counts come from the public filter controls present at scrape time.

How much does it cost to scrape Trip.com hotel reviews?

This Actor uses pay-per-event pricing. A run has a small start charge and then charges for each review saved. The formula-derived BRONZE rate is $0.000050584 per review; higher plans receive volume discounts. Final rates are always shown in the Apify Console before a run starts.

ExampleReviewsBRONZE item cost
One small property check5~$0.00025 plus start
One full public newest-review page15~$0.00076 plus start
Ten-property portfolio snapshot150~$0.00759 plus start

Apify's Free plan includes platform credits, so a small test is inexpensive. Start with five reviews to inspect the data shape before scheduling a portfolio workflow.

How to scrape Trip.com hotel reviews

  1. Open Trip.com and copy a public hotel detail or /review.html URL.
  2. Open this Actor in the Apify Store.
  3. Add the URL under 🏨 Trip.com hotel URLs.
  4. Choose 1–15 newest reviews per hotel.
  5. Click Start.
  6. Preview the dataset or export it as JSON, CSV, Excel, XML, or RSS.
  7. Add a schedule if you want recurring reputation monitoring.

The Actor automatically converts a normal hotel detail URL to its review page. Duplicate URLs and duplicate review IDs are emitted only once.

Input parameters

ParameterTypeRequiredDefaultDescription
startUrlsarrayYesSample hotelPublic Trip.com hotel detail or review URLs
maxReviewsPerHotelintegerNo10Newest reviews per hotel, from 1 through 15

Only public trip.com hotel-detail URLs are accepted. This prevents accidental requests to unrelated pages or private resources.

Input examples

Small first run

{
"startUrls": [
{ "url": "https://www.trip.com/hotels/singapore-hotel-detail-687499/hotel-81-tristar/review.html" }
],
"maxReviewsPerHotel": 5
}

Normal hotel detail URL

{
"startUrls": [
{ "url": "https://www.trip.com/hotels/singapore-hotel-detail-687499/hotel-81-tristar/" }
],
"maxReviewsPerHotel": 15
}

Portfolio monitoring

{
"startUrls": [
{ "url": "https://www.trip.com/hotels/singapore-hotel-detail-687499/hotel-81-tristar/review.html" },
{ "url": "https://www.trip.com/hotels/singapore-hotel-detail-996216/hotel-boss/review.html" }
],
"maxReviewsPerHotel": 15
}

Output example

{
"reviewId": "1969916536",
"hotelId": "687499",
"hotelName": "Hotel 81 Tristar",
"hotelAddress": "1 Onan Rd, Singapore, 424780, Singapore",
"hotelCity": "Singapore",
"hotelCountry": "Singapore",
"overallScore": 8.2,
"scoreScale": 10,
"reviewCount": 446,
"scoreLabel": "Very good",
"dimensionScores": {
"location": 8.7,
"amenities": 7.7,
"service": 8.4,
"cleanliness": 7.9
},
"reviewerName": "Guest User",
"reviewerContributionCount": 2,
"roomType": "Deluxe Queen Room",
"stayDate": "2026-06",
"travelerType": "Traveling with friends",
"reviewScore": 10,
"reviewScoreScale": 10,
"reviewLabel": "Outstanding",
"postedAt": "2026-06-02T11:44:34.000Z",
"text": "Hello, is a nice place to stay for relaxing...",
"language": "en",
"hasTranslation": false,
"mediaCount": 3,
"sourceUrl": "https://www.trip.com/hotels/singapore-hotel-detail-687499/hotel-81-tristar/review.html",
"scrapedAt": "2026-07-14T00:00:00.000Z"
}

The live record also includes distribution arrays, avatar and media URLs, and translation fields.

Tips for best results

  • Begin with one hotel and five reviews.
  • Use canonical hotel-detail or review URLs copied from Trip.com.
  • Schedule runs daily or weekly depending on review velocity.
  • Deduplicate downstream on reviewId when appending snapshots.
  • Compare overallScore and reviewCount between snapshots to detect changes.
  • Use text for original-language analysis and translatedText for English workflows.
  • Keep the source URL with every warehouse record for auditability.

Hotel reputation monitoring workflow

Run the Actor on a schedule and append each dataset to a long-term store. Use reviewId to identify newly observed feedback. Then calculate changes in:

  • newest low-scoring reviews;
  • overall property score;
  • total public review count;
  • cleanliness, location, amenities, and service scores;
  • traveler and room-type composition.

A webhook can trigger a Slack alert whenever a new review falls below your chosen score.

Integrations

Trip.com reviews β†’ Google Sheets

Append newest feedback to an operations sheet and filter by property, score, or traveler type.

Trip.com reviews β†’ Slack or Discord

Send an alert for new low scores, negative labels, or important translated comments.

Trip.com reviews β†’ Make or Zapier

Create tickets, update a CRM property record, or notify a hotel manager automatically.

Trip.com reviews β†’ data warehouse

Load stable review records into BigQuery, Snowflake, PostgreSQL, or another analytics system.

Scheduled runs and webhooks

Use Apify schedules for monitoring and webhooks to start downstream processing immediately after completion.

API usage with Node.js

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('automation-lab/trip-com-hotel-reviews-scraper').call({
startUrls: [{ url: 'https://www.trip.com/hotels/singapore-hotel-detail-687499/hotel-81-tristar/review.html' }],
maxReviewsPerHotel: 10,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Using the Apify API with Python

import os
from apify_client import ApifyClient
client = ApifyClient(os.environ['APIFY_TOKEN'])
run = client.actor('automation-lab/trip-com-hotel-reviews-scraper').call(run_input={
'startUrls': [{'url': 'https://www.trip.com/hotels/singapore-hotel-detail-687499/hotel-81-tristar/review.html'}],
'maxReviewsPerHotel': 10,
})
items = client.dataset(run['defaultDatasetId']).list_items().items
print(items)

Using the Apify API with cURL

curl -X POST \
"https://api.apify.com/v2/acts/automation-lab~trip-com-hotel-reviews-scraper/runs?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"startUrls":[{"url":"https://www.trip.com/hotels/singapore-hotel-detail-687499/hotel-81-tristar/review.html"}],"maxReviewsPerHotel":10}'

Use the returned dataset ID to download results after the run finishes.

Use with AI agents via MCP

This Actor is available to AI assistants through the Model Context Protocol.

For Claude Code:

$claude mcp add --transport http apify "https://mcp.apify.com?tools=automation-lab/trip-com-hotel-reviews-scraper"

For Claude Desktop, Cursor, or VS Code:

{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com?tools=automation-lab/trip-com-hotel-reviews-scraper"
}
}
}

Example prompts β€” try asking:

  • β€œUse automation-lab/trip-com-hotel-reviews-scraper to collect the newest reviews for these Trip.com hotel URLs.”
  • β€œCompare cleanliness and service scores for my Singapore hotel portfolio.”
  • β€œFind new reviews below 7/10 and summarize translated guest complaints by property.”

Your client will ask you to authenticate with Apify on first use.

Scraping public web data is generally permitted when done responsibly, but laws and website terms vary. Use the Actor only for legitimate purposes, collect the minimum data needed, respect applicable privacy and database rules, and avoid attempts to access private information. You are responsible for your input, usage, retention, and compliance with Trip.com's terms and applicable laws such as GDPR. This Actor accesses only anonymously available hotel review pages and does not bypass login controls.

Limitations

  • The Actor extracts up to 15 newest reviews exposed in the public SSR page per hotel.
  • It does not claim complete historical pagination.
  • Trip.com can change page structure or temporarily challenge automated requests.
  • Some reviews omit room type, traveler type, avatar, translation, or media.
  • Ratings and count distributions reflect Trip.com's public values at scrape time.
  • The Actor does not perform sentiment scoring; use the extracted text with your preferred model.

Troubleshooting

Why did my URL fail validation?

Use a public https://www.trip.com/hotels/...-hotel-detail-.../ URL. Search pages, account pages, shortened links, and other domains are intentionally rejected.

Why are there fewer than 15 results?

The hotel may expose fewer public reviews, duplicate review IDs may have been removed, or you selected a lower limit. Check the log and the public page.

Why is translated text null?

Trip.com only supplies a translation for some non-English reviews. The original text and language remain available.

What if Trip.com returns a temporary error?

Retry later with the same small input. The Actor performs bounded retries and reports the failing hotel URL clearly.

FAQ

How fast is the scraper?

HTTP extraction usually processes a hotel page in seconds without launching a browser. Network conditions and Trip.com response time can vary.

Does it require a Trip.com API key or account?

No. The supported v1 reads publicly rendered hotel review pages.

Can it scrape all historical reviews?

Not in this version. It intentionally returns the newest public SSR rows, up to 15 per hotel, which is useful for repeat monitoring.

How can I detect only new reviews?

Store prior reviewId values and compare them with the next scheduled dataset. Stable IDs make this straightforward.

Can I export to Excel?

Yes. Open the default dataset, click Export, and choose Excel, CSV, JSON, XML, or RSS.

Can I monitor multiple hotels?

Yes. Add multiple Trip.com hotel URLs to startUrls and schedule the Actor.

How are translations represented?

Original and translated text are separate fields, with language and provider metadata where available.

Extend your travel intelligence workflow with Automation Labs actors:

Choose only the actors needed for your workflow and verify their current availability on the Apify Store.

Data quality and responsible monitoring

Review text is user-generated and can contain opinions, errors, or sensitive context. Do not treat a single review as verified fact. Aggregate trends, retain source links, document collection times, and provide human review for consequential decisions.

For recurring analytics, keep both postedAt and scrapedAt. The first describes when Trip.com says the review was posted; the second records when your pipeline observed it.