Trip.com Reviews Scraper

Export bounded public Trip.com and Ctrip hotel review snapshots with ratings, guest text, stay details, replies, media URLs, and completeness warnings.

Data fields

FieldTypeDescription
hotelIdstringStable numeric hotel identifier parsed from the supplied Trip.com/Ctrip URL or ID.
hotelNamestring | nullPublic hotel name when available and includeHotelSummary is enabled.
hotelUrlstringPublic hotel page used for this review snapshot.
sourceDomainstringTrip.com or Ctrip hostname of the source page.
reviewIdstringSource review identifier, or a deterministic fallback when Trip.com omits one.
reviewTextstring | nullOriginal public guest review text.
translatedReviewTextstring | nullTrip.com-provided translated text when present; the Actor does not call a translation service.
ratingnumber | nullOverall review rating as exposed by the public page.

Input preview

hotelUrlsHotel URLs
hotelIdsHotel IDs
maxReviewsPerHotelMaximum reviews per hotel
sortBySort reviews by
sinceDateSince date
includeHotelSummaryInclude hotel summary fields

API and agents

This actor can be run through Apify API, datasets, webhooks, schedules, and the official Apify MCP server.

Ready-to-run examples

Open a saved Apify example, adjust the input, and run the actor in your own Apify account.

View all examples

How this actor works

See example inputs, outputs, API usage, and practical limits before running this actor on Apify.

Open Apify page

Export bounded public Trip.com and Ctrip hotel review snapshots with ratings, guest text, stay details, owner replies, public media URLs, and explicit completeness warnings.

The Actor accepts hotel URLs or IDs and writes one paid dataset row per saved review. It is designed for small, permissioned public-page snapshots—not complete historical pagination.

What does this Actor do?

  • Input: Up to 100 public hotel URLs or numeric hotel IDs.
  • Output: Review text, scores, stay and reviewer context, replies, media signals, source links, and snapshot completeness fields.
  • Public-page limit: Trip.com normally embeds only a bounded newest-review page. maxReviewsPerHotel limits that page; it does not unlock older pages.
  • Diagnostics: RUN_SUMMARY records every hotel outcome. RUN_CHECKPOINT preserves pending hotels before the safe deadline.
  • Access: No login, cookies, CAPTCHA handling, or private account data. New runs use Apify's standard proxy by default and can retry directly once after a route-specific failure.

Who is it for?

  • Hotel operators and agencies exporting a small, permissioned hotel-review snapshot for service-quality analysis.
  • Travel market researchers monitoring newly embedded reviews with sortBy: "newest" and a sinceDate cutoff.
  • Data teams adding public rating, stay, reply, and media context to an authorized hotel dataset.

Example output

{
  "hotelId": "129054778",
  "hotelName": "KOKO HOTEL Tokyo Nishikasai",
  "hotelUrl": "https://www.trip.com/hotels/tokyo-hotel-detail-129054778/koko-hotel-tokyo-nishikasai/",
  "sourceDomain": "www.trip.com",
  "reviewId": "2022013946",
  "reviewText": "A public guest review...",
  "translatedReviewText": null,
  "rating": 10,
  "ratingScale": 10,
  "ratingText": "Outstanding",
  "subRatings": { "cleanliness": 10, "service": 9.5 },
  "reviewDate": "2026-07-15",
  "stayDate": "2026-07-01",
  "travelType": "Business traveler",
  "roomType": "Standard Twin Room",
  "reviewerName": "Guest User",
  "reviewerCountry": "United States",
  "reviewerLevel": null,
  "reviewerContributionCount": 4,
  "ownerResponseText": null,
  "ownerResponseDate": null,
  "imageUrls": [],
  "videoUrls": [],
  "helpfulVotes": 2,
  "scrapedAt": "2026-07-20T00:00:00.000Z",
  "sourceUrl": "https://www.trip.com/hotels/tokyo-hotel-detail-129054778/koko-hotel-tokyo-nishikasai/",
  "pageNumber": 1,
  "sortBy": "newest",
  "reviewsAvailable": 922,
  "reviewsExtracted": 10,
  "hasMoreReviews": true,
  "warnings": [
    "Trip.com reports 922 reviews, but this public page exposed 15; output is a bounded page snapshot, not complete history."
  ]
}

Input settings

Setting JSON key Default Description
Hotel URLs hotelUrls None Public HTTPS Trip.com/Ctrip hotel URLs containing a numeric hotel ID.
Hotel IDs hotelIds None Numeric hotel IDs with at least five digits.
Maximum reviews maxReviewsPerHotel 20 Saves at most this many rows from each bounded public-page snapshot. Range: 1–1,000.
Sort sortBy recommended Client-side order: recommended, newest, ratingHigh, or ratingLow.
Since date sinceDate None Keeps embedded reviews on or after a valid YYYY-MM-DD date.
Include hotel summary includeHotelSummary true Includes the public hotel name on review rows. Stable IDs and diagnostics remain present.
Include media URLs includeImages true Includes public image and video URLs when present. No files are downloaded.
Locale locale en-US,en;q=0.9 Accept-Language value used for the public page request.
Currency currency USD Compatibility field retained for existing workflows; review extraction does not depend on price currency.
Proxy configuration proxyConfiguration Standard Apify Proxy Uses the standard proxy automatically, with one direct retry after a route-specific failure. Disable it to force direct access or provide an explicit custom route.
Resume checkpoint resumeFromCheckpoint false Reads pending hotels from RUN_CHECKPOINT in the same key-value store.
Work time maxRuntimeSecs 270 Actor work budget from 31–270 seconds; at least 30 seconds remain for persistence and cleanup.

