Trip.com & Ctrip Hotel Reviews Scraper
Pricing
from $2.25 / 1,000 reviews
Trip.com & Ctrip Hotel Reviews Scraper
Trip.com & Ctrip hotel reviews scraper — pull guest reviews with overall + sub-ratings, review text, check-in dates, travel type, photos and hotel replies. Search by city or hotel URL. Structured JSON/CSV for analytics and AI.
Pricing
from $2.25 / 1,000 reviews
Rating
0.0
(0)
Developer
SIÁN OÜ
Maintained by CommunityActor stats
1
Bookmarked
2
Total users
1
Monthly active users
11 days ago
Last modified
Categories
Share
Trip.com & Ctrip Hotel Reviews Scraper — Hotels, Ratings & Guest Feedback 🚀
🎉 Scrape guest reviews from Asia's largest OTA — ratings, sub-scores, photos & hotel replies in one run
Built for hotel marketers, revenue managers and China-travel researchers who need structured review data fast
🔎 What is the Trip.com & Ctrip Hotel Reviews Scraper — and when should you use it?
The Trip.com & Ctrip Hotel Reviews Scraper turns hotel reviews and city hotel records from Trip.com into clean, structured rows you can filter, export and feed straight into a spreadsheet, database or AI agent. No account, no portal API key, no browser automation to maintain.
Use it when you need: guest ratings, review text, photos, check-in dates and hotel replies. City discovery supplies hotel IDs, names, scores and locations for a follow-up review run.
Use something else when: you need flight fares or room bookings. This actor returns hotel review and discovery records. It does not book rooms or collect flight fares.
🤖 Use with AI agents
Already connected to the Apify MCP server? Just ask for this Actor by name: sian.agency/ctrip-trip-hotel-reviews-scraper
Your agent can pay for its own runs. This Actor is eligible for agentic payments, so an agent can discover it, run it and settle the bill over x402 (USDC on Base) or Skyfire — without an Apify account or API token of its own. Billing is the same either way: per successful row, never for errors.
Otherwise copy this prompt into Claude, ChatGPT, Cursor or any MCP-enabled assistant:
I want Trip.com hotel reviews and city hotel discovery records using the Apify Actor `sian.agency/ctrip-trip-hotel-reviews-scraper`.Use it when I need: guest ratings, review text, photos, check-in dates and hotel replies. City discovery supplies hotel IDs, names, scores and locations for a follow-up review run.Don't use it when: This actor returns hotel review and discovery records. It does not book rooms or collect flight fares.How to call it: choose hotelReviews with hotelUrlOrId for a single hotel, or cityHotels with cityName. Set maxPages to bound review pagination and maxHotels to bound city discovery. Enable scrapeReviewsForCityHotels to fetch reviews for discovered hotels.Start with this input:{"operation": "hotelReviews","hotelUrlOrId": "702258","maxPages": 1}Ask me which hotel or city to cover and how many review pages to collect, then run the Actor and summarise the results as a table.
Things you can ask your agent for:
- Collect the first page of guest reviews for hotel 702258.
- Find hotels in Beijing with their ratings and locations.
- Compare recent guest comments and hotel replies for a property.
Machine-readable API, MCP config and OpenAPI definition for this Actor are published at apify.com/sian.agency/ctrip-trip-hotel-reviews-scraper.md.
📋 Overview
Trip.com & Ctrip Hotel Reviews Scraper pulls guest reviews from any Trip.com / Ctrip hotel — by hotel URL, hotel ID, or automatic city discovery — and returns clean, analysis-ready rows. No login, no API key, no browser overhead.
Why professionals choose us:
- ✅ Every review, richly structured: overall rating + 4 sub-ratings (location, facility, service, room), review text, language, travel type, check-in date, photos
- ⚡ Fastest architecture in the niche: direct API calls — 10 reviews per request, no headless browser, no wasted compute
- 🎯 City → hotels → reviews in one run: paste a city name, discover hotels with scores & review counts, optionally pull every review automatically
- 💬 Owner replies included: hotel management responses and reply dates on every review that has one
- 👤 Reviewer enrichment: reviewer region, Trip.com member level (Diamond…), review-expert grade and lifetime review count
- 💰 Pay-per-review pricing — you're only charged for successful rows, never for errors
✨ Features
- 🏨 Hotel Reviews by URL or ID — paste any Trip.com hotel URL (
https://us.trip.com/hotels/detail/?hotelId=702258) or just the ID - 🔎 City Hotel Discovery — type
Beijing,Tokyo,Barcelonaor香港and get the city's top 5 hotels with score, review count and location - 💬 Bulk mode — discover a city's hotels AND scrape reviews for each in a single run
- ⭐ Sub-rating breakdown — location / facility / service / room scores per review
- 🖼️ Review photos — full-resolution image URLs per review
- 🌐 Language control — English or Chinese output labels; per-review language tag always included
- 📄 Deep pagination — up to 100 pages (~1,000 reviews) per hotel
- 🧾 Room-type context — which room the guest booked, when available
- 📊 Hotel aggregates — property-level score & total review count stamped on every row
- 🤖 API-first — call from Node, Python, cURL, n8n, Zapier or Make
🎬 Quick Start
Open the actor, choose an operation, run. That's it.
curl -X POST 'https://api.apify.com/v2/acts/sian.agency~ctrip-trip-hotel-reviews-scraper/runs?token=YOUR_TOKEN' \-H 'Content-Type: application/json' \-d '{"operation":"hotelReviews","hotelUrlOrId":"https://us.trip.com/hotels/detail/?hotelId=702258","maxPages":3}'
🚀 Getting Started (3 Simple Steps)
Step 1: Pick your entry point
Have a hotel URL or ID? Use Hotel Reviews. Only know the city? Use City Hotels.
Step 2: Configure
Set maxPages (10 reviews per page). For city mode, optionally enable review scraping for every discovered hotel.
Step 3: Run & export
Get clean JSON/CSV/Excel from the Apify dataset.
That's it! In under a minute, you'll have:
- Review text with ratings and sub-scores
- Reviewer profiles (region, level, grade)
- Owner replies and photo URLs
📥 Input Configuration
| Field | Type | Required | Description |
|---|---|---|---|
| operation | select | Yes | hotelReviews or cityHotels |
| hotelUrlOrId | string | for hotelReviews | Trip.com hotel URL or numeric hotel ID |
| cityName | string | for cityHotels | City name, English or Chinese |
| scrapeReviewsForCityHotels | boolean | No | Also scrape reviews for each discovered hotel |
| maxHotels | integer | No | Max hotels per city (1-25, default 10). Trip.com shows up to 5 per city |
| maxPages | integer | No | Review pages per hotel (1-100, default 5; 10 reviews/page) |
| language | select | No | en-US (default) or zh-CN output labels |
Example — single hotel:
{"operation": "hotelReviews","hotelUrlOrId": "https://us.trip.com/hotels/detail/?hotelId=702258","maxPages": 5}
Example — city discovery + reviews:
{"operation": "cityHotels","cityName": "Beijing","scrapeReviewsForCityHotels": true,"maxHotels": 10,"maxPages": 3}
📤 Output
Results are saved to the Apify dataset with 25+ fields per review row:
| Field | Type | Description |
|---|---|---|
| reviewId | string | Unique review ID |
| hotelId / hotelName | string | Hotel identifiers |
| rating | number | Overall score (0-10) |
| ratingLocation/Facility/Service/Room | number | Sub-scores |
| content | string | Full review text |
| language | string | Review language tag |
| travelType | string | Family, Business, Solo… |
| checkinDate / createdDate | string | Stay & review dates |
| thumbnail | string | First review photo (preview) |
| imageUrls | array | Review photo URLs |
| ownerReply / ownerReplyDate | string | Hotel management response |
| reviewerName / reviewerRegion | string | Reviewer profile |
| reviewerLevel / reviewerGrade | string | Diamond, Review Expert… |
| hotelScore / hotelReviewCount | number/integer | Property aggregates |
Example:
{"status": "success","platform": "tripcom","reviewId": "2091351994","hotelId": "702258","rating": 10,"ratingText": "Outstanding","content": "Good location if you want to go to the Central Phuket. Room is spacious and clean…","language": "en","travelType": "Family","checkinDate": "2026-09-01 00:00:00","createdDate": "2026-09-04 16:59:27","reviewerName": "BeccaSavingMemories","reviewerRegion": "Malaysia","reviewerLevel": "Diamond","hotelName": "Dara Hotel","hotelScore": 8.8,"hotelReviewCount": 1896,"ownerReply": null}
💼 Use Cases & Examples
1. Competitive Benchmarking
A revenue manager at a Bangkok resort tracks competitor guest scores weekly. Input: 5 rival hotel IDs. Output: sub-rating deltas (service 8.9 vs our 9.2). Use: target service training where the gap closes revenue.
2. Guest Sentiment Mining
A data analyst at a hotel group exports 10,000 multilingual reviews for NLP. Input: city mode, reviews on. Output: tagged corpus with language + travel type. Use: topic modeling on complaints by segment.
3. China Market Entry Research
A Western brand entering China studies which properties guests praise in Shanghai. Input: Shanghai, discovery only. Output: ranked hotels with scores and locations. Use: shortlist partnership targets.
4. Reputation Monitoring
A small chain's GM runs monthly for their 3 properties. Input: 3 hotel IDs. Output: new reviews with owner-reply status. Use: catch unanswered negatives within days, not quarters.
5. LLM Training & RAG
An AI team builds a hospitality sentiment model. Input: bulk hotel IDs. Output: rating + text + metadata pairs. Use: fine-tuning or grounding a guest-experience copilot.
🔗 Integration Examples
JavaScript/Node.js
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_TOKEN' });const run = await client.actor('sian.agency/ctrip-trip-hotel-reviews-scraper').call({operation: 'hotelReviews',hotelUrlOrId: '702258',maxPages: 5,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items[0]);
Python
from apify_client import ApifyClientclient = ApifyClient('YOUR_TOKEN')run = client.actor('sian.agency/ctrip-trip-hotel-reviews-scraper').call(run_input={'operation': 'cityHotels', 'cityName': 'Beijing','scrapeReviewsForCityHotels': True, 'maxPages': 2})for item in client.dataset(run['defaultDatasetId']).iterate_items():print(item)
cURL
curl -X POST 'https://api.apify.com/v2/acts/sian.agency~ctrip-trip-hotel-reviews-scraper/runs?token=YOUR_TOKEN' \-H 'Content-Type: application/json' \-d '{"operation":"hotelReviews","hotelUrlOrId":"702258","maxPages":2}'
Automation Workflows (n8n / Zapier / Make)
- Trigger: schedule (weekly) or webhook
- HTTP Request: call the actor API with your hotel list
- Process: filter rows by rating < 7
- Action: Slack alert / sheet append / dashboard update
📊 Performance & Pricing
Try it now
Every run starts cheap and scales with volume — you pay only for successful rows, never for errors.
Pay-per-result
- $0.003 per review (Bronze) — volume discounts apply automatically on higher plans
- $0.002 per discovered hotel in city mode
- Errors are never charged
💰 In-pack pricing with the niche's top actors — with a faster architecture and richer rows.
❓ Frequently Asked Questions
Q: How many reviews can I scrape? A: Up to 100 pages (~1,000 reviews) per hotel per run, and unlimited hotels via repeat runs.
Q: Trip.com or Ctrip — which one does this cover? A: Both — they share one inventory system. Any hotel visible on trip.com works, including China domestic properties.
Q: Do I need a login or API key? A: No. Everything runs on Apify's infrastructure with rotating residential proxies built in.
Q: What languages are the reviews in?
A: Whatever guests wrote — each row carries a language tag. Set output labels to English or Chinese.
Q: What output formats are available? A: JSON, CSV, Excel — export directly from the Apify dataset.
Q: Is this legal? A: We only extract publicly visible reviews. See our legal section.
Q: How fast is it? A: ~10 reviews per request with polite pacing — a 500-review hotel takes under 2 minutes.
🐛 Troubleshooting
"No reviews found for this hotel ID"
- The ID may be from a property not bookable on the international site. Open the hotel page on us.trip.com to confirm it exists there, then copy the ID from the URL.
City returned no hotels
- Type the city as you would in Trip.com's search box, in English (
Beijing, notPeking) or Chinese (北京).
Run failed with a blocking message
- The data source occasionally throttles. Retry in a few minutes — retries are automatic within a run.
⚠️ Trademark Disclaimer
This actor is an independent tool and is not affiliated with, endorsed by, or sponsored by Trip.com Group or Ctrip. Trip.com® and Ctrip® are trademarks of their respective owners, referenced under nominative fair use to describe the data source.
⚖️ Is it legal to scrape data?
Our actors are ethical and do not extract any private user data, such as email addresses, gender, or location. They only extract what the user has chosen to share publicly. We therefore believe that our actors, when used for ethical purposes by Apify users, are safe.
However, you should be aware that your results could contain personal data. Personal data is protected by the GDPR in the European Union and by other regulations around the world. You should not scrape personal data unless you have a legitimate reason to do so. If you're unsure whether your reason is legitimate, consult your lawyers.
You can also read Apify's blog post on the legality of web scraping.
🤝 Support
Join our active support community
- For issues or questions, open an issue in the actor's repository
- Check SIÁN Agency Store for more automation tools
- 📧 apify@sian-agency.online
Built by SIÁN Agency | More Tools