Trip Reviews Scraper | Hotel Reviews and Ratings avatar

Trip Reviews Scraper | Hotel Reviews and Ratings

Pricing

from $2.13 / 1,000 reviews

Go to Apify Store
Trip Reviews Scraper | Hotel Reviews and Ratings

Trip Reviews Scraper | Hotel Reviews and Ratings

Trip.com reviews scraper for Ctrip (携程点评) hotel reviews: 100 reviews in 3 seconds, 36 fields each. Get rating and sub-ratings, review text with English translation, room, trip type, reviewer country and level, the hotel's reply, photos and videos. Start from a hotel page, name or place. No login.

Pricing

from $2.13 / 1,000 reviews

Rating

0.0

(0)

Developer

SilentFlow

SilentFlow

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Categories

Share

Trip Reviews Scraper (携程点评) | Trip.com and Ctrip Hotel Reviews (2026)

1 URL. 100 Trip reviews. 36 fields per review.

From SilentFlow. Creators of Pinterest Scraper (#1 for “pinterest pins scraper” in Apify Store search) and Leboncoin Scraper Ppe, with 240,000+ combined lifetime runs.

Every guest review of the Trip.com and Ctrip (携程) hotels you care about, one row per review, from a hotel page, a hotel name or a place. Our test run turned the Trip.com page of Marina Bay Sands into 100 reviews in 4 seconds, each with its rating and four sub-ratings, the text, the room, the trip type, the reviewer's country and the hotel's own rating, with no Trip.com account.

Why choose this actor?

Scrolling Trip.com reviews ten at a time? Hunting down each hotel's address before you can read a single review? Getting rows that do not even say which hotel they are about?

  • Everything about a review in one row. Each row carries 40 fields: the review (text, Trip.com's English translation, language, rating, four sub-ratings, room, trip type, photos, videos), the reviewer (name, country, level, review count), the hotel's reply and date, and the hotel itself (name, stars, city, country, address, overall rating, review count). In our four test runs, 36 to 39 of them were filled on at least half the rows. The example row of the most used Trip.com reviews scraper shows 26 keys, and none of them is the hotel's name, city or address.
  • Start from a hotel name or a place, not only a link. Type Grand Hyatt Shanghai and the run finds the hotel: 150 reviews in 3 seconds in our test, 99% of them with the hotel's reply. Type Shibuya and it reads the hotels Trip.com lists first there: 100 English reviews of 10 hotels in 15 seconds. Trip.com pages from any country site, Ctrip pages and bare hotel ids work in the same form. The most used Trip.com reviews scraper takes one hotel URL only.
  • Nothing to fill in before you press Start. No field is required: the form opens with a hotel page already in place and returns 100 reviews as is. The most used Trip.com reviews scraper will not start until you paste a URL into its required field.

Try Trip Reviews Scraper

Try your first 100 reviews

Paste this input in the JSON tab of the Input page and press Start. It reads the 100 newest reviews of Marina Bay Sands, Singapore.

{
"startUrls": [
{ "url": "https://www.trip.com/hotels/singapore-hotel-detail-687592/marina-bay-sands-singapore/" }
],
"maxReviews": 100,
"sortBy": "newest",
"reviewFilter": "all",
"language": "all"
}

It runs on the Apify Free plan. Each review becomes one row of your dataset: open the Output tab to see the table, switch to the "Replies and ratings" view for the sub-ratings, the English translation, the room and the hotel's reply, or export the rows as JSON, CSV or Excel.

How it works

SilentFlow · Trip suite
  Trip Scraper
Hotels, Prices and Reviews
Trip Reviews Scraper
You are here

Copy to your AI assistant

Paste this block into Claude, ChatGPT or Cursor to give it the full picture of this scraper:

You have access to the Trip Reviews Scraper on Apify: silentflow/trip-reviews-scraper
It reads the guest reviews of hotels on Trip.com and Ctrip (携程), without an account,
and returns one row per review, with the hotel it is about.
Input schema (no field is required; give at least one hotel page or one search):
- startUrls (array of {url}): hotel pages from any Trip.com site (www, us, uk, m.),
Ctrip hotel pages (https://hotels.ctrip.com/hotels/426595.html), hotel review pages,
or a Trip.com hotel list address (reads the hotels it shows first).
- searches (array of strings): hotel names ("Marina Bay Sands"), Trip.com hotel ids ("346403"),
or a city, area or landmark ("Shibuya"): the hotels Trip.com lists first there, about ten.
- maxReviews (integer, default 100): reviews saved per hotel.
- sortBy (string, default "newest"): newest | most_relevant | highest_rating | lowest_rating.
- cutoffDate (string, optional): keep reviews published on or after it, "2026-01-01" or "30 days".
- reviewFilter (string, default "all"): all | positive | negative | with_photos | with_videos.
- language (string, default "all"): all | en | zh | ja | ko | fr | de | es | it | ru | pt | nl
| pl | tr | ar | th | vi | id | ms.
Output per review (40 fields):
- id (string, Trip.com review id), url (string, the hotel's review page + #review-{id}), hotelId (string),
hotelName (string|null), hotelUrl (string)
- text (string|null, original), textTranslated (string|null, Trip.com's English translation),
language (string), travelType (string|null), roomType (string|null), roomId (string|null),
isRecommended (boolean)
- authorName, authorAvatarUrl, authorCountry, authorCountryCode (ISO), authorLevel (string|null),
authorReviewsCount (integer)
- rating, ratingMax (5), ratingCleanliness, ratingLocation, ratingService, ratingAmenities (number|null),
ratingLabel (string|null), helpfulCount (integer)
- hotelRating (number, out of 5), hotelReviewsCount (integer), hotelStars (integer|null)
- publishedAt (RFC 3339 UTC), stayMonth (YYYY-MM), hotelCity, hotelCountry, hotelAddress (string|null)
- responseFromOwnerText (string|null), responseFromOwnerDate (YYYY-MM-DD|null)
- images (array of URLs), videos (array of URLs)
- searchQuery (string, the input line), scrapedAt (RFC 3339)
Use apify-client for Python or JavaScript: client.actor("silentflow/trip-reviews-scraper").call(run_input=...).

How to scrape Trip.com hotel reviews

Three inputs, from the simplest to the most complete. Each one runs as is.

Get the newest reviews of a hotel from its name

No address needed: type the hotel as you would in the Trip.com search box.

{
"searches": ["Grand Hyatt Shanghai"],
"maxReviews": 150
}

In our test this gave 150 reviews in 3 seconds, newest first, 99% of them with the hotel's reply.

Read the English reviews of every hotel in a neighborhood

A city, an area or a landmark reads the hotels Trip.com lists first there, one after the other. Keep the English reviews to compare them side by side.

{
"searches": ["Shibuya"],
"maxReviews": 10,
"sortBy": "most_relevant",
"language": "en"
}

In our test this gave 100 English reviews of 10 Shibuya hotels in 15 seconds, from Dormy Inn Premium Shibuya Jingumae to Shibuya Tokyu Rei Hotel.

Pull the best photo reviews of a Ctrip hotel

Paste the Ctrip (携程) page of the hotel, keep the reviews with photos and start with the best rated.

{
"startUrls": [{ "url": "https://hotels.ctrip.com/hotels/426595.html" }],
"maxReviews": 50,
"sortBy": "highest_rating",
"reviewFilter": "with_photos"
}

In our test this gave 50 reviews of CitiGO Hotel Jinqiao, Shanghai, in 2 seconds, every one of them with photos and 84% with Trip.com's English translation.

Input parameters

ParameterTypeDefaultDescription
startUrlsarray of URLsprefilled with Marina Bay SandsHotel pages from Trip.com or Ctrip. See the formats below.
searchesarray of stringsnoneHotel names, Trip.com hotel ids, or a city, area or landmark. A place gives the hotels Trip.com lists first there, about ten, the closest first around a landmark.
maxReviewsinteger100Reviews saved per hotel. A hotel with fewer reviews gives all of them. No fixed limit.
sortBystringnewestnewest, most_relevant (the order of the hotel page), highest_rating or lowest_rating.
cutoffDatestringnoneKeep only the reviews published on or after this date: 2026-01-01, or an age such as 7 days, 2 weeks, 3 months. With newest, the run stops at the first older review.
reviewFilterstringallpositive, negative, with_photos or with_videos: the review tabs of Trip.com.
languagestringallOne of the 18 languages Trip.com filters on: en, zh, ja, ko, fr, de, es, it, ru, pt, nl, pl, tr, ar, th, vi, id, ms.

Accepted hotel formats:

  • Trip.com hotel page, any country site: https://www.trip.com/hotels/singapore-hotel-detail-687592/marina-bay-sands-singapore/, https://uk.trip.com/hotels/..., https://us.trip.com/hotels/...
  • Trip.com hotel page with an id: https://www.trip.com/hotels/detail/?hotelId=346403, on the mobile site too (https://m.trip.com/hotels/detail?hotelid=346403)
  • A hotel's review page: https://www.trip.com/hotels/shanghai-hotel-detail-346403/grand-hyatt-shanghai/review.html
  • Ctrip (携程) hotel page: https://hotels.ctrip.com/hotels/426595.html. Ctrip and Trip.com share their hotels and ids.
  • A bare hotel id in searches: 346403, the number after hotel-detail- in the address
  • A hotel name, a city, an area or a landmark in searches: Marina Bay Sands, Shibuya, Eiffel Tower
  • A Trip.com hotel list address (https://www.trip.com/hotels/list?city=228): the reviews of the hotels it shows first, with the filters you set on Trip.com

A line that is not a Trip.com or Ctrip hotel is skipped and named in the log; the rest of the input still runs. The same hotel given twice (a page and a name, for instance) is read once.

What data can you extract from Trip.com?

Each row is one review, with 40 top-level fields grouped the way you read them. On our default run, 36 of them carry a value on at least half the rows; over our four test runs, 36 to 39.

GroupFields
Identity (5)id (Trip.com's review id, stable), url (the hotel's review page on Trip.com, with the review's anchor: one address per review), hotelId, hotelName, hotelUrl (the hotel page)
Review (7)text (as written), textTranslated (Trip.com's English translation), language, travelType (Family, Couple, Business traveler, Solo traveler, Traveling with friends), roomType, roomId, isRecommended
Reviewer (6)authorName, authorAvatarUrl, authorCountry, authorCountryCode (ISO), authorReviewsCount, authorLevel (Trip.com's reviewer level)
Ratings (11)rating, ratingMax (5), ratingLabel (Outstanding, Amazing, Very good...), ratingCleanliness, ratingLocation, ratingService, ratingAmenities, helpfulCount, hotelRating (the hotel's overall score), hotelReviewsCount, hotelStars
Time and place (5)publishedAt (RFC 3339, UTC), stayMonth (the month of the stay, YYYY-MM), hotelCity, hotelCountry, hotelAddress
Hotel reply (2)responseFromOwnerText, responseFromOwnerDate
Media (2)images (full-size photo URLs), videos (video URLs)
Meta (2)searchQuery (the input line the row comes from), scrapedAt

A value Trip.com does not give is null, never an empty string; images and videos are empty lists when the review has none. Ratings are numbers out of 5.

Output example

One complete row from our test run on Grand Hyatt Shanghai, a review written in Chinese with Trip.com's English translation, three photos and the hotel's reply:

{
"id": "2118180575",
"url": "https://www.trip.com/hotels/shanghai-hotel-detail-346403/grand-hyatt-shanghai/review.html#review-2118180575",
"hotelId": "346403",
"hotelName": "Grand Hyatt Shanghai",
"hotelUrl": "https://www.trip.com/hotels/shanghai-hotel-detail-346403/grand-hyatt-shanghai/",
"text": "選擇金茂君悦入住沒有失望,酒店服務讓人覺得很舒心。有任何需求跟工作人員溝通,響應都很及時。客房環境安靜,床品舒適,休息質量很好。公共區域維護到位,環境雅緻。地段優勢明顯,來上海住這裏很合適,滿分好評!",
"textTranslated": "Choosing the Grand Hyatt Jin Mao for my stay was not a disappointment; the hotel service made me feel very comfortable. Any requests I had were promptly addressed by the staff. The room environment was quiet, the bedding was comfortable, and I had an excellent night's sleep. The public areas were well-maintained and had an elegant atmosphere. The location is a definite advantage, making it a perfect place to stay when visiting Shanghai. Full marks!",
"language": "zh",
"travelType": "Family",
"roomType": "Grand Pearl-view King Room",
"roomId": "517275100",
"isRecommended": true,
"authorName": "Guest User",
"authorAvatarUrl": "https://ak-d.tripcdn.com/images/27c3u12000na9j5gpFBB6_C_130_130_Q70.jpg",
"authorCountry": "China",
"authorCountryCode": "CN",
"authorReviewsCount": 4,
"authorLevel": "Rising review star",
"rating": 5,
"ratingMax": 5,
"ratingLabel": "Outstanding",
"ratingCleanliness": 5,
"ratingLocation": 5,
"ratingService": 5,
"ratingAmenities": 5,
"helpfulCount": 0,
"hotelRating": 4.7,
"hotelReviewsCount": 18763,
"hotelStars": 5,
"publishedAt": "2026-09-28T06:45:23Z",
"stayMonth": "2026-09",
"hotelCity": "Shanghai",
"hotelCountry": "China",
"hotelAddress": "No. 88 Shiji Avenue (Check-in, 54th Floor), Pudong New Area, Shanghai, 200121, China",
"responseFromOwnerText": "尊敬的賓客:感謝您選擇上海金茂君悦大酒店,並留下滿分好評。得知您對入住體驗感到滿意,我們由衷欣喜。無論是及時響應的服務、安靜舒適的客房與床品,還是雅緻的公共區域與便利的地段,您所認可的每一處細節,都是我們日復一日的堅守。期待您下次來滬時,依然選擇回到金茂君悦的懷抱,讓我們繼續以專業與熱忱,為您奉上雲端之上的美好時光。此致,上海金茂君悦大酒店管理團隊 敬上",
"responseFromOwnerDate": "2026-09-28",
"images": [
"https://ak-d.tripcdn.com/images/0232i12000tzxpwpv01C5_W_1280_853_R5_Q70.jpg?proc=autoorient",
"https://ak-d.tripcdn.com/images/0231k12000tzx8k1o41BF_W_1280_853_R5_Q70.jpg?proc=autoorient",
"https://ak-d.tripcdn.com/images/0232k12000tzx6dys6026_W_1280_853_R5_Q70.jpg?proc=autoorient"
],
"videos": [],
"searchQuery": "Grand Hyatt Shanghai",
"scrapedAt": "2026-09-29T12:41:46Z"
}

Advanced usage

Five recipes the examples above do not show. Each input runs as is.

Watch the new reviews of your hotel and its competitors every week

Put your hotel and its competitive set in one input, keep the reviews of the last seven days, and schedule the run weekly in the Schedules tab. Each run returns only what guests wrote since the last one, with the hotel's reply when there is one.

{
"searches": ["Grand Hyatt Shanghai", "Marina Bay Sands", "346403"],
"sortBy": "newest",
"cutoffDate": "7 days",
"maxReviews": 500
}

The id 346403 is Grand Hyatt Shanghai again: the run reads it once.

Find what guests complain about, worst first

Keep the negative reviews only and start with the lowest ratings. The four sub-ratings tell you whether the problem is cleanliness, location, service or amenities.

{
"startUrls": [{ "url": "https://www.trip.com/hotels/detail/?hotelId=346403" }],
"sortBy": "lowest_rating",
"reviewFilter": "negative",
"maxReviews": 200
}

Read what Chinese travelers say, in Chinese and in English

Most reviews of Asian hotels on Trip.com are written in Chinese. Keep them, and read the English translation Trip.com adds in textTranslated when it has one.

{
"searches": ["Marina Bay Sands", "Grand Hyatt Shanghai"],
"language": "zh",
"sortBy": "newest",
"maxReviews": 100
}

Collect guest videos for social content

Keep the reviews with videos only. The videos column holds the video links and images the photos of the same review.

{
"searches": ["Grand Hyatt Shanghai"],
"reviewFilter": "with_videos",
"sortBy": "most_relevant",
"maxReviews": 50
}

Build a year of reviews for a sentiment model

Read every review of the last twelve months, newest first, across several hotels of a city. Ratings are numbers out of 5, so they label the text directly.

{
"searches": ["Shinjuku"],
"sortBy": "newest",
"cutoffDate": "12 months",
"maxReviews": 1000
}

FAQ

What is Trip.com, and what is Ctrip? Trip.com is the travel booking site of Trip.com Group, the largest online travel agency in Asia. Ctrip (携程) is the group's Chinese site. Both show the same hotels, with the same hotel ids and the same reviews, so this actor reads a Ctrip hotel page the same way as a Trip.com one.

What does the actor return exactly? One row per published guest review, with 40 fields: the review, its ratings, the reviewer, the hotel's reply, photos and videos, and the hotel it is about. The table in "What data can you extract from Trip.com?" lists them all.

Do I need a Trip.com account? No. The actor reads the reviews anyone can see on a hotel page. No login, no account, no key to set up.

Why do I get fewer rows than the review count shown on the hotel page? The count Trip.com shows also counts ratings it does not publish as a written review. The actor reads every review Trip.com publishes. In our tests, Grand Hyatt Shanghai published all of its 18,763 reviews, while a small Paris hotel counted 114 and published 14. hotelReviewsCount keeps the count shown on the page.

Are all reviews translated into English? No. textTranslated holds the English translation Trip.com made, when it made one: 29% to 84% of the rows in our test runs, depending on the hotel. text always keeps the review as it was written. Reviews already in English have no translation.

How do I get only the new reviews since my last run? Set sortBy to newest and cutoffDate to an age such as 7 days, then schedule the run. The run stops at the first review older than the cutoff, so a weekly run reads only the week's reviews.

Can filters be combined? Yes. reviewFilter, language and cutoffDate add up: "reviewFilter": "negative", "language": "en" and "cutoffDate": "30 days" return the negative English reviews of the last 30 days. sortBy then decides which come first.

Can I read several hotels in one run? Yes. Put as many hotel pages in startUrls and as many names, ids or places in searches as you need. maxReviews applies to each hotel, and a hotel given twice is read once.

What does a city or a landmark give? The hotels Trip.com lists first there, about ten, read one after the other; around a landmark, the closest first. To choose the hotels yourself, give their names, ids or pages instead.

How fresh is the data? Live. Each run reads Trip.com at run time: our test runs returned reviews published the same day.

Are the links permanent? url (the hotel's review page, with #review-{id} at the end so each review has its own address) and hotelUrl are permanent Trip.com addresses. id and hotelId are Trip.com's own ids and do not change. Photo and video links point to Trip.com's own media servers: download the files you want to archive.

Why is the rating out of 5 when Trip.com shows 9.4? Some Trip.com sites show scores out of 10. The actor keeps the scale the reviews are given in, out of 5, and says it in ratingMax: a hotelRating of 4.7 is the 9.4 you may see on the page.

What time zone are the dates in? publishedAt is in UTC, in RFC 3339 format. stayMonth is the month of the stay, as Trip.com gives it (the day is not published). responseFromOwnerDate is the day the hotel replied.

More SilentFlow scrapers

🛒 E-commerce

💼 Jobs

🏠 Real estate

📣 Social media

🏢 Business data

✈️ Travel

🎯 Lead generation

🔎 SEO

Support

Need something this scraper doesn't do yet? We ship features fast.

  • Feature requests go straight to our backlog
  • Enterprise needs? We do custom integrations and high-volume plans
  • Pricing questions? Check the Monetization tab on the actor page

Response time: usually under 24 hours.

This Actor extracts publicly available guest reviews from Trip.com and Ctrip. It does not bypass any login, paywall or CAPTCHA, and never uses a Trip.com account. Users are responsible for complying with Trip.com's terms of service and applicable data protection laws (GDPR, CCPA, and PIPL for data from China). Rows carry reviewer nicknames, avatars and countries, which can be personal data: handle them accordingly, keep only what you need, and honor removal requests. The data returned is informational; verify accuracy for regulated use cases.

Trip Reviews Scraper by SilentFlow: Trip.com and Ctrip hotel reviews from a page, a name or a place, ready for your spreadsheet.