Hotel display-price monitoring
Use Trip.com endpoints to turn hotel display-price monitoring into repeatable API requests with documented inputs and JSON responses.
Turn public Trip.com pages into structured hotel data — a city's curated top-hotels list carrying each hotel's display nightly price, star and guest ratings, and location, plus full hotel detail with facilities, policies, images and a rating breakdown. Normalized JSON, credential-free. Nightly prices come from the city listing, not the detail page.
Get Trip.com's curated top-hotels page for a city with display prices, plus full hotel detail, as structured JSON.
Endpoint families
1
Documented params
6
Examples
2
Live catalog snapshot
Active endpoints
2
Methods
GET
Required params
5
Schema refs
2
{
"platform": "Trip.com",
"endpoint": "tripcom-hotels-search",
"method": "GET",
"path": "/tripcom/hotels/search",
"auth": "apiKey"
}Use cases
Get Trip.com's curated top-hotels page for a city with display prices, plus full hotel detail, as structured JSON.
Use Trip.com endpoints to turn hotel display-price monitoring into repeatable API requests with documented inputs and JSON responses.
Use Trip.com endpoints to turn travel-market research into repeatable API requests with documented inputs and JSON responses.
Use Trip.com endpoints to turn hotel metadata enrichment into repeatable API requests with documented inputs and JSON responses.
Managed execution
Every figure below is read from the live Trip.com endpoint catalog — 2 endpoints, 6 documented request parameters, and 2 published response schemas — the same catalog Docs and Playground run against.
2 documented Trip.com endpoints, all in the Hotels family.
6 request parameters are documented across those Trip.com endpoints, 5 of them required — the full input contract is public before you write any integration code.
2 of the 2 Trip.com endpoints ship a recorded example response, and 2 carry a documented response schema — you can code against the real JSON before the first request.
Trip.com endpoints document their error responses (400, 404, 500 and 503) alongside the success schema, so a block, a rate limit, or a missing record comes back as a typed error rather than silently empty data.
2 hosted MCP tools back the Trip.com endpoints, so an agent can call the same routes with the same parameters and the same JSON contract, with no custom glue.
Coverage map
These cards are generated from the active endpoint catalog, so the landing page reflects the same API surface used by Docs and Playground.
/tripcom/hotels/search
Endpoint catalog
/tripcom/hotels/searchReturns Trip.com's own top-hotels page for a city: normalized hotel summaries (name, location, star rating, guest rating, review count, image, display price) for the hotels Trip.com features on that city's hotel-list page. Trip.com does not expose a credential-free free-text city search, so callers supply the exact city_slug and city_id pair from a known Trip.com hotel-list URL of the form https://www.trip.com/hotels/{city_slug}-hotels-list-{city_id}/. Credential-free public data sourced from Trip.com's own server-rendered hotel-list page.
Response notes
- Both `city_slug` and `city_id` must be exactly correct — Trip.com's own page 404s on a mismatched slug even when the id is valid, and this endpoint surfaces that as a `404`. - `hotels` is Trip.com's own curated top-hotels page for the city, not a fully paginated search — Trip.com does not expose page/offset parameters credential-free on this page. `count` reports exactly how many hotels this page returned, not a citywide total. - Each hotel's `price` is the list page's display price for the shown stay length (usually one night), not a full rate breakdown. - `hotel_id` in each result is the numeric Trip.com hotel id to pass to the hotel-detail endpoint. Example response: ```json { "code": 200, "msg": "OK", "data": { "city_slug": "bangkok", "city_id": "359", "count": 9, "hotels": [ { "hotel_id": 39371462, "name": "Divalux Resort and Spa Bangkok, Suvarnabhumi Airport-Free Shuttle", "url": "https://www.trip.com/hotels/bang-sao-thong-district-hotel-detail-39371462/divalux-resort-and-spa-bangkok-suvarnabhumi-airport-free-shuttle/", "image_url": "https://ak-d.tripcdn.com/images/0585b12000sq6ih4c6345.jpg", "location": "88 Moo3, Sriwaree Road, Sisa Chokhe Noi, Bang Sao Thong District, Srisa Chorakhe Noi, Bang Sao Thong", "star_rating": 5, "rating_score": 8.7, "review_count": 872, "description": "The hotel has a relaxing wellness atmosphere, and the staff are friendly and provide excellent service.", "price": {"raw": "US$38", "currency": "US$", "amount": 38, "unit": "1 night"} } ], "source_url": "https://www.trip.com/hotels/bangkok-hotels-list-359/" } } ```
MCP tool tripcom_hotels_search
/tripcom/hotels/{id}Returns a normalized Trip.com hotel-detail page: identity (name, local name, star rating, city/province/country), location (address, zone, latitude/longitude, nearby-transport description), guest rating (overall score plus cleanliness/amenities/location/service breakdown), images, description, check-in/check-out and child policy summaries, and popular facilities. Credential-free public data sourced from Trip.com's own server-rendered hotel-detail page. Pricing is not included: Trip.com's detail page only returns per-night rates alongside check-in/check-out dates, which this endpoint does not take as input -- use the search endpoint for a city's current display prices.
Response notes
- `id` must be numeric; a non-numeric value returns `400` before any upstream request is made. - Trip.com's own detail route always returns HTTP `200`, even for a nonexistent hotel id — this endpoint detects Trip.com's own not-found page content and returns `404` instead of an empty `200`. - Pricing is intentionally not included: Trip.com's detail page only returns per-night rates alongside check-in/check-out dates and occupancy, which this endpoint does not take as input. Use the search endpoint for a city's current display prices. - `images` is a list of image URLs from the hotel's photo gallery; `image_count` reports the gallery's full photo count, which may be larger than `images`. - `policy.check_in_out` and `policy.child` are short human-readable lines taken directly from Trip.com's own display text, not a structured rule schema. Example response: ```json { "code": 200, "msg": "OK", "data": { "hotel_id": 39371462, "name": "Divalux Resort and Spa Bangkok, Suvarnabhumi Airport-Free Shuttle", "star_rating": 5, "city_name": "Bang Sao Thong", "province_name": "Samut Prakan Province", "country_name": "Thailand", "open_year": "2019", "highlights": ["Free airport transfers", "Great views"], "location": { "address": "88 Moo3, Sriwaree Road, Sisa Chokhe Noi, Bang Sao Thong District, Samut Prakan Province, 10570, Thailand", "zone_name": "Suvarnabhumi Airport", "latitude": 13.69316, "longitude": 100.793475, "traffic_description": "15 km from Pra Chom Klao, approx. 27 mins by car" }, "rating": { "score": 8.6, "score_description": "Very good", "score_max": 10, "total_comment": 875, "recommend": "79% Recommended", "cleanliness_score": 8.7, "amenities_score": 8.8, "location_score": 8.3, "service_score": 8.7 }, "images": ["https://ak-d.tripcdn.com/images/0585b12000sq6ih4c6345_R_960_660_R5_D.jpg"], "image_count": 10, "description": "With a stay at Divalux Resort & Spa Bangkok, Suvarnabhumi Airport in Bang Sao Thong, you'll be 6.1 mi (9.9 km) from Lakewood Golf And Country Club...", "policy": { "check_in_out": ["Check-in: After 14:00", "Check-out: Before 12:00", "Front desk hours: 24/7"], "child": ["Children of all ages are welcome at this property."] }, "popular_facilities": ["Outdoor swimming pool", "Spa", "Massage room"], "source_url": "https://www.trip.com/hotels/bang-sao-thong-district-hotel-detail-39371462/divalux-resort-and-spa-bangkok-suvarnabhumi-airport-free-shuttle/" } } ```
MCP tool tripcom_hotel_detail
Related APIs
Travel & Hospitality
Build travel and lodging research workflows from structured Airbnb stay, room, availability, and review data.
Travel & Hospitality
Research hotels, restaurants, attractions, and destination pages from TripAdvisor with normalized listing and review endpoints.
Travel & Hospitality
Turn Expedia's Stays, Flights, and Things To Do results into structured JSON — destination search, hotel listings with pricing and reviews, flight offers, and activity search, sourced from the same API the official mobile app uses. Credential-free.
Company coverage
Trip.com Group Ltd · TCOM
Trip.com is operated by Trip.com Group Ltd (TCOM). Crawlora's SEC endpoints take the same company's CIK, so filings, financials, insider transactions and 13F holdings come from the same API key as the Trip.com endpoints above.
SEC filings & financials API →How to scrape Trip.com
Crawlora's two Trip.com endpoints return a city's curated top-hotels page and full hotel detail as normalized JSON with one API key — no account or signed session. The important thing to know before you start is that the nightly price lives on the city listing, not on the hotel detail.
/tripcom/hotels/search takes city_slug and city_id, and both are required and must match each other — there is no plain city-name parameter, and passing one returns a 400. Read the pair off a Trip.com city hotel-list URL; paris with 192, london with 338, singapore with 73 and bangkok with 359 all resolve. A mismatched pair 404s even when the id itself is valid.
Each hotel in the response carries hotel_id, name, url, image, location, star_rating, rating_score, review_count and a price object — for example a raw display string of US$67 broken out into currency, amount and a unit of 1 night. This is Trip.com's own headline display rate, not a quote for specific dates.
The response is Trip.com's curated top-hotels page for that city — typically around nine hotels — not a fully paginated search. Trip.com exposes no page or offset parameter credential-free here, so count reports what this page returned rather than a city-wide total. Treat it as a monitored sample, not an inventory sweep.
Pass a hotel_id to /tripcom/hotels/{id} for identity and local name, star rating, city/province/country, location with coordinates and nearby transport, a guest-rating breakdown, images, description, policies and popular facilities. The id must be numeric or you get a 400, and because Trip.com serves HTTP 200 even for a nonexistent hotel, this endpoint detects its not-found page and returns a real 404 instead of an empty success.
FAQ
Call /tripcom/hotels/search with both city_slug and city_id — for example paris and 192 — and each hotel comes back with a price object holding the raw display string, currency, amount and unit. A city name on its own will not work: both parameters are required and must correspond to the same Trip.com city page.
No, and this is the one thing worth knowing before you build against it. Nightly rates only exist on Trip.com's detail page alongside specific check-in and check-out dates, so the endpoint deliberately excludes them and returns hotel metadata instead — facilities, policies, images, coordinates and the guest-rating breakdown. The display price you can collect comes from the city listing endpoint.
Not credential-free. The endpoint returns Trip.com's own curated top-hotels page for the city, around nine hotels, and Trip.com exposes no page or offset parameter on it. The count field reports how many that page returned, not how many hotels exist in the city.
Almost always a city_slug and city_id that do not match. Trip.com's own page 404s on a mismatched slug even when the id is valid, and the endpoint surfaces that rather than guessing. On the detail endpoint, a 404 means the hotel genuinely does not exist — Trip.com returns a 200 with a not-found page there, which this endpoint detects and converts into a real 404.
Collecting publicly accessible hotel data is generally permissible if you respect Trip.com's terms of use, robots directives, rate limits, and applicable law. This is for public data you are authorized to collect.