Trip.com Things to Do Search
Pricing
from $2.10 / 1,000 product-scrapeds
Trip.com Things to Do Search
Search Trip.com's things-to-do catalogue by keyword, city or attraction. Get every tour, ticket and activity with its price, rating, review count, booking count, vendor, images and tags. It has four sort orders and rating, cancellation and category filters. $3.00 per 1,000 products.
Pricing
from $2.10 / 1,000 product-scrapeds
Rating
0.0
(0)
Developer
BonCross API
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
What is Trip.com Things to Do Search?
Trip.com Things to Do Search is the keyword search of Trip.com's tours, tickets and activities, run for you at scale. Type "bangkok" and you get what a traveller sees when they search the same word: on 7 October 2026 Trip.com reported 10,816 matches for it, and you decide how deep to go: the default is 90 per search, and the cap goes up to 5,000. Each product arrives with its price, rating, review count, booking count and the vendor behind it.
It covers things to do only. Trip.com's hotels have their own actors, linked at the bottom of this page.
Why people pick it for catalogue and market work:
- You see demand as well as price. Booking count, review count and vendor were filled on all 125 products in our seven-keyword check.
- Trip.com does the narrowing. Its 4.5-and-above rating filter cut one city search from 10,999 matches to 3,023, and you only pay for the rows you get back.
- It's quick. Twelve keywords at 54 results each, 648 rows, took 16 to 19 seconds, and long runs deliver about 2,000 to 2,400 results a minute.
- You can ask for a travel-date window, a price band, free cancellation or instant confirmation, in four sort orders.
- $3.00 per 1,000 products on the Free plan and $2.10 on Business. That's the whole price, with nothing to set up.
BonCross Verified means we tested this actor against the live site before release and kept the record:
- 29 of 29 live checks on its inputs and filters passed on 8 October 2026
- 7 keywords run on 7 October 2026 across Bangkok, Paris, Seoul, Dubai and Queenstown: 210 results, none empty
- Charges matched the rows: 7 searches, 210 results
- A search that cannot be run gets an uncharged row saying why
What else it does:
- Search by city, by country or by a phrase such as "tokyo disneyland"
- Search inside one attraction instead of a whole destination
- Get the crossed-out price and Trip.com's discount amount when a product is on sale
- Collect card images and the tags on each card, duration and guide language included
- Keep or drop the attraction pages Trip.com mixes into its results
- Quote prices in your currency and read names and tags in another language
- Tell you in a row of its own when a search couldn't be run, and why
Which Trip.com scraper do you need?
Five actors cover Trip.com's things to do, and they join on the product id.
| You want | Use |
|---|---|
| To find products across a city, a country or a theme | This actor |
| The full record of one tour or activity: packages, itinerary, policies | Trip.com Product Details Scraper |
| The ticket shelf of one attraction, with person types and stock | Trip.com Attraction Products Scraper |
| The price and places left on a specific date | Trip.com Attraction Availability & Prices |
| What visitors wrote about an attraction | Trip.com Attraction Reviews Scraper |
The usual path starts here. Search a destination, then paste the links you get into the details or availability actor.
What data is on a result row?
| 🎟️ Product name | Product id |
| 💵 Price, and what it's per | Crossed-out price and discount amount |
| ⭐ Rating out of 5, with Trip.com's word for it | Review count |
| 🛒 Booking count | "% of travelers recommend" line |
| 🏢 Vendor name and id | 🖼️ Cover image and card images |
| Departure cities | 📍 Places the product covers |
| Tags, flat and grouped: duration, language, cancellation | Category name and id |
| On-sale flags with the raw stock code | 🔗 Product link |
| Attraction cards: address, coordinates, opening hours, ranking | Search, rank and Trip.com's match count |
How to search Trip.com things to do
There's no code to write: it's a form in, a spreadsheet out.
- Create a free Apify account and open Trip.com Things to Do Search.
- Type one or more search keywords: a city, a country or a phrase.
- Pick a sort order, any filters, and how many results you want per search.
- Press Start. Results appear in the Output tab as the run goes.
- Download them as Excel, CSV, JSON, XML or HTML.
⬇️ Input
Give it search keywords, attraction links or ids to search within, or both. One keyword is enough to run.
You have two limits. "Max results per search" (default 90, up to 5,000, and 0 for everything Trip.com returns) applies to each keyword or attraction separately: ten targets at 50 each returns 500. "Maximum results for the whole run" caps the total, and nothing past it is fetched or charged for.
Prices come back in the currency you choose (default USD), and names and tags in the locale (default en-XX).
A whole city
{"searchQueries": ["bangkok"],"maxResultsPerQuery": 90,"currency": "USD"}
The best sellers in two cities, rated 4.5 and above
{"searchQueries": ["seoul", "bangkok"],"sortBy": "most_booked","minRating": "4.5","maxResultsPerQuery": 60}
Cheapest first, free cancellation, no attraction cards
{"searchQueries": ["bangkok"],"sortBy": "price_asc","serviceFilters": ["free_cancellation"],"includeAttractionCards": false}
Bookable on a weekend, inside a price band
{"searchQueries": ["seoul"],"startDate": "2026-11-21","endDate": "2026-11-22","minPrice": 20,"maxPrice": 80,"currency": "USD"}
What Trip.com sells around one attraction
{"attractions": ["https://www.trip.com/travel-guide/attraction/bangkok/the-grand-palace-77012"],"maxResultsPerQuery": 30}
Run with a cap of 6 on 7 October 2026, that last search returned five products and the Grand Palace's own card, out of 30 matches.
| Field | Notes |
|---|---|
searchQueries | Keywords: a city, a country or a phrase. |
attractions | Trip.com attraction URLs or bare attraction ids to search within. |
maxResultsPerQuery, maxItems | The per-search cap and the run-wide cap. |
sortBy | recommended (default), rating_desc, price_asc or most_booked. |
minRating | 4.0 or 4.5, the two thresholds Trip.com's search offers. |
serviceFilters | free_cancellation, instant_confirmation, or both. |
categoryCodes | Trip.com category codes such as WaterActivities or AerialTours. |
startDate, endDate | A travel-date window, YYYY-MM-DD. Leave the end empty for one day. |
minPrice, maxPrice | A price band in the chosen currency. 0 means no bound. |
includeAttractionCards | On by default. Off drops the attraction pages, and dropped rows are free. |
currency, locale | ISO currency code, and the Trip.com locale for names and tags. |
includeRawData, delayMs, maxConcurrency | Advanced. See below. |
For developers
- The rating, service, category and travel-date filters are applied by Trip.com, which shrinks the search itself.
minPriceandmaxPriceare checked row by row, and further pages are read to fillmaxResultsPerQuery. - With a price band set, a search that keeps nothing stops early: after 5 pages in a row with no product kept, or after about three times the pages
maxResultsPerQueryneeds. - Results come 18 to a page, Trip.com's page size. Each search's pages are read in order, and a product Trip.com repeats on a later page of the same search is returned once.
categoryCodesdiffer by destination. The codes available for a search are listed in that search's own filter block, and a code from one city returns nothing in another.maxConcurrency(default 8, from 1 to 8) is how many requests run at once. The default is the fastest level measured clean. Lower it only if a run reports refusals or errors.delayMs(default 700, up to 10,000) is the pause between calls on each lane, in milliseconds.includeRawData(defaultfalse) attaches the unparsed record to each row.- Rows are saved as they arrive. If Apify restarts a run part-way, it carries on where it stopped without saving or charging a result twice.
- A row reporting a search that couldn't be run isn't counted against
maxItems.
⬆️ Output
One row per result, product or attraction card. This is the fifth result for "bangkok" on 7 October 2026, with two of its five card images and four of its six tag groups shown:
{"input": "bangkok","id": "49278954-bangkok","productId": "49278954","resultType": "product","url": "https://www.trip.com/things-to-do/detail/49278954","name": "High-quality Small-group | Day tour to Damnoen Saduak Floating Market & Maeklong Railway Market in Bangkok | Optional Private Tour","subName": null,"productType": "yiriyou","price": 19.72,"priceListed": 21.92,"priceUnit": "person","discountAmount": 2.2,"rating": 4.8,"ratingScale": 5,"ratingText": "Outstanding","reviewCount": 1193,"salesCount": 12205,"salesText": "12.2k booked","vendorName": "GGG Co Ltd","vendorId": "1184751","images": ["https://ak-d.tripcdn.com/images//0586112000mzvh6bvB6E8_C_568_320.jpg?proc=crop/m_c,w_1422,h_1066,x_47,y_0,g_center,070D","https://ak-d.tripcdn.com/images//0580p12000nmncnuj3586_C_568_320.jpg?proc=crop/m_c,w_1420,h_1065,x_11,y_0,g_center,2143"],"imageCount": 15,"coverImage": "https://ak-d.tripcdn.com/images//0586112000mzvh6bvB6E8_C_568_320.jpg?proc=crop/m_c,w_1422,h_1066,x_47,y_0,g_center,070D","departures": ["Bangkok"],"locations": ["Damnoen Saduak", "Mueang Samut Songkhram"],"tags": ["Trip Select", "Duration: 7 hrs", "English", "Free cancellation", "Departs from Bangkok"],"tagsByGroup": {"PT_BRAND_TAG": ["Trip Select"],"PT_TOP_TAG": ["Duration: 7 hrs", "English"],"PT_HIGHLIGHT_TAG": ["Free cancellation"],"DEPARTURE_LOCATION_DESC_TAG": ["Departs from Bangkok"]},"categoryName": "Day tour product","categoryId": "10112","isAvailable": true,"stockStatus": "1","isOnline": true,"isBookable": true,"feedbackText": "95.5% of travelers recommend","query": "bangkok","poiIdSearched": null,"rank": 5,"totalResults": 10816,"currency": "USD","sortBy": "recommended","scrapedAt": "2026-10-07T16:59:25.282Z"}
Trip.com mixes attraction pages into its product list, and resultType tells you which a row is. In that seven-keyword check, 85 of the 210 rows were attraction cards. An attraction row has the place's own detail in place of the product columns: name, address, coordinates, opening hours, ranking and the cheapest ticket price.
| Column | On | Meaning |
|---|---|---|
id | both | The result id plus the keyword (or attraction) that found it. The same product found by two searches is two rows |
productId, poiId | product, attraction | Trip.com's id, unqualified |
resultType | both | product or attraction |
subName | both | A second name, usually the local-language one |
productType, categoryName, categoryId | product | Trip.com's product type code, category name and category id |
price | both | Lowest price |
priceUnit | product | What the price is per (person, quantity …) |
priceListed, discountAmount | product | The crossed-out price and the saving, only when the product is discounted (36 of 125 products in the check) |
rating, ratingScale | both | Score out of 5. Empty on an unrated result |
ratingText | product | Trip.com's word for the score |
reviewCount, tripadvisorReviewCount | both / attraction | Trip.com reviews, and the Tripadvisor count Trip.com shows on attraction pages |
salesCount, salesText | product | Bookings, as a number and as the card shows it |
feedbackText | product | The recommendation line, e.g. "95.5% of travelers recommend" |
vendorName, vendorId | product | Who runs the product |
coverImage, images | both | Cover image and the card images |
imageCount | product | How many images the product has |
departures, locations | product | Where it departs from and the places it covers |
tags, tagsByGroup | both | Card tags, flat and grouped the way Trip.com groups them |
isAvailable, stockStatus, isOnline, isBookable | product | On sale, with the raw stock code beside the flag |
introduction, address, lat, lng, districtName, zoneName, openingHoursText, ranking, rankingReason, poiType | attraction | The attraction's detail |
query, poiIdSearched, rank, totalResults, sortBy, currency | both | Which search produced the row, its position, and the match count Trip.com reports |
How many results can you get, and how fast?
Three runs of each, timed on 2 October 2026. The time is the whole run, start-up included.
| Run | Rows | Time | Price on the Free plan |
|---|---|---|---|
| One keyword, 8 results | 8 | 4.5 to 7.4 s | $0.028 |
| Two keywords, 100 results each | 200 | 7.5 to 10.0 s | $0.606 |
| Twelve keywords, 54 results each | 648 | 16 to 19 s | $1.970 |
A run of many searches delivers about 2,000 to 2,400 results a minute. One very deep search is slower per result than many shallow ones, because a search's pages are read in order.
A broad city search reports more than ten thousand matches. Set the per-search cap to the number you'll actually use.
How much does it cost to search Trip.com things to do?
| Event | Free plan | Starter | Scale | Business |
|---|---|---|---|---|
actor-start, per run | $0.002 | $0.002 | $0.002 | $0.002 |
query-resolved, per search | $0.002 | $0.002 | $0.002 | $0.002 |
product-scraped, per row returned | $0.003 | $0.0027 | $0.0024 | $0.0021 |
Enterprise plans pay the Business price.
$3.00 per 1,000 products on the Free plan, $2.10 on Business. Platform usage is included, and there's no proxy to set up or pay for. Rows a filter removed are free, and so are attraction cards you switched off.
A search that can't be run costs nothing. You get one row whose error says what happened and what to try. If a later page of a long search can't be read, the results before it are kept and billed as usual, and one free row names the page where the list stopped. A search Trip.com answers with no results pays query-resolved and gets one free row saying there were none.
- One search, 1,000 results: $0.002 + $0.002 + 1,000 × $0.003 = $3.004 ($2.104 on Business).
- A daily watch of the top 50 for one keyword: $0.002 + $0.002 + 50 × $0.003 = $0.154 a run ($0.109 on Business).
The $5 of credits in Apify's Free plan each month go a fair way here: a one-keyword run at the default 90 results costs $0.274, which makes that about 18 runs, or roughly 1,600 results.
Limitations
- Hotels and flights are other parts of Trip.com and aren't searched here.
- Attraction pages can't be removed on Trip.com's side. They're marked, and you can switch them off.
- The rating filter has the two thresholds Trip.com offers, 4.0 and 4.5. You can't set another number.
- A row shows the headline "from" price. For a date, a time slot and a ticket type, use the availability actor.
- "Traveler rating" is Trip.com's weighting of score and review volume, and it lists attraction cards ahead of products. It doesn't put the highest score first.
- "Lowest price" follows the price before Trip.com's promotions, which can leave a discounted product a little below its neighbours.
FAQ
Do I need proxies or a Trip.com account?
Neither. You paste keywords and press Start, and the per-row price is all you pay.
Why did a misspelt keyword still return products?
Trip.com's search makes a best guess. In our check, a string of nonsense letters came back with 81 matches, all in Amsterdam. Look at totalResults and the first few names: a city that normally reports thousands and now reports dozens is the sign.
How do I get only products, without the attraction pages?
Switch off "Include attraction cards". The dropped rows cost nothing, and the run reads further pages to fill your cap with products. When you set a filter, Trip.com tends to leave the attraction pages out on its side as well.
How do I find tours I can book on my dates?
Fill in "Travel date from", and "Travel date until" for a window. Trip.com then returns only products it can sell on those days. On one search it reported 114 matches for a single day, 119 with a second day and 128 across thirty.
Does a price band save me money?
It saves you the rows outside the band, which aren't charged. Trip.com isn't doing that filtering, though: the actor reads pages and keeps what fits, and a band that matches almost nothing takes longer to fill. The rating, cancellation and date filters are the cheap ones.
Can I search a whole country, or inside one attraction?
Any phrase Trip.com's search box accepts works as a keyword, a country name included. For one attraction, paste its Trip.com link or id into Attractions and the search is scoped to it.
Why is the same product in my results twice?
You ran two searches that both found it. A row belongs to one search and records that search's rank and match count, which is why id is the product id plus the keyword. Deduplicate on productId if you want one row per product.
Is it legal to scrape Trip.com?
The actor reads only what Trip.com shows any visitor who isn't logged in. Scraping publicly available data is generally lawful, but how you use the data is your responsibility, including Trip.com's terms and the law where you operate.
Watch a destination, or call it from code
Schedule the same search daily or weekly with Apify Schedules and you have a record of prices, ratings and booking counts moving over a season. Results can go on to Google Sheets, Slack, Zapier, Make or Airbyte, and a webhook can start the details actor on the product links as soon as a search finishes.
From code, POST https://api.apify.com/v2/acts/boncross~tripcom-product-search/run-sync-get-dataset-items with the input as the JSON body returns the rows in one call. The apify-client packages on npm and PyPI cover longer runs.
For an AI agent, add the Apify MCP server (mcp.apify.com) to an MCP-capable client. The agent can then run a search like "most booked day tours from Seoul under $80" and read the products back.
More from BonCross
- Trip.com Attraction Products Scraper: Every product Trip.com sells for an attraction.
- Trip.com Attraction Availability & Prices: Trip.com attraction availability and prices.
- Trip.com Hotel Details Scraper: The full Trip.com record for any hotel, with its guest reviews.
- Trip.com Hotel Search Scraper: Every hotel Trip.com lists for a destination and your dates.
- Trip.com Product Details Scraper: Trip.com tour and activity details.
- Trip.com Attraction Reviews Scraper: Trip.com reviews for any attraction.
Your feedback
If a search here doesn't match what Trip.com shows you for the same keyword, tell us on the Issues tab in Apify Console, with the keyword and the sort order. We read every issue and answer there.