At least one hotel URL or ID is required unless resumeFromCheckpoint is enabled. Missing input fails before the start charge or any network request.

Run outcomes and completeness

The dataset contains paid review rows only. Hotel-level errors and legitimate empty outcomes stay in the unpaid RUN_SUMMARY record.

  • Confirmed empty: Trip.com reports zero reviews. The hotel can finish with no rows and a successful summary.
  • Filtered empty: The public page exposed reviews, but none matched sinceDate.
  • Incomplete snapshot: hasMoreReviews is true and warnings explains the gap between the aggregate count and embedded rows.
  • Unexpected empty: Trip.com reports reviews but exposes no recognized rows. That hotel is marked failed instead of silently succeeding.
  • Partial run: Valid hotels retain their paid rows when another hotel fails.
  • Deadline stop: Pending hotels and saved review keys are written to RUN_CHECKPOINT for idempotent resume.
  • Charge-limit stop: Only rows accepted by the paid dataset operation count as saved. Remaining work is checkpointed when maxTotalChargeUsd is reached.

Tips for reliable snapshots

  • Start with one known public hotel and 5–10 reviews.
  • Use sortBy: "newest" with sinceDate for repeat monitoring.
  • Deduplicate appended snapshots downstream on hotelId plus reviewId.
  • Inspect hasMoreReviews and warnings; never treat the dataset as complete review history when the public page exposes only a subset.
  • If both the standard proxy and bounded direct fallback return an access challenge, retry later with a smaller workload. The Actor does not solve CAPTCHAs or use residential proxy escalation automatically.
  • This release supports the public server-rendered first-page snapshot only. It does not claim historical pagination.
  • Trip.com/Ctrip can change page content, omit optional fields, return regional variants, or temporarily challenge requests.
  • Hotel IDs and public payload availability vary between Trip.com and Ctrip surfaces. Check RUN_SUMMARY for each hotel outcome.
  • The Actor does not use login sessions, private APIs, partner credentials, cookies, or account-only data.
  • Trip.com’s current terms restrict commercial use of Website content without a licence. Use this Actor only when you have permission or another lawful basis covering your collection, export, retention, and commercial use. Public visibility alone is not permission.
  • Review text is user-generated. Minimize retained personal data and use human review for consequential decisions.

API usage

Node.js:

import { ApifyClient } from "apify-client";

const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor("fetch_cat/trip-com-reviews-scraper").call({
  hotelIds: ["129054778"],
  maxReviewsPerHotel: 10,
  sortBy: "newest"
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Python:

import os
from apify_client import ApifyClient

client = ApifyClient(os.environ["APIFY_TOKEN"])
run = client.actor("fetch_cat/trip-com-reviews-scraper").call(run_input={
    "hotelIds": ["129054778"],
    "maxReviewsPerHotel": 10,
    "sortBy": "newest",
})
items = client.dataset(run["defaultDatasetId"]).list_items().items
print(items)

cURL:

curl -X POST \
  "https://api.apify.com/v2/acts/fetch_cat~trip-com-reviews-scraper/runs?token=$APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"hotelIds":["129054778"],"maxReviewsPerHotel":10,"sortBy":"newest"}'

Use with MCP and AI agents

Use the official Apify MCP server with a focused single-Actor URL:

claude mcp add --transport http apify \
  "https://mcp.apify.com?tools=fetch_cat/trip-com-reviews-scraper"

Claude Desktop, Cursor, or VS Code configuration:

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

Example prompts:

  • “Export the newest 10 public reviews for hotel ID 129054778 and include completeness warnings.”
  • “Compare the lowest-rating rows in these permissioned Trip.com hotel snapshots.”
  • “Show which hotels returned incomplete snapshots by checking hasMoreReviews.”

Schedule hotel review monitoring

Run a small input daily or weekly with sortBy: "newest". Append each dataset to long-term storage and compare stable reviewId values. Use a webhook to notify your workflow when a new review meets your own score or text criteria.

Support

If a run fails or the output looks wrong, open an issue or report a bug from the Actor page. Include:

  • the Apify run ID or run URL;
  • the input JSON;
  • the expected output;
  • the actual output or RUN_SUMMARY error;
  • one reproducible public URL that you are permitted to test.

Common questions

Search-intent answers for buyers comparing Apify actors, API alternatives, and scheduled data workflows.

Can I export Trip.com Reviews Scraper results to CSV, JSON, Excel, or API?

Yes. Apify datasets support JSON, CSV, Excel, XML, RSS, API access, webhooks, and scheduled exports.

Can this work as an API alternative?

Yes. Use the Apify Actor API for runs and the dataset API for results. The focused MCP URL also exposes this actor for agent workflows.

Does this page replace the Apify actor page?

No. This catalog helps discovery and comparison. Running, billing, storage, and support continue through Apify.