Trip.com Hotel & Room Scraper
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
0.0
(0)
Developer
Datawebot
Actor stats
1
Bookmarked
1
Total users
0
Monthly active users
3 days 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 |