Trip.com Hotel & Room Scraper avatar

Trip.com Hotel & Room Scraper

Pricing

from $4.50 / 1,000 hotel scrapes

Go to Apify Store
Trip.com Hotel & Room Scraper

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

Datawebot

Maintained by Community

Actor stats

1

Bookmarked

1

Total users

0

Monthly active users

3 days ago

Last modified

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 subdomainth.trip.com, www.trip.com, sg.trip.com, etc.

Input

FieldTypeRequiredDescription
hotelUrlsarrayList of {url, name} objects pointing to Trip.com hotel pages
checkinDatestringCheck-in date YYYY-MM-DD. Default: 7 days from today
checkoutDatestringCheck-out date YYYY-MM-DD. Default: check-in + 1 night
roomsintegerNumber of rooms (1–10). Default: 1
adultsintegerNumber of adults (1–10). Default: 2
childrenintegerNumber of children (0–6). Default: 0
proxyConfigurationobjectApify proxy configuration (residential or datacenter)
proxyUrlstringCustom proxy URL, e.g. http://user:pass@host:port
headlessbooleanRun 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.

FieldTypeDescription
hotelNamestringHotel name as provided in input
hotelUrlstringHotel page URL (without query params)
checkinstringCheck-in date
checkoutstringCheck-out date
roomIdstringInternal room ID from Trip.com
roomNamestringRoom name
roomTypestringRoom type category
bedTypestringBed configuration
maxOccupancyintegerMaximum number of guests
priceInclVatfloatPrice including VAT (as displayed on Trip.com)
priceExclVatfloatPrice excluding VAT (÷ 1.07)
originalPriceInclVatfloatOriginal (before discount) price including VAT
originalPriceExclVatfloatOriginal price excluding VAT
breakfastIncludedbooleanWhether breakfast is included
freeCancellationbooleanWhether free cancellation is available
payLaterbooleanWhether 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

  1. Builds a full Trip.com hotel URL with check-in/out dates and guest counts
  2. Launches a headless Chromium browser with anti-detection (randomised fingerprint)
  3. Listens for two internal Trip.com APIs:
    • getHotelRoomListOversea — list of available rooms and prices
    • getHotelRoomPopInfoPCOnline — detailed room information (name, bed type, etc.)
  4. Scrolls the page to trigger the API calls
  5. 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 Configuration input field — supports residential and datacenter proxies
  • Custom proxy: provide a URL in the Custom Proxy URL field, 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

VersionDateNotes
0.12026-04-02Initial release