Trip.com Scraper — Hotel Prices, Rates & Availability avatar

Trip.com Scraper — Hotel Prices, Rates & Availability

Pricing

from $2.10 / 1,000 hotel with prices

Go to Apify Store
Trip.com Scraper — Hotel Prices, Rates & Availability

Trip.com Scraper — Hotel Prices, Rates & Availability

Scrape Trip.com hotels with live room rates for your own check-in and check-out dates: nightly and total price, availability, star level, guest rating with sub-scores, review count, district, address and coordinates. Hotel price data across Asia and beyond.

Pricing

from $2.10 / 1,000 hotel with prices

Rating

5.0

(2)

Developer

Matvey

Matvey

Maintained by Community

Actor stats

0

Bookmarked

12

Total users

6

Monthly active users

3 days 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 detailsProperty description, full amenities list by category, photo gallery, highlights, check-in/check-out times, full address with postcode and country, star level, rating, review count and 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

description (the property write-up, several paragraphs) and descriptionSections (the same text split by topic: location, dining, rooms, services), amenities (flat list) and amenityGroups (by category, each item carrying its own note such as Free or Additional charge and details like opening hours), images and imageGroups (the gallery, grouped the way Trip.com groups it — pool, restaurant, rooms), highlights (the short "why this place" lines with the sentence behind each), checkInTime and checkOutTime, plus address (full street address), addressRegion, postalCode, country, star, rating, ratingBest, reviewCount, priceRange (the hotel's own "From US$70" line) and the canonical url.

All of it comes from the same page fetch as the address — no extra request and no extra charge per field.

⭐ Guest reviews

text, author, reviewTime as printed, reviewDate as ISO 8601, score on Trip.com's 1-10 scale, plus hotelId, hotelName and hotelUrl.

Four filters narrow them: Minimum review score, Maximum review score, Reviews posted from and Reviews posted until. Set the maximum score to 6 and you get the complaints on every hotel in a city; set the date window to the last three months and you get how a property is doing now rather than how it did in 2023. Filtered-out reviews are never charged for.

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. Error rows are never charged.

EventPricePer 1,000
Hotel with price$0.003$3
Hotel detail$0.005$5
Guest review$0.002$2

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 2,500 reviews a month. Bronze, Silver and Gold Store tiers get a discount on top.

Bulk export: what 50,000 hotel records actually cost

This Actor is built for bulk jobs — put hundreds of inputs into one run, or call it from the API on a schedule. There is no fee per run, no fee per page and no proxy charge: you pay for the rows you keep, and error rows are free. That is what decides the bill once you pull a whole market rather than a single property.

JobThis ActorMost-used Actor in this category
50,000 hotel records across 100 runs$100$260

Checked on the Apify Store on 21 September 2026 against the Actor with the most monthly users in this category; its per-run fee is counted in, as ours would be if we charged one. Some Actors here ask less per row — this table compares against the one buyers actually use most.

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",
"description": "Set on the banks of the Campuhan river, this spa hotel is a 5-minute walk from Ubud Palace...",
"highlights": [{ "title": "Ideal location", "description": "Guests were happy with the property's location." }],
"amenities": ["Outdoor swimming pool", "Spa", "Free Wi-Fi in public areas", "Airport pick-up"],
"amenityGroups": [
{ "group": "Most popular facilities", "items": [
{ "name": "Outdoor swimming pool", "note": null, "details": ["Business hours [Mon - Sun] 09:00-21:00"] },
{ "name": "Spa", "note": "Additional charge", "details": [] }
] }
],
"amenityCount": 34,
"images": ["https://ak-d.tripcdn.com/images/....jpg"],
"imageGroups": [{ "group": "Outdoor swimming pool", "images": ["https://ak-d.tripcdn.com/images/....jpg"] }],
"imageCount": 18,
"checkInTime": "15:00",
"checkOutTime": "12:00",
"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"))
  • JavaScriptnpm 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 description, descriptionSections, amenities, amenityGroups, amenityCount, images, imageGroups, imageCount, highlights, checkInTime, checkOutTime, 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.

Hotel rates by date, not just a list of hotels

Prices depend on when you stay, which is why a list of hotels without dates is close to useless. Every row here carries the check-in and check-out you asked for, the nightly rate and the total including taxes and fees, so hotel price data can be compared honestly across properties and cities.

Hotel availability and room rates on a schedule

Run the same city daily and the rows stack into a rate history: what a room costs as the date approaches, when a property sells out, how a district moves in season. That is the hotel booking data hotels and analysts pay for, built from public pages.

❓ 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 Verifier & Phone Number ValidatorChecks e-mails and phone numbers in bulk: deliverability, throwaway and role flags, numbering plan, US state and time zone

Also known as

People look for this Actor as a Trip.com scraper, a hotel price scraper, a hotel rates API, hotel availability data, hotel booking data, an Asia hotel prices source, and a Ctrip scraper.