Trip.com Travel Attraction Detail API
Get one attraction from its Trip.com link: title, category, description and location.
- 1 credit per call
- Failed calls are free
- Updated
- tripcom.attractions.get
{ "title": "The Palace Museum", "rating": 4.9, "reviews": 203061, "location": "No. 4, Jingshanqian Street, Dongcheng District, Beijing", "attraction_id": "75595", "category": "3", "collected_at": "2026-10-16T12:26:37Z", "description": "The Forbidden City, also known as the Imperial Palace, was the imperial palace of the Ming and Qing dynasties, and is also the symbol of an…", "is_free": false, "opening_hours": "Open tomorrow at 08:30–17:00(Admission ends at 16:00)", "price_from": "11.62", "query": "75595", "source_url": "https://in.trip.com/travel-guide/attraction/beijing/the-palace-museum-75595?currency=GBP&locale=en", "url": "https://in.trip.com/travel-guide/attraction/beijing/the-palace-museum-75595?poiType=3&curr=GBP&locale=en-IN&scene=basic"}
What you send
The input
object of the request, with every field the endpoint accepts.
| Field | Type | Required | What it does | Example |
|---|---|---|---|---|
| attraction_url | string | yes | Trip.com attraction detail URL returned by attraction search, including regional hosts | https://www.trip.com/travel-guide/attraction/be… |
| currency | string | no | Currency for returned prices. | GBP |
| locale | string | no | Locale to use for the request. | en |
Fields it returns
What each record in the response holds, with the values from the sample above.
| Field | Type | What it is | Example |
|---|---|---|---|
| title | string | The attraction's name. | The Palace Museum |
| rating | number | The attraction's average rating. | 4.9 |
| reviews | integer | How many reviews the attraction has. | 203,061 |
| location | string | The attraction's address. | No. 4, Jingshanqian Street, Dongcheng District, Beijing |
| attraction_id | string | Trip.com's ID for the attraction. | 75595 |
| category | string | 3 | |
| collected_at | string | When this result was collected. | 2026-10-16T12:26:37Z |
| description | string | Trip.com's description of the attraction. | The Forbidden City, also known as the Imperial Palace, was the … |
| is_free | boolean | Whether entry is free. | false |
| opening_hours | string | Opening hours as Trip.com shows them. | Open tomorrow at 08:30–17:00(Admission ends at 16:00) |
| price_from | string | The lowest ticket price shown, in the page's currency. | 11.62 |
| query | string | The attraction you asked for. | 75595 |
| source_url | string | The Trip.com page this was read from. | https://in.trip.com/travel-guide/attraction/beijing/the-palace-… |
| url | string | The page on Trip.com. | https://in.trip.com/travel-guide/attraction/beijing/the-palace-… |
Call it from your code, or ask your agent
Set UPSCRAPE_API_KEY to your key and copy a working request.
curl --request POST \ --url https://data.upscrape.com/execute \ --header "Authorization: Bearer $UPSCRAPE_API_KEY" \ --header "Content-Type: application/json" \ --header "Prefer: wait=30" \ --data '{ "capability": "tripcom.attractions.get", "input": { "attraction_url": "https://www.trip.com/travel-guide/attraction/beijing/the-palace-museum-75595", "currency": "GBP", "locale": "en" }}'
import jsonimport osimport requestspayload = json.loads(r'''{ "capability": "tripcom.attractions.get", "input": { "attraction_url": "https://www.trip.com/travel-guide/attraction/beijing/the-palace-museum-75595", "currency": "GBP", "locale": "en" }}''')response = requests.post( "https://data.upscrape.com/execute", headers={ "Authorization": f"Bearer {os.environ['UPSCRAPE_API_KEY']}", "Content-Type": "application/json", "Prefer": "wait=30", }, json=payload,)response.raise_for_status()print(json.dumps(response.json(), indent=2))
const response = await fetch("https://data.upscrape.com/execute", { method: "POST", headers: { "Authorization": `Bearer ${process.env.UPSCRAPE_API_KEY}`, "Content-Type": "application/json", "Prefer": "wait=30", }, body: JSON.stringify({ "capability": "tripcom.attractions.get", "input": { "attraction_url": "https://www.trip.com/travel-guide/attraction/beijing/the-palace-museum-75595", "currency": "GBP", "locale": "en" }}),});if (!response.ok) { throw new Error(`Upscrape request failed: ${response.status}`);}console.log(JSON.stringify(await response.json(), null, 2));
https://data.upscrape.com/mcp
With Upscrape, get the Trip.com Travel attraction detail for https://www.trip.com/travel-guide/attraction/beijing/the-palace-museum-75595, currency "GBP" and locale "en". Tell me what it costs before you run it, then show the results as a table.
More from the Trip.com Travel API
- Trip.com Travel Hotel Search API1 credit
- Trip.com Travel Hotel Detail API1 credit
- Trip.com Travel Attractions Search API1 credit
- Trip.com Travel Flight Search API1 credit
- Trip.com Travel Public Hotel Reviews API1 credit
- Trip.com Travel Train Search API1 credit
- Trip.com Travel Car Rental Search API1 credit
Trip.com Travel Attraction Detail API FAQ
The short answers. The docs have the long ones.
How much does the Trip.com Travel Attraction Detail API cost?
1 credit per successful call, shown before it runs. You buy credits once, and paid credits never expire.
What do I send?
Send attraction_url. The input fields below list every option with its type and limits.
Do I need a Trip.com Travel login?
No. It reads public Trip.com Travel data; nothing runs on your account.
Can my AI agent call it?
Yes, over MCP: the agent finds tripcom.attractions.get, checks its price and runs it with the same credits as the REST API.
Your first Trip.com Travel call is free.
Up to 100 free credits to start, no card needed.