Trip.com Hotels Scraper

Scrape public Trip.com hotel listings, prices, ratings, amenities, and URLs by destination.

Data fields

FieldTypeDescription
hotelNamestringValue exported as hotelName.
hotelUrlstring | nullValue exported as hotelUrl.
destinationstring | nullValue exported as destination.
districtstring | nullValue exported as district.
starRatingnumber | nullValue exported as starRating.
guestRatingnumber | nullValue exported as guestRating.
reviewCountinteger | nullValue exported as reviewCount.
pricenumber | nullValue exported as price.

Input preview

searchUrlsTrip.com hotel list URLs *
checkInCheck-in date
checkOutCheck-out date
adultsAdults
roomsRooms
maxItemsMaximum hotels

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

Collect public Trip.com hotel listings for destinations, market research, price monitoring, and travel planning workflows.

What does Trip.com Hotels Scraper do?

Trip.com Hotels Scraper extracts public hotel listing data from Trip.com destination pages. Provide one or more Trip.com hotel list URLs and the actor returns hotel names, Trip.com URLs, ratings, review counts, images, addresses when visible, prices when visible, and source metadata.

Who is it for?

  • 馃С Travel agencies comparing hotel inventory across destinations
  • 馃彣 Hotel revenue teams monitoring nearby properties
  • 馃搳 Tourism analysts building destination supply datasets
  • 馃洬 OTAs and metasearch teams checking public Trip.com coverage
  • 馃捈 Consultants preparing travel market reports

Why use this actor?

Manual hotel research is slow. This actor turns public Trip.com destination pages into structured rows that can be exported to JSON, CSV, Excel, or consumed from the Apify API.

Input settings

Setting JSON key Type / default Description
Trip.com hotel list URLs searchUrls array, default [{"url":"https://www.trip.com/hotels/tokyo-hotels-list-228/"}] Public Trip.com destination hotel list URLs, for example https://www.trip.com/hotels/tokyo-hotels-list-228/
Check-in date checkIn string, default "" Optional check-in date in YYYY-MM-DD format. The date is appended to each Trip.com URL.
Check-out date checkOut string, default "" Optional check-out date in YYYY-MM-DD format. The date is appended to each Trip.com URL.
Adults adults integer, default 2 Optional number of adults for date-specific Trip.com URLs.
Rooms rooms integer, default 1 Optional number of rooms for date-specific Trip.com URLs.
Maximum hotels maxItems integer, default 20 Maximum number of hotel listings to save across all URLs.
Proxy configuration proxyConfiguration object, default {"useApifyProxy":false} Optional Apify Proxy settings. Datacenter proxies are usually enough; use residential only if your run is blocked.

Input

The main input is searchUrls, an array of public Trip.com hotel list URLs.

{
  "searchUrls": [
    { "url": "https://www.trip.com/hotels/tokyo-hotels-list-228/" }
  ],
  "maxItems": 20
}

Optional stay details

You can provide optional stay parameters:

  • checkIn in YYYY-MM-DD format
  • checkOut in YYYY-MM-DD format
  • adults
  • rooms

These values are appended to the Trip.com URLs when dates are supplied.

Example input

{
  "searchUrls": [
    {
      "url": "https://www.trip.com/hotels/tokyo-hotels-list-228/"
    }
  ],
  "checkIn": "example",
  "checkOut": "example",
  "adults": 2,
  "rooms": 1,
  "maxItems": 20,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}

Output example

{
  "hotelName": "KOKO HOTEL Tokyo Nishikasai",
  "hotelUrl": "https://www.trip.com/hotels/tokyo-hotel-detail-129054778/koko-hotel-tokyo-nishikasai/",
  "destination": "Tokyo",
  "district": null,
  "starRating": 3,
  "guestRating": 8.4,
  "reviewCount": 842,
  "price": null,
  "currency": null,
  "taxesFeesText": null,
  "amenities": [],
  "imageUrl": "https://ak-d.tripcdn.com/images/0221712000oahl31u544A.jpg",
  "address": null,
  "sourceUrl": "https://www.trip.com/hotels/tokyo-hotels-list-228/",
  "scrapedAt": "2026-06-29T10:43:35.793Z"
}

How to run

  1. Open the actor on Apify.
  2. Paste one or more Trip.com hotel list URLs.
  3. Set maxItems to the number of hotels you need.
  4. Start the run.
  5. Export results from the Dataset tab.

