
Global Sources Supplier Scraper
scrape.ly/store/cornerledger/globalsources-scraperLead generationE-commerce
2 monthly users

Scrape Klook activities, tours and attraction tickets by city, country, keyword or URL, plus activity reviews. Get prices, ratings, review and booking counts, duration, location, highlights and photos in any currency.
Scrape activities, tours and attraction tickets from Klook: prices in any currency, ratings, review counts, how many people booked, tags, photos and, with full details, highlights, duration, opening hours, address with coordinates and price range. Switch to reviews mode to collect traveler reviews with ratings, translations, photos and travel dates. Paste a city, country, search or activity URL, type a keyword, or give city IDs. No login, no browser.
https://www.klook.com/en-US/city/28-tokyo-things-to-do/), type search terms like universal studios japan, or add city IDs.| Field | What it does |
|---|---|
startUrls | City (/city/28-tokyo-things-to-do/, /destination/c28-tokyo/), country (/destination/co1004-thailand/), search (/search/result/?query=…) or activity (/activity/363-…/) URLs |
searchQueries | Free-text searches, like the Klook search box |
cityIds | Klook city IDs (28 = Tokyo, 29 = Osaka, ...) |
mode | activities (one row per activity) or reviews (one row per review) |
maxItems | Max rows across all inputs (0 = no limit) |
minPrice / maxPrice / minRating / minReviews | Filters on the listing |
includeDetails | Load each activity's details (activity URLs always get them) |
maxReviewsPerActivity / reviewsSort / reviewRating | Reviews mode options |
currency / language | Price currency (default USD) and text language (default en_US) |
{
"startUrls": [{ "url": "https://www.klook.com/en-US/city/28-tokyo-things-to-do/" }],
"searchQueries": ["universal studios japan"],
"mode": "activities",
"maxItems": 20,
"includeDetails": true,
"currency": "USD",
"language": "en_US"
}
| Field | Description |
|---|---|
activityId, url, title, subtitle | Identity |
price, originalPrice, priceTo, currency, priceText | Starting price, price before discount, highest package price (details) |
rating, reviewCount, bookedCount, bookedText | Rating, number of reviews and bookings |
duration, openingHours | Suggested duration and today's opening hours (details) |
city, cityId, country, countryId, address, latitude, longitude | Location (details) |
category, mainTag, departures, tags, soldOut | Category, departure cities and Klook tags |
summary, whatWeLove, highlights | Descriptions |
image, images, videoUrl, latestReview | Media and the latest top review (details) |
Example (trimmed):
{
"activityId": 93901,
"url": "https://www.klook.com/activity/93901-mtfuji-one-day-tour-tokyo/",
"image": "https://res.klook.com/image/upload/activities/o4x2nesz8ry9tnmzo1md.jpg",
"title": "Mt. Fuji Instagram-Worthy Spots Day Tour: Ladder Town, Oshino Hakkai, Lake Kawaguchi, Lawson Convenience Store (Departing from Tokyo Station or Shinjuku Station)",
"price": 70.49,
"currency": "USD",
"priceText": "US$ 70.49",
"rating": 4.8,
"reviewCount": 35674,
"bookedCount": 350750,
"bookedText": "300K+ booked",
"cityId": 28,
"departures": ["Tokyo"],
"tags": ["Book now for tomorrow", "Hotel pick-up", "English guided", "Instant confirmation", "Sale", "Fall deal", "Klook's choice"],
"soldOut": false,
"sourceUrl": "https://www.klook.com/en-US/city/28-tokyo-things-to-do/",
"position": 1
}
With full details on, rows also carry fields like these (Dream World Bangkok, prices in EUR):
{
"price": 30.65,
"originalPrice": 31.95,
"priceTo": 170.3,
"duration": "5-7 hour(s)",
"openingHours": "Open today: 10:00-17:00 · Last entry at 16:00",
"city": "Bangkok",
"country": "Thailand",
"category": "Attractions & Shows",
"latitude": 13.987715,
"longitude": 100.674843,
"highlights": ["Snap away on your camera at the Seven Wonders of The World"],
"imageCount": 6
}
| Field | Description |
|---|---|
reviewId, rating, text, translatedText, language, date | The review (rating 1–5) |
author, authorAvatar, likes, images, packageName, travelDate | Traveler and review metadata |
reply, replyDate | The operator's reply, when there is one |
activityId, activityUrl, activityTitle, activityRating, activityReviewCount | The activity it belongs to |
Example (traveler name is fictional):
{
"reviewId": "19359571",
"activityId": 363,
"activityUrl": "https://www.klook.com/activity/363-dream-world-bangkok/",
"activityTitle": "Dream World Ticket in Bangkok",
"rating": 5,
"text": "the experience is cool! thank you",
"language": "en_US",
"date": "2026-09-15 17:01:24",
"author": "Alex *****",
"likes": 0,
"images": [],
"activityRating": 4.6,
"activityReviewCount": 4573
}
Platform usage (compute and datacenter proxy traffic) is billed on top and is small: a city list page of 50 activities is about 0.6 MB before compression, so 1,000 activities ≈ $3.02 in total and 1,000 reviews ≈ $3.76. Full details add a few cents per 1,000 activities.
Is it legal to scrape Klook? The actor only collects publicly visible activity information and reviews. Check Klook's terms and your local laws, and handle reviewer names responsibly (personal data rules such as GDPR may apply; Klook already masks most names).
Do I need a Klook account or my own proxy? No. No login is needed and the built-in datacenter proxy works well.
How many activities can I get? Big cities list well over 1,000 activities (Tokyo shows about 1,700). Country pages and searches work too. The run stops cleanly when a list ends.
How many reviews per activity? Up to 2,000, which is as far as Klook pages. Use maxReviewsPerActivity to keep runs small, and the star filter to focus on bad or good reviews.
Why is a field empty? List rows don't carry duration, address or highlights; turn on Include full activity details for those. Not every activity has every section.
Can I schedule it or use the API? Yes. Schedule runs in the console or start them through the API and fetch the dataset as JSON, CSV or Excel.
price is the "from" price Klook shows.Every field below can be set in the run form, passed through the API, or saved as a task. Unset fields fall back to the defaults shown.
startUrlsarrayOptionalKlook URLs
City pages (e.g. https://www.klook.com/en-US/city/28-tokyo-things-to-do/ or /destination/c28-tokyo/), country pages (/destination/co1004-thailand/), search pages (/search/result/?query=…) or activity pages (/activity/363-dream-world-bangkok/).
searchQueriesarrayOptionalSearch terms
Free-text searches, the same as the Klook search box (e.g. "universal studios japan", "Bali snorkeling").
cityIdsarrayOptionalCity IDs
Klook numeric city IDs (the number in a city URL, e.g. 28 = Tokyo, 29 = Osaka, 2 = Hong Kong, 6 = Singapore).
modeenumOptionaldefault "activities"What to scrape
Activities: one row per activity. Reviews: one row per review of each activity (activity URLs, or the activities found on lists and searches).
maxItemsintegerOptionaldefault 20Max results
Maximum number of rows to save across all inputs (activities, or reviews in reviews mode). 0 means no limit.
minPricenumberOptionalMin price
Only activities with a starting price at or above this amount (in the selected currency).
maxPricenumberOptionalMax price
Only activities with a starting price at or below this amount.
minRatingnumberOptionalMin rating
Only activities rated at least this many stars (0–5).
minReviewsintegerOptionalMin reviews
Only activities with at least this many reviews.
includeDetailsbooleanOptionaldefault falseInclude full activity details
Load every activity's details: highlights, what we love, duration, opening hours, address with coordinates, price range, FAQ, all photos and more. Activity URLs always get full details.
maxReviewsPerActivityintegerOptionaldefault 100Max reviews per activity
Reviews mode: how many reviews to save for each activity. 0 means all (Klook pages through up to 2,000 per activity).
reviewsSortenumOptionaldefault "relevant"Review order
Reviews mode: most relevant first (Klook's default) or newest first.
reviewRatingenumOptionaldefault "all"Only reviews with this rating
Reviews mode: keep only reviews with this many stars.
currencystringOptionaldefault "USD"Currency
Currency for all prices, as a 3-letter code (USD, EUR, GBP, SGD, HKD, JPY, AUD, ...).
languagestringOptionaldefault "en_US"Language
Language of titles and descriptions, e.g. en_US, en_GB, de_DE, ja_JP, zh_TW, ko_KR.
proxyConfigurationobjectOptionaldefault {"useScrapelyProxy":true,"scrapelyProxyGroups":["DATACENTER…Proxy configuration
Datacenter proxies work well for Klook and are the cheapest option.
Every run writes its results to a dataset. Preview it in the dashboard, then export it or read it through the API.
| Field | Type | Description |
|---|---|---|
| image | any | Photo |
| title | any | Title |
| url | any | URL |
| price | any | From price |
| currency | any | Currency |
| rating | any | Rating |
| reviewCount | any | Reviews |
| bookedText | any | Booked |
| city | any | City |
| category | any | Category |
| activityId | any | Activity ID |
You pay for the events the actor reports, such as each result or page it produces. Platform usage is included in the event prices.
| Event | Charged when | Price |
|---|---|---|
| Activity | One saved Klook activity with price, rating, booking count and (when enabled) full details. | $0.003 |
| Review | One saved Klook review (reviews mode). | $0.0037 |
Run this actor from your own code. Swap in your API token and the examples work as-is.
import { ScrapelyClient } from 'scrapely-client'
const client = new ScrapelyClient({ token: process.env.SCRAPELY_TOKEN })
// Start the actor and wait for the run to finish.
const run = await client.actor('roamandroof/klook-scraper').call({
"startUrls": [
{
"url": "https://www.klook.com/en-US/city/28-tokyo-things-to-do/"
}
],
"maxItems": 20,
"proxyConfiguration": {
"useScrapelyProxy": true,
"scrapelyProxyGroups": [
"DATACENTER"
]
}
})
// Read the dataset the run produced.
const { items } = await client.dataset(run.defaultDatasetId).listItems()
console.log(items)Tokens live in your account settings. Keep them server-side: a token carries the full permissions of your account.
Connect the Scrape.ly MCP server once and your agent can run this actor as a tool. Pick your tool:
Fetch scrape.ly/agents.md and run roamandroof/klook-scraperPaste into Claude Code, Codex, Cursor or any AI agent. It signs you in once in the browser.
{
"mcpServers": {
"scrapely": {
"url": "https://api.scrape.ly/mcp?tools=actors,runs,storage,docs&actors=roamandroof/klook-scraper"
}
}
}No key in the file: your client opens the browser to sign you in the first time it connects.
Inputs the developer prepared for common jobs. Open one to see its input, then copy it to your account to run it as-is or adjust it.
Bookable tours and activities for a Klook city ID.
Customer reviews of activities in a Klook city.
Search with a 20 to 200 USD price range and a minimum 4-star rating.
Scrape.ly gives you the infrastructure, the tooling, and the team to extract, process, and operationalize web data at any scale. Setup takes minutes. The advantage lasts forever.