Pricing
from $4.50 / 1,000 hotel scrapes
Trip.com Hotel & Room Scraper
Extract room listings and live prices from any Trip.com hotel page. Supports custom check-in/out dates, guest counts, and multiple hotels per run. Works with all Trip.com country subdomains (th, sg, id, etc.).
Pricing
from $4.50 / 1,000 hotel scrapes
Rating
5.0
(2)
Developer
Actor stats
2
Bookmarked
39
Total users
7
Monthly active users
2 months ago
Last modified
Categories
Share
Extract room listings and live prices from any Trip.com hotel page. Supports custom check-in/out dates, guest counts, and multiple hotels per run. Works with all Trip.com country subdomains (th, sg, id, etc.).
Features
- Room names โ in the local language of the Trip.com subdomain (e.g. Thai on
th.trip.com) - Prices โ both VAT-inclusive and VAT-exclusive (รท 1.07 for Thailand)
- Original / discounted prices when a strikethrough price is shown
- Room attributes โ bed type, max occupancy, breakfast inclusion, free cancellation, pay-later
- Anti-detection โ randomised browser fingerprint (user-agent, WebGL, platform)
- Supports any Trip.com country subdomain โ
th.trip.com,www.trip.com,sg.trip.com, etc.
Input
| Field | Type | Required | Description |
|---|---|---|---|
hotelUrls | array | โ | List of {url, name} objects pointing to Trip.com hotel pages |
checkinDate | string | Check-in date YYYY-MM-DD. Default: 7 days from today | |
checkoutDate | string | Check-out date YYYY-MM-DD. Default: check-in + 1 night | |
rooms | integer | Number of rooms (1โ10). Default: 1 | |
adults | integer | Number of adults (1โ10). Default: 2 | |
children | integer | Number of children (0โ6). Default: 0 | |
proxyConfiguration | object | Apify proxy configuration (residential or datacenter) | |
proxyUrl | string | Custom proxy URL, e.g. http://user:pass@host:port | |
headless | boolean | Run browser without UI. Default: true |
Example input
{"hotelUrls":[{"url":"https://th.trip.com/hotels/bangkok-hotel-detail-1257190/jw-marriott-hotel-bangkok","name":"JW Marriott Bangkok"},{"url":"https://th.trip.com/hotels/bangkok-hotel-detail-1500545/marriott-hotel-sukhumvit-bangkok","name":"Bangkok Marriott Sukhumvit"}],"checkinDate":"2026-05-01","checkoutDate":"2026-05-02","rooms":1,"adults":2,"children":0}
Output
Each item in the dataset represents one bookable room option.
| Field | Type | Description |
|---|---|---|
hotelName | string | Hotel name as provided in input |
hotelUrl | string | Hotel page URL (without query params) |
checkin | string | Check-in date |
checkout | string | Check-out date |
roomId | string | Internal room ID from Trip.com |
roomName | string | Room name |
roomType | string | Room type category |
bedType | string | Bed configuration |
maxOccupancy | integer | Maximum number of guests |
priceInclVat | float | Price including VAT (as displayed on Trip.com) |
priceExclVat | float | Price excluding VAT (รท 1.07) |
originalPriceInclVat | float | Original (before discount) price including VAT |
originalPriceExclVat | float | Original price excluding VAT |
breakfastIncluded | boolean | Whether breakfast is included |
freeCancellation | boolean | Whether free cancellation is available |
payLater | boolean | Whether pay-at-hotel is available |
Example output item
{"hotelName":"JW Marriott Bangkok","hotelUrl":"https://th.trip.com/hotels/bangkok-hotel-detail-1257190/jw-marriott-hotel-bangkok","checkin":"2026-05-01","checkout":"2026-05-02","roomId":"1606182637","roomName":"Deluxe King Room","roomType":"Deluxe","bedType":"King","maxOccupancy":2,"priceInclVat":6900,"priceExclVat":6448.60,"originalPriceInclVat":0,"originalPriceExclVat":0,"breakfastIncluded":false,"freeCancellation":false,"payLater":false}
How it works
- Builds a full Trip.com hotel URL with check-in/out dates and guest counts
- Launches a headless Chromium browser with anti-detection (randomised fingerprint)
- Listens for two internal Trip.com APIs:
getHotelRoomListOverseaโ list of available rooms and pricesgetHotelRoomPopInfoPCOnlineโ detailed room information (name, bed type, etc.)
- Scrolls the page to trigger the API calls
- Merges and parses the two responses into structured room records
Proxy
Trip.com generally works without a proxy from Apify's servers. A proxy is only needed if you encounter IP blocks or CAPTCHAs at high scraping volumes.
- Apify Proxy (recommended if needed): enable via the
Proxy Configurationinput field โ supports residential and datacenter proxies - Custom proxy: provide a URL in the
Custom Proxy URLfield, e.g.http://user:pass@proxy-host:port
Limits & notes
- One run per hotel page; each hotel takes ~20โ40 seconds
- Prices reflect what Trip.com shows for the given dates, guest count, and currency of the subdomain
- Room names may appear in the local language depending on the Trip.com subdomain used
- The actor does not book rooms or submit any forms
Version history
| Version | Date | Notes |
|---|---|---|
| 0.1 | 2026-04-02 | Initial release |