Tips for best results

  • Use destination listing pages, not the Trip.com home page.
  • Start with a small maxItems value for your first run.
  • Use URLs copied from the Trip.com website in the same language/market you want to monitor.
  • If prices are important, include Trip.com URLs where prices are visible to public visitors.

Integrations

Use this actor in workflows such as:

  • Daily hotel market snapshots exported to Google Sheets
  • Destination inventory monitoring in a BI dashboard
  • Travel content enrichment pipelines
  • Hotel competitor lists for revenue management
  • Tourism research datasets for recurring reports

API usage

Run Trip.com Hotels Scraper from your own code with the Apify API.

Node.js

import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const input = {
  "searchUrls": [
    {
      "url": "https://www.trip.com/hotels/tokyo-hotels-list-228/"
    }
  ],
  "checkIn": "example",
  "checkOut": "example",
  "adults": 2,
  "rooms": 1
};

const run = await client.actor('fetch_cat/trip-com-hotels-scraper').call(input);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Python

from apify_client import ApifyClient
import os

client = ApifyClient(os.environ["APIFY_TOKEN"])
run = client.actor("fetch_cat/trip-com-hotels-scraper").call(run_input={
  "searchUrls": [
    {
      "url": "https://www.trip.com/hotels/tokyo-hotels-list-228/"
    }
  ],
  "checkIn": "example",
  "checkOut": "example",
  "adults": 2,
  "rooms": 1
})
items = client.dataset(run["defaultDatasetId"]).list_items().items
print(items)

cURL

curl -X POST "https://api.apify.com/v2/acts/fetch_cat~trip-com-hotels-scraper/runs?token=$APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"searchUrls":[{"url":"https://www.trip.com/hotels/tokyo-hotels-list-228/"}],"checkIn":"example","checkOut":"example","adults":2,"rooms":1}'

Use with AI agents via MCP

Trip.com Hotels Scraper can be used by AI assistants through the hosted Apify MCP server.

Claude Code setup

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

Claude Desktop, Cursor, or VS Code JSON config

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

Example prompts

  • "Run Trip.com Hotels Scraper with this input JSON and summarize the dataset."
  • "Export the latest Trip.com Hotels Scraper results to a table I can review."
  • "Schedule this Actor for monitoring and tell me what changed between runs."

Legality and responsible use

This actor collects publicly available information from Trip.com pages. Always use the data responsibly, respect applicable laws, and review Trip.com's terms and local regulations for your use case.

Limits

Trip.com page content can vary by destination, locale, dates, and availability. Some fields may be null when Trip.com does not expose them publicly on the supplied page. Large runs should use sensible maxItems values.

Dataset export

Results can be downloaded from Apify as JSON, CSV, XML, RSS, Excel, or HTML table. Use CSV for spreadsheets and JSON for application workflows.

Quality notes

The actor is designed for hotel listing rows. It does not scrape private account data, booking confirmations, user-only prices, or data behind a login.

Support

Report bugs, wrong output, blocked runs, or missing fields from the Actor page. Include the Apify run ID or run URL, your input JSON, what you expected, what the Actor returned, and one reproducible public URL so the issue can be tested quickly.

Field coverage

Field coverage depends on the public content Trip.com returns for each destination page. The actor saves the source URL and scrape timestamp so records can be audited later.

Best practices

Run smaller recurring jobs instead of very large one-off jobs when monitoring destinations over time. This makes changes easier to compare and keeps individual runs fast.

Example destinations

Tokyo, Bangkok, London, Paris, New York, Singapore, Seoul, and other Trip.com destination pages can be supplied as long as they use public hotel list URLs.

Data freshness

Every run fetches current public page content from Trip.com. The actor does not reuse old dataset rows between runs.

Automation ideas

Schedule this actor daily or weekly, send the dataset to a database, and compare rating or price changes over time.

Privacy

The actor extracts hotel listing information only. It does not collect user accounts, private bookings, or payment data.

Common questions

Questions and answers reused from the canonical actor README.

Why are some prices empty?

Trip.com does not always expose public prices on every hotel list response. Add check-in and check-out dates or use a listing page where prices are visibly shown.

Why did I get zero results?

Check that your input URL is a Trip.com hotel list page such as /hotels/tokyo-hotels-list-228/. Home pages, search landing pages, and unsupported pages may not contain hotel cards.