Trip.com Scraper avatar

Trip.com Scraper

Pricing

Pay per usage

Go to Apify Store
Trip.com Scraper

Trip.com Scraper

Extract Trip.com hotels with live prices for your check-in and check-out dates: nightly and total price, star level, guest rating with cleanliness, location and service sub-scores, addresses, coordinates and guest reviews. Export data, run via API or schedule runs.

Pricing

Pay per usage

Rating

0.0

(0)

Developer

Matvey

Matvey

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

18 hours ago

Last modified

Share

Trip.com Scraper extracts public Trip.com hotel data with live prices for your own check-in and check-out dates: hotel name, nightly and total price, star level, guest rating with its sub-scores for cleanliness, location, service and amenities, review counts, district, coordinates, full address and the guest reviews published on the hotel page. No login, no API key, no partner account. Export to JSON, CSV or Excel, run it via API, schedule it, or plug it into n8n, Make, Zapier, Google Sheets or an AI agent through MCP.

What is Trip.com Scraper?

Trip.com is one of the largest online travel agencies in the world and the main booking channel for Asia. It has no public hotel API for the general web, and its pages render in the browser, so most scrapers either miss prices or run an expensive headless browser for every hotel.

This Actor reads the data Trip.com already ships inside its own pages. That means a run is fast and cheap, and โ€” unlike list-only tools โ€” the rows carry the price for the exact dates you asked for, both per night and as a total including taxes and fees.

ModeWhat you getInput
๐Ÿจ Hotels in a cityHotel cards with price for your dates, total stay price, star level, rating and sub-scores, review count, district, coordinates, room type offered, imagecity ID and dates
๐Ÿ“‹ Hotel detailsFull address with postcode and country, star level, rating, review count and the hotel's price rangehotel URLs
โญ Guest reviewsReviews published on the hotel page: text, author, dateany hotel or city input

Every row records checkIn, checkOut, currency and hotelId, so daily runs stack into a price history.

What data can Trip.com Scraper extract?

๐Ÿจ Hotel cards

