Trip.com & Ctrip Reviews Scraper - Tripcom Hotels 携程 avatar

Trip.com & Ctrip Reviews Scraper - Tripcom Hotels 携程

Pricing

from $2.50 / 1,000 reviews

Go to Apify Store
Trip.com & Ctrip Reviews Scraper - Tripcom Hotels 携程

Trip.com & Ctrip Reviews Scraper - Tripcom Hotels 携程

Scrape Trip.com & Ctrip (携程) hotel reviews - guest reviews, star ratings, sub-ratings, review text, travel type, owner responses and reviewer data, with LLM-ready markdown. Structured JSON/CSV for analytics, AI and market research. No API, no login.

Pricing

from $2.50 / 1,000 reviews

Rating

5.0

(4)

Developer

FactDen

FactDen

Maintained by Community

Actor stats

5

Bookmarked

13

Total users

6

Monthly active users

2.3 days

Issues response

14 hours ago

Last modified

Share

Trip.com & Ctrip (携程) Hotel Reviews Scraper (June 2026)

Extract hotel reviews from both Trip.com (international) and hotels.ctrip.com / 携程 (China) in a single run - no login, no proxy setup, no code required.

$4 per 1,000 reviews · $0.01 per run · New Apify users get ~1,250 reviews free with the $5 platform credit.

Contents: What's different · Who it's for · Use cases · Step by step · Input · Output · Pricing · Schedule · AI agents & RAG · GDPR · FAQ · Changelog · Support


What's different

Two things no other Apify actor for Trip.com or Ctrip does today:

  • Both locales in one run. Add Trip.com URLs and hotels.ctrip.com URLs together. Each URL is processed with its native locale: Trip.com URLs return the international guest-review feed; Ctrip URLs return the Chinese guest-review feed (with reviewer.ipLocation showing Chinese provincial origin). Duplicate URLs are deduplicated silently.
  • LLM-ready markdownContent per review. Each review row carries a self-contained markdown block - rating, travel type, body, translation, and the hotel's response - ready to embed straight into a vector DB. No reformatting, no glue code.

