
Waze Traffic Scraper
scrape.ly/store/cornerledger/waze-scraperTravelAutomotive
1 monthly user

Scrape Trip.com and Ctrip hotel reviews: rating, sub scores, review text with Trip.com's translation, date, traveler and room type, hotel replies, photos, reviewer info and the hotel's overall scores. Sort, date, sentiment, traveler and language filters. No login.
Turn any Trip.com or Ctrip (携程) hotel page into a clean table of guest reviews: rating and sub scores, the original text plus Trip.com's own translation, stay date, traveler and room type, the hotel's reply, photos, reviewer details and the hotel's overall scores. Paste hotel links, set how many reviews you want, and get JSON, CSV or Excel in seconds. No login, no browser, and you only pay for the reviews you save.
| Field | What it does |
|---|---|
hotelUrls | Trip.com / Ctrip hotel links or hotel ids, e.g. https://www.trip.com/hotels/shanghai-hotel-detail-346403/grand-hyatt-shanghai/, https://hotels.ctrip.com/hotels/426595.html, 346403 |
maxReviewsPerHotel | Reviews to save per hotel (default 20, 0 = all) |
sortBy | mostRelevant, mostRecent, ratingHighToLow, ratingLowToHigh |
cutoffDate | Only reviews on or after this date (2026-01-31) or period (30 days) |
reviewType | all, positive, negative, withPhotos |
travelerType | all, business, couple, family, friends, solo, bookedForOthers, other |
reviewLanguage | Only reviews written in one language (en, zh, ko, ja, ...) |
translationLanguage | Language of translatedContent and labels (en-US, de-DE, ja-JP, ...) |
includeRepeatReviews | Also return guests' extra reviews from later stays |
includeHotelDetails | Add hotel name, city, country, stars, address and coordinates (default on) |
{
"hotelUrls": [
"https://www.trip.com/hotels/shanghai-hotel-detail-346403/grand-hyatt-shanghai/",
"https://hotels.ctrip.com/hotels/426595.html"
],
"maxReviewsPerHotel": 100,
"sortBy": "mostRecent",
"cutoffDate": "2026-09-01",
"reviewType": "all",
"translationLanguage": "en-US"
}
One row per review.
| Field | Description |
|---|---|
id, hotelId, hotelName, hotelUrl, city, country | Review id and the hotel it belongs to |
rating, ratingMax, commentLevel | Guest's score out of 10 and the rating word |
ratingCleanliness, ratingAmenities, ratingLocation, ratingService | Guest's sub scores |
content, language | Review text as written and its language |
translatedContent, translatedLanguage, translateFromRealReview | Trip.com's translation (when the text is in another language) |
createDate, checkInDate | Review date and check-in month |
travelType, travelTypeText, roomName, roomId | Traveler type and the room booked |
recommend, usefulCount | Recommends the hotel; helpful votes |
imageList, videoList | Full-size photo and video links |
feedbackContent, feedbackLanguage, feedbackCreateDate | The hotel's reply |
followUpContent, followUpCreateDate | The guest's later follow-up comment |
userNickName, userRegion, userCommentCount, userLevel, userAvatarUrl | Public reviewer details |
aggregateReviewScore, aggregateReviewDescription, aggregateReviewCount, aggregateReviewSubScore | The hotel's overall score, rating word, review count and sub scores |
hotelStar, hotelAddress, hotelLatitude, hotelLongitude | Hotel details |
reviewSource, locale, scrapedAt | Source platform, translation language used, scrape time |
{
"id": 2134272597,
"hotelId": "346403",
"hotelName": "Grand Hyatt Shanghai",
"hotelUrl": "https://www.trip.com/hotels/detail/?hotelId=346403",
"city": "Shanghai",
"country": "China",
"rating": 10,
"ratingMax": 10,
"commentLevel": "Outstanding",
"ratingCleanliness": 10,
"ratingAmenities": 10,
"ratingLocation": 10,
"ratingService": 10,
"recommend": true,
"content": "1999年的金茂君悦年頭長了,降低了期望值。其實不錯的……",
"language": "zh",
"translatedContent": "Although the Grand Hyatt Jin Mao, built in 1999, is showing its age—which lowered our expectations—it actually turned out to be a great stay. ...",
"translatedLanguage": "en",
"translateFromRealReview": "Translation provided by AI",
"createDate": "2026-10-09 16:42:41",
"checkInDate": "2026-10-01 00:00:00",
"travelType": 70,
"travelTypeText": "Couple",
"roomName": "Club Room Queen Bed",
"roomId": 301750431,
"usefulCount": 0,
"imageList": ["https://ak-d.tripcdn.com/images/0233b12000u3zzt89AC94_W_1280_853_R5_Q70.jpg?proc=autoorient"],
"videoList": [],
"feedbackContent": "尊敬的賓客:感謝您……",
"feedbackLanguage": "zh",
"feedbackCreateDate": "2026-10-09 00:00:00",
"userNickName": "Traveler A.",
"userRegion": "China",
"userCommentCount": 30,
"userLevel": "Review Expert",
"reviewSource": "ctrip",
"aggregateReviewScore": 9.4,
"aggregateReviewMax": 10,
"aggregateReviewDescription": "Outstanding",
"aggregateReviewCount": 18859,
"aggregateReviewSubScore": [
{"name": "Cleanliness", "score": 9.5},
{"name": "Amenities", "score": 9.2},
{"name": "Location", "score": 9.5},
{"name": "Service", "score": 9.2}
],
"hotelStar": 5,
"hotelAddress": "No. 88 Shiji Avenue (Check-in, 54th Floor), Pudong New Area, Shanghai, 200121, China",
"hotelLatitude": 31.235151,
"hotelLongitude": 121.506082
}
You pay $3.00 per 1,000 reviews ($0.003 per review saved), plus a small platform usage fee for compute and proxy traffic. Example: 1,000 reviews ≈ $3.00 in review fees plus well under a cent of usage. Filtered-out reviews and failed requests are never charged, and the run stops cleanly when your maximum charge per run is reached.
Is it legal to scrape Trip.com reviews? The actor reads public reviews that anyone can see without an account. Check that your use follows applicable laws and the site's terms, especially for personal data such as reviewer nicknames.
Do I need a Trip.com account or a proxy? No account. A datacenter proxy is preset and works; if datacenter exits are refused, the run switches to residential exits by itself.
How many reviews can I get? All of them: set Max reviews per hotel to 0. Large hotels have tens of thousands of reviews. Trip.com hides "repeat" reviews (a guest's later stays) by default; turn on Include repeat reviews to get them too.
Why is translatedContent empty on some reviews?
Trip.com only translates reviews written in another language than the one you chose, and very new reviews are sometimes not translated yet. The original text is always in content.
Do Ctrip links work? Yes. hotels.ctrip.com and m.ctrip.com hotel links, every Trip.com country site (uk.trip.com, de.trip.com, ...) and bare hotel ids all point to the same review pool.
Can I schedule it or use the API? Yes. Schedule the actor (daily with Most recent and Reviews newer than: 1 day is a good monitoring setup) or start runs from the API and read the dataset as JSON, CSV or Excel.
Every field below can be set in the run form, passed through the API, or saved as a task. Unset fields fall back to the defaults shown.
hotelUrlsarrayOptionalHotel URLs or ids
Trip.com or Ctrip hotel pages, one per line, e.g. https://www.trip.com/hotels/shanghai-hotel-detail-346403/grand-hyatt-shanghai/, https://hotels.ctrip.com/hotels/426595.html or https://uk.trip.com/hotels/detail/?hotelId=346403. A bare hotel id (346403) works too. Any Trip.com country site is fine.
maxReviewsPerHotelintegerOptionaldefault 20Max reviews per hotel
How many reviews to save (and pay for) per hotel. 0 means every review the hotel has; big hotels have tens of thousands.
sortByenumOptionaldefault "mostRelevant"Sort reviews by
The order Trip.com returns reviews in. Most recent is the fastest way to collect only new reviews together with the date cutoff.
Narrow the reviews by date, sentiment, traveler type or language. The filters run on Trip.com's side, so you only pay for matching reviews.
cutoffDatestringOptionalReviews newer than
Only reviews written on or after this date (YYYY-MM-DD), or a relative period such as "30 days" or "6 months". Empty means no date limit.
reviewTypeenumOptionaldefault "all"Review type
All reviews, only positive or only negative ones, or only reviews with photos or videos.
travelerTypeenumOptionaldefault "all"Traveler type
Only reviews from one kind of trip.
reviewLanguageenumOptionaldefault "all"Review language
Only reviews originally written in this language.
Translation language, repeat reviews and hotel details.
translationLanguageenumOptionaldefault "en-US"Translate reviews to
Trip.com's own translation of each review (translatedContent) and the labels (traveler type, room names, rating words) come in this language. The original text is always kept in content.
includeRepeatReviewsbooleanOptionaldefault falseInclude repeat reviews
Also return the extra reviews a guest wrote for the same hotel on later stays. Trip.com hides them by default.
includeHotelDetailsbooleanOptionaldefault trueAdd hotel details
Add the hotel's name, city, country, star rating, address and coordinates to every review (one extra request per hotel).
proxyConfigurationobjectOptionaldefault {"useScrapelyProxy":true,"scrapelyProxyGroups":["DATACENTER…Proxy configuration
Proxy for the requests. Datacenter works for Trip.com; the run switches to residential exits by itself if datacenter exits are refused.
Every run writes its results to a dataset. Preview it in the dashboard, then export it or read it through the API.
| Field | Type | Description |
|---|---|---|
| id | number | null | Review id |
| hotelId | string | null | Hotel id |
| hotelName | string | null | Hotel name |
| hotelUrl | string | null | Hotel page |
| city | string | null | City |
| country | string | null | Country |
| rating | number | null | Guest rating (out of ratingMax) |
| ratingMax | number | null | Rating scale maximum (10) |
| commentLevel | string | null | Rating word, e.g. Outstanding |
| ratingCleanliness | number | null | Guest's cleanliness score |
| ratingAmenities | number | null | Guest's amenities score |
| ratingLocation | number | null | Guest's location score |
| ratingService | number | null | Guest's service score |
| recommend | boolean | null | Guest recommends the hotel |
| content | string | null | Review text as written |
| language | string | null | Language of the review text |
| translatedContent | string | null | Trip.com translation of the review |
| translatedLanguage | string | null | Language of the translation |
| translateFromRealReview | string | null | Translation note |
| createDate | string | null | Review date |
| checkInDate | string | null | Check-in month |
| travelType | number | null | Traveler type id |
| travelTypeText | string | null | Traveler type |
| roomName | string | null | Room type booked |
| roomId | number | null | Room type id |
| usefulCount | number | null | Helpful votes |
| imageList | array | null | Review photo URLs |
| videoList | array | null | Review video URLs |
| feedbackContent | string | null | Hotel's reply |
| feedbackTranslateContent | string | null | Translated hotel reply |
| feedbackLanguage | string | null | Hotel reply language |
| feedbackCreateDate | string | null | Hotel reply date |
| followUpContent | string | null | Guest's follow-up comment |
| followUpCreateDate | string | null | Follow-up date |
| userNickName | string | null | Reviewer nickname |
| userRegion | string | null | Reviewer country or region |
| userCommentCount | number | null | Reviews written by the reviewer |
| userLevel | string | null | Reviewer badge |
| userAvatarUrl | string | null | Reviewer avatar |
| reviewSource | string | null | Review source (ctrip or trip) |
| locale | string | null | Translation language used |
| scrapedAt | string | null | Scrape time (UTC) |
| aggregateReviewScore | number | null | Hotel overall score |
| aggregateReviewMax | number | null | Hotel score scale maximum |
| aggregateReviewDescription | string | null | Hotel overall rating word |
| aggregateReviewCount | number | null | Hotel review count |
| aggregateReviewSubScore | array | null | Hotel sub scores (cleanliness, amenities, location, service) |
| hotelStar | number | null | Hotel star rating |
| hotelAddress | string | null | Hotel address |
| hotelLatitude | number | null | Hotel latitude |
| hotelLongitude | number | null | Hotel longitude |
You pay for the events the actor reports, such as each result or page it produces. Platform usage is included in the event prices.
| Event | Charged when | Price |
|---|---|---|
| Review | One hotel review saved to the dataset with its rating, text, translation, hotel reply, photos and hotel scores. | $0.003 |
Run this actor from your own code. Swap in your API token and the examples work as-is.
import { ScrapelyClient } from 'scrapely-client'
const client = new ScrapelyClient({ token: process.env.SCRAPELY_TOKEN })
// Start the actor and wait for the run to finish.
const run = await client.actor('roamandroof/trip-com-scraper').call({
"hotelUrls": [
"https://www.trip.com/hotels/shanghai-hotel-detail-346403/grand-hyatt-shanghai/"
],
"maxReviewsPerHotel": 20,
"proxyConfiguration": {
"useScrapelyProxy": true,
"scrapelyProxyGroups": [
"DATACENTER"
]
}
})
// Read the dataset the run produced.
const { items } = await client.dataset(run.defaultDatasetId).listItems()
console.log(items)Tokens live in your account settings. Keep them server-side: a token carries the full permissions of your account.
Connect the Scrape.ly MCP server once and your agent can run this actor as a tool. Pick your tool:
Fetch scrape.ly/agents.md and run roamandroof/trip-com-scraperPaste into Claude Code, Codex, Cursor or any AI agent. It signs you in once in the browser.
{
"mcpServers": {
"scrapely": {
"url": "https://api.scrape.ly/mcp?tools=actors,runs,storage,docs&actors=roamandroof/trip-com-scraper"
}
}
}No key in the file: your client opens the browser to sign you in the first time it connects.
Inputs the developer prepared for common jobs. Open one to see its input, then copy it to your account to run it as-is or adjust it.
The 10 latest guest reviews of Grand Hyatt Shanghai, newest first.
Paste a hotels.ctrip.com link and get its guest reviews with English translations.
Only reviews written in the past week, newest first: a daily monitoring setup.
Server-side filters: positive reviews, business trips, written in English.
Negative reviews from families, lowest rating first, to find recurring problems.
Reviews of a London hotel with Trip.com's German translations and labels.
A Tokyo and a Shanghai hotel by id and link, translated to Japanese.
Scrape.ly gives you the infrastructure, the tooling, and the team to extract, process, and operationalize web data at any scale. Setup takes minutes. The advantage lasts forever.