FieldExample
nameHotel Tjampuhan Spa
price / totalPrice / currency89 / 192 / USD
priceNoteTotal price: US$192 ยท 1 room ร— 2 nights incl. taxes & fees
rating / ratingText / reviewCount9.3 / Great / 216
subScores[{"name":"Cleanliness","score":9},{"name":"Location","score":9.6}]
star / category4 / Resort
roomName / adults / childrenTwo Double Room / 2 / 0
district / locationUbud / `Ubud Centre
latitude / longitude-8.506 / 115.259
checkIn / checkOut20261015 / 20261017
hotelId / url / imageUrl / imagesidentifier, link, main photo, gallery

๐Ÿ“‹ Hotel details

address (full street address), addressRegion, postalCode, country, star, rating, ratingBest, reviewCount, priceRange (the hotel's own "From US$70" line) and the canonical url.

โญ Guest reviews

text, author, reviewTime, score where shown, plus hotelId, hotelName and hotelUrl.

How much does it cost to scrape Trip.com?

The Actor uses Apify's pay-per-event pricing, so you pay for results and nothing per page.

EventPricePer 1,000
Hotel with price$0.003$3
Hotel detail$0.003$3
Guest review$0.001$1

No browser is involved, so platform usage is a fraction of a cent per run. The Apify Free plan ($5 monthly credit) covers roughly 1,600 priced hotels or 5,000 reviews a month.

How to scrape Trip.com

  1. Open Trip.com Scraper on Apify and click Try for free.
  2. Open your city on Trip.com and copy the number from the address bar: in trip.com/hotels/list?city=**723** the city ID is 723 (Bali). Paste it into Trip.com city ID.
  3. Set Check-in and Check-out. Without dates you still get hotels and ratings, but no prices.
  4. Set Max hotels, tick Collect guest reviews if you want them, then click Start.
  5. Alternatively paste Trip.com URLs: a hotel list URL you copied from the site, or single hotel URLs.
  6. Open the Output tab and download JSON, CSV, Excel or XML, or read the dataset through the API.

โฌ‡๏ธ Input

Trip.com Scraper input form: city ID, city name, check-in and check-out dates, max hotels, reviews, currency

Hotels in Bali for a two-night stay, with reviews:

{
"cityId": 723,
"cityName": "Bali",
"checkIn": "2026-10-15",
"checkOut": "2026-10-17",
"adults": 2,
"maxHotels": 100,
"includeReviews": true,
"currency": "USD"
}

Specific hotels by URL, with full addresses:

{
"startUrls": [
"https://www.trip.com/hotels/detail/?hotelId=982030",
"https://www.trip.com/hotels/detail/?hotelId=1978099"
],
"includeHotelDetails": true
}

A hotel list URL copied straight from the browser:

{
"startUrls": ["https://www.trip.com/hotels/list?city=347&cityName=Los%20Angeles"],
"checkIn": "2026-11-02",
"checkOut": "2026-11-05",
"maxHotels": 60
}

Prices in another currency for a family room:

{
"cityId": 723,
"cityName": "Bali",
"checkIn": "2026-12-20",
"checkOut": "2026-12-27",
"adults": 2,
"children": 2,
"rooms": 2,
"currency": "SGD"
}

โฌ†๏ธ Output

Trip.com Scraper output table: hotel, price per night, total stay, rating, verdict, reviews, stars, area, room

One hotel with a live price:

{
"type": "hotel",
"hotelId": "982030",
"name": "Hotel Tjampuhan Spa",
"category": "Resort",
"star": 4,
"rating": 9.3,
"ratingText": "Great",
"reviewCount": 216,
"subScores": [
{ "name": "Cleanliness", "score": 9 },
{ "name": "Amenities", "score": 9 },
{ "name": "Location", "score": 9.6 },
{ "name": "Service", "score": 9.4 }
],
"price": 89,
"totalPrice": 192,
"currency": "USD",
"priceNote": "Total price: US$192 1 room ร— 2 nights incl. taxes & fees",
"roomName": "Deluxe Room",
"district": "Ubud",
"latitude": "-8.506",
"longitude": "115.259",
"checkIn": "20261015",
"checkOut": "20261017",
"url": "https://www.trip.com/hotels/detail/?hotelId=982030",
"scrapedAt": "2026-09-03T09:11:52.061Z"
}

One hotel detail:

{
"type": "hotel_detail",
"hotelId": "982030",
"name": "Hotel Tjampuhan Spa",
"star": 4,
"rating": 9.3,
"ratingBest": 10,
"reviewCount": 216,
"priceRange": "From US$70",
"address": "Jl. Raya Campuhan, Ubud, Kecamatan Ubud, Gianyar, Bali, Bali Province, 80571, Indonesia",
"postalCode": "80571",
"country": "Indonesia",
"url": "https://www.trip.com/hotels/bali-hotel-detail-982030/hotel-tjampuhan-spa/"
}

Rows carry a type (hotel, hotel_detail, review, error), so one dataset can be split in a spreadsheet or in code. Pages that fail after the retries become error rows with the URL and the reason.

Use cases for Trip.com data

Rate shopping and price monitoring

Run the same city and dates every morning and watch price and totalPrice move. Hotels, revenue managers and OTAs use exactly this to see where they sit against the market.

Competitive set benchmarking

Pull your competitors by hotel URL and compare price, rating and the sub-scores for cleanliness, service, location and amenities side by side.

Destination research

One run returns a whole city with stars, districts and coordinates, which is enough to map supply, plot hotels on a map or size a market before entering it.

Review mining

Collect the reviews published on hotel pages and run sentiment analysis, or feed them to an LLM to find what guests praise and complain about.

Travel content and affiliate sites

Ratings, sub-scores, price ranges and photos are enough to build a comparison page or keep a "best hotels in โ€ฆ" list fresh automatically.

AI agents and RAG

Flat rows with literal names and a minimal input make the Actor easy to call from an agent through the Apify MCP server.

Integrations

  • API โ€” start a run and read the dataset with any HTTP client:
from apify_client import ApifyClient
client = ApifyClient("<YOUR_API_TOKEN>")
run = client.actor("lergassy/tripcom-scraper").call(run_input={
"cityId": 723, "cityName": "Bali",
"checkIn": "2026-10-15", "checkOut": "2026-10-17", "maxHotels": 50
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item.get("name"), item.get("price"), item.get("currency"))
  • JavaScript โ€” npm i apify-client, then client.actor('lergassy/tripcom-scraper').call(input).
  • n8n, Make, Zapier, Google Sheets, Airtable, Slack, webhooks โ€” through the standard Apify integrations.
  • MCP โ€” add the Apify MCP server to Claude, ChatGPT or Cursor and let the agent call lergassy/tripcom-scraper with a city and dates.

Errors and troubleshooting

What you seeWhat it meansFix
No prices in the rowsCheck-in and check-out were not setAdd both dates; Trip.com only prices a real stay
Fewer hotels than Max hotelsTrip.com serves one screen of hotels per view and paginates behind a signed requestThe Actor already rotates sort orders to widen coverage; add more cities or dates for more rows
error rowsThe page failed after the retriesRe-run those URLs; the Actor rotates proxy sessions automatically
No reviews for a hotelThat hotel has no reviews rendered on its pageCheck reviewCount on the hotel card first
Wrong city in the resultscityName alone does not identify a cityAlways pass the numeric city ID from the Trip.com URL

๐Ÿค– For AI Agents & LLM Apps

Compact reference for agents calling this Actor through the Apify MCP server or the Apify API (lergassy/tripcom-scraper).

Purpose: returns Trip.com hotel availability and prices for a city and a date range, with guest scores, stars, room type and coordinates, plus optional property details and guest reviews. Use it to answer "what do hotels in Bali cost that week", "which four-star properties are under $100" and "how do guests rate this hotel".

Minimal input:

{ "cityName": "Bali", "checkIn": "2026-10-12", "checkOut": "2026-10-15", "adults": 2, "maxHotels": 40 }

Output: one row per hotel โ€” type, hotelId, name, nameEn, category, star, rating, ratingText, reviewCount, subScores, price, priceText, currency, totalPrice, priceNote, roomName, district, location, latitude, longitude, distance, isAd, status, imageUrl, adults, children, checkIn, checkOut, url, city, position, scrapedAt. Detail rows add address, postalCode, country and priceRange; review rows carry score, text, author and reviewTime; unreadable pages arrive as type: "error".

Behaviors an agent should know:

  • Trip.com has no search by city name. cityName works only for the thirty destinations Trip.com links from its own pages (Bali, Bangkok, Tokyo, Singapore, Hong Kong, London, Paris, New York and so on) โ€” the Actor maps those to ids and logs which id it used. For anywhere else, pass the numeric cityId: open the city on trip.com and copy the number from /hotels/bali-hotels-list-723/. An unrecognised name is reported in the log rather than silently returning nothing. Hotel and hotel-list URLs also work as input.
  • Prices only exist for a date range. Without checkIn and checkOut the Actor cannot quote a nightly rate, and price will be empty. Always pass both.
  • price is per night for the given occupancy; totalPrice covers the whole stay. priceNote says whether taxes are excluded โ€” quote it when reporting a price.
  • currency is chosen by input and defaults to USD. The number is converted by Trip.com, not by the Actor.
  • maxHotels (default 40) and maxPages (default 5) together cap a run. includeHotelDetails and includeReviews each add a fetch per hotel.
  • isAd marks sponsored results; drop them before ranking by price or score.
  • Availability moves fast: a row is a snapshot at scrapedAt, not a bookable quote.

โ“ FAQ

The Actor reads only pages any visitor can open without logging in, and it collects no personal data beyond the guest names Trip.com publishes next to reviews. You are responsible for using the data in line with local law and Trip.com's terms; consult a lawyer for your case.

Do I need a Trip.com API key or an affiliate account?

No. The Actor never authenticates.

Does it use a browser?

No. Everything is plain HTTP, which keeps runs fast and cheap.

Where do I find the city ID?

Open the city on Trip.com. The address bar shows trip.com/hotels/list?city=723&cityName=Bali, so the ID is 723. You can also paste that whole URL into Trip.com URLs instead.

Can I track prices over time?

Yes. Schedule the run daily with the same city and dates. Each row carries checkIn, checkOut and scrapedAt, so the dataset becomes a price history.

How many hotels can one city return?

Trip.com shows one screen of hotels per view and loads the rest through a signed request the Actor does not touch. To widen coverage it walks several sort orders, which typically yields a few dozen distinct hotels per city and date pair.

Does it return room-level prices for every room type?

The card carries the cheapest bookable room for your dates, with its name and the total for the stay. Full room lists sit behind the same signed request.

Can I use it with the Apify API, MCP or n8n?

Yes, see Integrations. The input is plain JSON.

Your feedback

Need another field, another Trip.com page type, or flights and trains? Open an issue in the Issues tab or leave a review โ€” user requests decide what ships next.

You might also like

ActorWhat it does
Airbnb ScraperAirbnb listings for any place and dates: nightly price, rating, beds, amenities, host
Agoda Reviews ScraperHotel reviews from Agoda and Booking.com
Google Flights ScraperFlight prices, airlines and price insights
Shopee ScraperProducts and prices across 11 Shopee marketplaces
Lazada ScraperProducts, prices and reviews across six Lazada marketplaces
Email & Phone VerifierChecks e-mails and phone numbers in bulk: deliverability, throwaway and role flags, numbering plan, US state and time zone