Plus:

  • Per-review sub-ratings clubbed into a subRatings array (Cleanliness, Location, Service, Facilities) — one tidy cell in CSV.
  • Owner/management responses with response date.
  • Recommendation rate, days-since-last-negative-review, total negative review count (ORM signals for brand monitoring).
  • Reviewer credibility tier (Trip.com's "Review Specialist" / "Review Expert" badge).

No-setup checklist:

  • No login or account required
  • Apify Proxy bundled (datacenter; switch to RESIDENTIAL via the Advanced section for heavy runs)
  • No code required (form-based input in the Apify Console)
  • Pay-per-event pricing - no subscription, no commitment

What does this scraper do?

You paste hotel URLs (Trip.com or hotels.ctrip.com — mix freely, up to 500 per run). The actor returns two structured datasets:

Reviews dataset — one row per guest review, 32 data points per row:

  • Core: overallRating, ratingLabel, reviewTitle, reviewBody, travelType, checkInMonth, language
  • Sub-ratings: subRatings array — Cleanliness, Location, Service, Facilities — one labeled cell in CSV
  • Reviewer: reviewer.name, reviewer.lifetimeReviews, reviewer.tier, reviewer.ipLocation (Ctrip locale, Chinese province)
  • Management response: ownerResponse.text, ownerResponse.date
  • AI-ready: markdownContent — self-contained per-review markdown block, direct vector-DB input
  • Translation: English machine translation for Chinese-language reviews

Hotels dataset — one summary row per hotel:

  • Aggregate ratings, star classification, address, total and positive review counts
  • recommendationRate, daysSinceLastNegative, negativeReviewsCount — ORM signals

Both datasets are accessible via the Output-tab dropdown — see Output.


Why this scraper (vs the official API and other Apify scrapers)

Trip.com Group publishes no public reviews API for either Trip.com or Ctrip - scraping the public review pages is the only way to get this data at scale. Among the Apify actors that do, this is the only one that reads both locales in a single run and keeps the per-review depth most others drop:

CapabilityThis actorOther Apify Trip.com scrapersOfficial API
Trip.com (international) reviews✅ (most)❌ none
Ctrip (携程) Chinese reviews✅ same run❌ Trip.com-only
Per-review sub-ratings (cleanliness / location / service / facilities)varies
Hotel owner responsesvaries
Reviewer province via IP location (Ctrip)
Machine translation of Chinese reviewsvaries
LLM-ready markdownContent per review
No login, proxy, or anti-bot setupn/a
Pricing$4 / 1,000 reviews (from $2.50 on Business)variesn/a

The headline difference is Ctrip (携程) coverage: international tools see only the Trip.com guest pool, while this actor also reads the Chinese-domestic Ctrip corpus - same hotels, both audiences - so you can compare Chinese vs. international sentiment for one property in a single dataset.


Who this scraper is for

  • Hotel revenue managers tracking competitor properties' rating trends and sub-rating breakdowns on Trip.com.
  • OTA analysts comparing Chinese vs. international guest sentiment for the same property in one dataset.
  • AI / RAG engineers ingesting hotel reviews into vector databases - markdownContent is chunk-ready.
  • Hospitality researchers filtering by travelType, language, reviewer.ipLocation (Ctrip only), and the sub-rating dimensions for ICP-scoped datasets.
  • Brand reputation teams monitoring daysSinceLastNegative, negativeReviewsCount, and ownerResponse.text across a portfolio.

Common use cases

1. Daily sentiment monitoring for a hotel chain portfolio

{
"startUrls": [
"https://www.trip.com/hotels/macau-hotel-detail-344983/galaxy-hotel/",
"https://www.trip.com/hotels/hangzhou-hotel-detail-70492076/",
"https://hotels.ctrip.com/hotels/1286148.html"
],
"maxReviewsPerHotel": 50,
"sortBy": "mostRecent",
"fromDate": "2026-06-01"
}

Pair with the Schedule section to run nightly with fromDate set to yesterday.

2. Negative-review mining for a competitor analysis

{
"startUrls": ["https://www.trip.com/hotels/macau-hotel-detail-344983/galaxy-hotel/"],
"maxReviewsPerHotel": 500,
"sortBy": "ratingLowToHigh",
"minRating": 1,
"maxRating": 2
}

Sort lowest-rating first and cap rating at 2 to surface only the painful reviews. ownerResponse.text shows how the hotel handles complaints.

3. Chinese-market intelligence with provincial geolocation

{
"startUrls": ["https://hotels.ctrip.com/hotels/1286148.html"],
"maxReviewsPerHotel": 200,
"sortBy": "mostRecent"
}

Ctrip-locale rows carry reviewer.ipLocation (e.g., "发布于浙江" - Posted from Zhejiang), enabling province-level Chinese guest segmentation.

4. Backfill a full review history for AI / RAG ingestion

{
"startUrls": ["https://www.trip.com/hotels/macau-hotel-detail-344983/galaxy-hotel/"],
"maxReviewsPerHotel": 5000,
"sortBy": "mostRelevant"
}

The markdownContent field on each row is a self-contained chunk ready for direct embedding - see AI agents & RAG.


How to scrape Trip.com reviews - step by step

  1. Click Try for free on this actor's Apify Store page.
  2. Paste one or more Trip.com or hotels.ctrip.com hotel URLs into Hotel URLs (mix freely; up to 500 per run).
  3. Set maxReviewsPerHotel, fromDate / toDate, minRating / maxRating, and sortBy as needed.
  4. Click Start. Results stream into the Output tab in real time.
  5. Switch the Output tab dropdown between Reviews and Hotels to inspect either dataset. Download as JSON, CSV, or Excel.

Trip.com caps accessible reviews around 1,000 per high-volume hotel; completenessPct on the Hotels dataset tracks how much you got of what's exposed. See Pricing below for per-event rates and tiered discount ladder.


Input

FieldTypeDefaultDescription
startUrlsarray of URL(prefilled)Trip.com or hotels.ctrip.com hotel URLs. Mix freely. Max 500.
maxReviewsPerHotelinteger2001–5,000
sortByenummostRecentmostRelevant / mostRecent / ratingHighToLow / ratingLowToHigh
fromDatedate-YYYY-MM-DD; reviews submitted on or after
toDatedate-YYYY-MM-DD; reviews submitted on or before
minRatinginteger11–5
maxRatinginteger51–5
proxyConfigurationproxyApify Proxy (datacenter)Override to Residential for heavy runs

URL examples:

  • https://www.trip.com/hotels/macau-hotel-detail-344983/galaxy-hotel/
  • https://hotels.ctrip.com/hotels/1286148.html
  • https://hotels.ctrip.com/hotels/123456.html

Trip.com and Ctrip Hotel Reviews Scraper input form on Apify Store with emoji-rich field titles, two prefilled demo URLs (Galaxy Macau and Beijing Sofitel), date range and rating filters, and a one-line section description above each group


Output

Two named alias datasets, accessible via the Output tab dropdown in the Apify Console:

  • Reviews - one row per review (32 data points). Two table views: Overview (11 columns most users want, including the clubbed subRatings array) and AI ingest (8 LLM-ready columns including markdownContent).

Trip.com and Ctrip Hotel Reviews Scraper Reviews dataset Overview table on Apify Console showing per-review columns: hotel, reviewer, travel type, overall rating, the clubbed subRatings array, review text, recommends, and the hotel ownerResponse for Galaxy Hotel Macau

Trip.com and Ctrip Hotel Reviews Scraper Reviews dataset JSON view showing one fully structured review: a reviewer object (name, lifetimeReviews, tier, isAnonymous, ipLocation), a subRatings array (Cleanliness, Location, Service, Facilities), reviewText, recommends, and an ownerResponse object with the hotel reply text and date

  • Hotels - one summary row per hotel scraped (18 fields): aggregate ratings, sub-ratings, recommendation rate, days-since-last-negative, completeness percentage.

Trip.com and Ctrip Hotel Reviews Scraper Hotels dataset Overview table on Apify Console showing the per-hotel summary row with parsed star classification, address, aggregate ratings, the clubbed subRatings array, recommend rate, days-since-last-negative review and completeness percentage for Galaxy Hotel Macau and a Hangzhou hotel

Trip.com and Ctrip Hotel Reviews Scraper run log on Apify Store with startup banner, per-hotel progress lines, final summary showing reviews scraped and estimated cost, plus support contact in the closing block

Sample review row

{
"reviewId": "1972372932",
"hotelId": 344983,
"hotelName": "Galaxy Hotel",
"hotelUrl": "https://www.trip.com/hotels/macau-hotel-detail-344983/galaxy-hotel/",
"source": "trip",
"submittedAt": "2026-05-12T14:32:00",
"checkInMonth": "2026-04",
"reviewer": {
"name": "Sarah K.",
"lifetimeReviews": 42,
"tier": "Review Specialist",
"isAnonymous": false,
"ipLocation": null
},
"travelType": "Couple",
"roomName": "Club Room Twin Bed",
"language": "en",
"overallRating": 4.7,
"ratingLabel": "Amazing",
"subRatings": ["Cleanliness: 5", "Location: 5", "Service: 4.5", "Facilities: 4.5"],
"reviewText": "Outstanding service throughout our stay...",
"reviewTextTranslated": null,
"isMachineTranslated": false,
"recommends": true,
"usefulCount": 14,
"imagesCount": 3,
"hasVideo": false,
"ownerResponse": {
"text": "Dear valued guest, thank you for your kind words...",
"date": "2026-05-14T09:12:00"
},
"markdownContent": "# Galaxy Hotel review (Trip.com)\n\n**Rating:** 4.7/5 ★★★★☆\n**Travel type:** Couple\n\n## Review\nOutstanding service throughout our stay...\n\n## Hotel response\nDear valued guest, thank you for your kind words...",
"extractedAt": "2026-06-06T10:15:00+00:00"
}

Sample hotel summary row

{
"hotelId": 344983,
"hotelName": "Galaxy Hotel",
"source": "trip",
"url": "https://www.trip.com/hotels/macau-hotel-detail-344983/galaxy-hotel/",
"hotelStars": 5,
"hotelAddress": "Galaxy Macau, Cotai, Macau, China",
"overallRating": 4.0,
"ratingLabel": "Very good",
"reviewsCount": 356,
"displayedReviewsCount": 305,
"subRatings": ["Cleanliness: 4.1", "Location: 4.4", "Service: 3.9", "Facilities: 3.7"],
"recommendRate": 0.7,
"mostRecentNegativeDate": "2026-05-24",
"daysSinceLastNegative": 4,
"negativeReviewsCount": 40,
"reviewsExtracted": 200,
"completenessPct": 56.2,
"extractedAt": "2026-06-06T10:15:30+00:00"
}

Timestamps: submittedAt, checkInMonth, and ownerResponse.date come from Trip.com in the hotel's local time zone with no offset - we preserve them as naive ISO strings rather than mislabeling them as UTC. extractedAt is our scrape time in UTC.

📊 Free sample dataset - browse 800 real reviews (4 hotels, Trip.com + Ctrip) before you run, no account needed: HuggingFace · Kaggle.


Pricing

Pay-per-event. No subscription, no minimum spend.

EventRate
apify-actor-start$0.01 per run
apify-default-dataset-item$0.004 per review row

Effective rate: $4 per 1,000 reviews. Tiered subscription discounts reduce this automatically — down to $2.50 per 1,000 on the Business plan (37.5% off).

Cost examples:

ScopeReviewsCost
Quick validation (1 hotel, 50 reviews)50$0.21
Single hotel full history200$0.81
Competitor set (10 hotels × 100 reviews)1,000$4.01
Deep pull (10 hotels × 500 reviews)5,000$20.01

Apify's $5 new-account credit covers ~1,250 reviews on day one — enough to validate end-to-end before any spend. Incremental daily runs (50–200 new reviews per hotel) typically cost a few cents each.


How to run this Trip.com reviews API on a schedule

For continuous monitoring, daily delta refreshes, or ORM dashboards:

  1. Open the Apify Schedules tab in your Console.
  2. Add a new schedule and select this actor.
  3. Set the cron expression (e.g., 0 6 * * * for daily at 06:00 UTC).
  4. In the schedule's input override, set fromDate to a sliding window - for example, yesterday's date via Apify's {{NOW - 1.day | date('YYYY-MM-DD')}} template.
  5. (Optional) Wire an Apify webhook on ACTOR.RUN.SUCCEEDED to push the dataset into Snowflake, BigQuery, S3, or your CRM.

Combined with sortBy: "mostRecent", the actor short-circuits once it crosses the fromDate floor - incremental runs are fast and cheap.


AI agents & RAG - using the data with LLMs

The markdownContent field on every review is a self-contained markdown block - title, rating, travel type, body, translation, and hotel response inlined. Designed for direct vector-DB ingestion and LLM context windows. Capped at 100 KB per row.

Trip.com and Ctrip Hotel Reviews Scraper AI ingest LLM-ready view on Apify Console showing markdownContent column with self-contained per-review markdown chunks, original Chinese text, English translation, language code, rating, travel type and source ready for direct vector database ingestion and RAG pipelines

Use the standard Apify API or client libraries to run the actor and iterate the Reviews dataset - markdownContent is your ready-to-embed chunk.

Field glossary for AI agents

FieldWhat it carriesWhy an agent cares
markdownContentPer-review self-contained markdown chunkRAG / vector DB ingestion
subRatingsPer-review dimension scores as a labeled array, e.g. ["Cleanliness: 5", "Location: 5", "Service: 4.5", "Facilities: 4.5"]Fine-grained sentiment retrieval
travelTypeBusiness / Family / Solo / Couple / Friends / OtherICP filtering before embedding
reviewer.ipLocationChinese province (Ctrip locale only)Geographic segmentation for Chinese market
ownerResponse.textHotel management replyReputation-management agents
recommendRate (Hotels dataset)0–1 recommendation fractionNPS-style hotel-level signal
daysSinceLastNegative (Hotels dataset)Days since the most recent ≤3-star reviewRisk-scoring + alerting agents

Data sources & GDPR

This actor extracts publicly visible review data from Trip.com and hotels.ctrip.com. The reviewer.name field may contain real first names where the reviewer chose to display them publicly on Trip.com; the reviewer.ipLocation field (Ctrip locale only) contains the Chinese province-level location the reviewer published with the review. Anonymous reviewers are surfaced as reviewer.name: null + reviewer.isAnonymous: true. You are responsible for ensuring your downstream use of this data complies with GDPR, China's PIPL, and any other applicable data-protection regulations in your jurisdiction.


FAQ

How much does it cost to scrape 10,000 Trip.com reviews?

$0.01 (run start) + 10,000 × $0.004 = $40.01. New Apify accounts get a $5 credit that covers ~1,250 reviews at base tier — enough to validate the actor end-to-end before any spend. Tiered discounts reduce the per-row price automatically as your Apify plan scales.

Can I scrape multiple hotels in one run?

Yes. Paste up to 500 URLs in startUrls and mix Trip.com and hotels.ctrip.com URLs freely in the same run — the actor handles both locales concurrently. Duplicate URLs are silently dropped so you don't pay for the same hotel twice.

Does this work for Chinese-language (携程) reviews?

Yes. Paste any hotels.ctrip.com/hotels/{id}.html or hotels.ctrip.com/international/{id}.html URL and the actor returns the full Chinese guest-review feed. This includes reviewer.ipLocation (province-level origin, e.g. "Guangdong") which only appears on the Ctrip locale. Mix Trip.com and Ctrip URLs in the same run — the actor handles both in one pass.

How does this compare to other Trip.com scrapers on Apify?

Three things unique to this actor: (1) bilingual - both Trip.com and Ctrip (携程) in one run, no other scraper does both; (2) per-review sub-ratings - cleanliness / location / service / facilities scores on every row, not just the hotel-level aggregate; (3) markdownContent chunks - self-contained per-review markdown ready for direct vector DB / RAG ingestion. Plus parsed hotel star classification + address pulled from the detail page.

How fresh is the review data?

Real-time. Every run pulls fresh data from Trip.com and Ctrip directly — there is no caching layer between the upstream and your dataset. A review posted minutes ago will appear in the next run as soon as Trip.com's own indexing picks it up, typically within a few minutes.

Can I export hotel reviews to CSV or Excel?

Yes. The Output tab in Apify Console offers JSON, JSONL, CSV, Excel, and HTML downloads on both the Reviews and Hotels datasets. The Overview view is column-ordered for clean import into Google Sheets or Excel without reformatting. For large exports use the Apify API for direct dataset streaming.

Can I scrape incrementally instead of refetching everything?

Yes. Set sortBy: "mostRecent" and fromDate to your last successful scrape date. The actor stops paginating once it crosses the date floor — much faster and cheaper than a full re-scrape. Each incremental run typically costs a few cents per hotel. See Schedule for cron + webhook wiring.

How many reviews can I get per hotel?

Trip.com caps publicly accessible reviews around 1,000 per high-volume property. The Hotels dataset's completenessPct field tells you what fraction of the publicly exposed reviews you actually retrieved. For incremental monitoring syncs this limit is irrelevant — you'll capture every new review posted since your last fromDate regardless.

Do I need a Trip.com account, API key, or proxy to use this scraper?

No. Only an Apify account (free) is required. No Trip.com login, no Ctrip account, no API key, and no proxy configuration — Apify's built-in datacenter proxy is bundled and handles all anti-bot requirements automatically. You can run your first hotel review extraction in under 30 seconds with zero infrastructure setup.

This actor extracts publicly visible data - no login is required, no rate-limit bypass is performed. Whether your downstream use is permissible depends on your jurisdiction's regulations (GDPR, PIPL, CCPA, etc.) and on Trip.com's Terms of Service for the data category you're collecting. Reviewing both is your responsibility before deploying at scale.


Working with hotel and travel review data? These actors pair well with Trip.com & Ctrip Reviews Scraper:

Cross-platform hotel review coverage

Our other actors


Changelog

v1.2 - Room column in the default view (2026-06-29)

The roomName field (the room type the guest booked, e.g. "City King Room") was always scraped and present in the JSON, CSV, and API exports, but hidden from the default Overview table. It now shows as a Room column in the Overview view of both datasets, and is included in the per-review markdownContent block for LLM ingest. No schema or field changes - existing consumers are unaffected.

v1.1 - Cleaner output shape (2026-06-20)

Grouped related fields for tidier JSON and CSV exports (same data, fewer top-level columns): the four sub-ratings are now a single labeled subRatings array (e.g. ["Cleanliness: 4.9", "Location: 4.7", ...], one cell in CSV); reviewer attributes are clubbed under a reviewer object (name, lifetimeReviews, tier, isAnonymous, ipLocation); and the hotel reply is clubbed under an ownerResponse object (text, date). overallRating, ratingLabel, and all review-count fields stay flat. Breaking change for consumers that referenced the old flat field names.

v1.0 - Public launch (2026-06-08)

Initial public release. Bilingual Trip.com + Ctrip review extraction, 32-field reviews + 21-field hotels schema, LLM-ready markdownContent, pay-per-event pricing with tiered discounts.


Support & maintenance

Found this useful? Leaving a quick review on this page helps other travel-data teams discover the actor - and tells us what to build next. Thank you!

Actively maintained. Bug reports and feature requests are typically triaged within 1–2 business days.

  • Apify Issues tab - primary support channel; we get notified instantly and other users can upvote your report. Please include the run ID, one example URL, and what you expected vs what you saw.
  • Email - support@factden.com for private / billing / partnership questions.

Looking for a software-product review scraper? See our sibling actor G2 Reviews Scraper for B2B SaaS competitive intelligence.

Hiring or running labor-market research? Try our Indeed Jobs Scraper for job listings, salaries, and company profiles across 60+ countries.


Built by factden on the Apify platform. Try the Trip.com & Ctrip Reviews Scraper free with Apify's $5 monthly credit - covers ~1,250 reviews on first run.