Klook Reviews Scraper - Activity Ratings, Photos & Text
Pricing
from $2.50 / 1,000 results
Klook Reviews Scraper - Activity Ratings, Photos & Text
Scrape Klook activity, tour and experience reviews across Asia-Pacific and worldwide. Extract star ratings, full review text, translations, reviewer photos, liked counts, booked package and activity summary (city, category, score) by activity URL or ID. Export JSON, CSV, Excel.
Pricing
from $2.50 / 1,000 results
Rating
0.0
(0)
Developer
Haketa
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Klook Reviews Scraper — Activity & Experience Reviews with Ratings, Photos and Translations
The most complete Klook review extractor on Apify. Pull real guest reviews from Klook — the leading activities, tours and experiences platform across Asia-Pacific and worldwide — with the full review text, its translation, a 0–5 star rating, reviewer photos, liked counts, the exact package booked, and each activity's overall score, city, country and category. Built for reputation monitoring, competitor benchmarking, sentiment analysis and travel-experience market research.
🎯 What this actor does
The Klook Reviews Scraper extracts live guest reviews from Klook.com — the #1 platform for booking tours, activities, attraction tickets, transport passes and experiences across Asia and beyond (Japan, Taiwan, Korea, Thailand, Singapore, Hong Kong, and worldwide). Give it an activity URL or an activity ID and it returns every review, one clean row per review, enriched with the activity's summary.
Klook reviews are unusually rich: each one carries a star rating, full text plus an on-platform translation, the reviewer's uploaded photos, the exact package/option the traveler booked, and a helpful-vote count. This actor captures all of it.
Each record can include:
- ⭐ Rating — 0–5 star score, rating label (e.g. Fantastic) and ISO review date
- 💬 Review text — original content plus its translation when available
- 📸 Reviewer photos — every image the traveler uploaded, with count
- 🎟️ Package booked — the exact option/package name and ID the review is about
- 👍 Engagement — how many users found the review helpful
- 🏙️ Activity summary — name, city, country, category, overall score and total review count
- 🕒 Metadata —
scrapedAtISO timestamp on every row
Whether you operate an activity, run a travel-analytics product, or research the experiences market across Asia, this actor is the fastest path from Klook to a usable dataset — no scraping code required.
✨ Why this actor
| ✅ This actor handles | ❌ What you'd fight doing it yourself |
|---|---|
| Full pagination — collects every review | Popular activities have tens of thousands of reviews |
| Reviewer photos extracted with URLs | Images are nested in a separate list per review |
| Translations captured alongside originals | Multi-language reviews need the translated field pulled |
| Package-level attribution | Each review ties to a specific booked option |
| Activity summary attached to every row | Name, city, category & score live on the page, not the review |
| Clean deduplicated rows | Reviews repeat across pages and need de-duping |
| JSON / CSV / Excel export | Raw data needs reshaping for analysis |
🚀 Quick start
One-click run
- Open the actor on the Apify Store and click Try for free
- Paste one or more Klook activity URLs into Activity URLs — e.g.
https://www.klook.com/en-US/activity/73749-thsr-one-way-ticket-taipei/ - Pick a Review language and Sort order, set Max reviews per activity (
0for everything) - Hit Start — reviews stream into your dataset, ready to export as JSON, CSV, Excel, HTML or RSS
Run via API (Python)
from apify_client import ApifyClientclient = ApifyClient("YOUR_APIFY_TOKEN")run_input = {"startUrls": ["https://www.klook.com/en-US/activity/73749-thsr-one-way-ticket-taipei/"],"language": "en","sortBy": "most_relevant","maxReviewsPerActivity": 200,"includeActivityInfo": True,}run = client.actor("haketa/klook-reviews-scraper").call(run_input=run_input)for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item["rating"], item["userName"], "|", item["reviewContent"][:80])
Run via API (JavaScript)
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });const run = await client.actor('haketa/klook-reviews-scraper').call({startUrls: ['https://www.klook.com/en-US/activity/73749-thsr-one-way-ticket-taipei/'],language: 'en',maxReviewsPerActivity: 200,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
⚙️ Input
| Field | Type | Default | Description |
|---|---|---|---|
startUrls | array | – | Klook activity page URLs. All reviews are collected for each activity. |
activityIds | array | – | (Advanced) Numeric activity IDs — the number after /activity/. |
language | enum | en | Language the review text is returned in (English, Chinese, Japanese, Korean, Thai, and more). |
sortBy | enum | most_relevant | Review order: most_relevant or most_recent. |
maxReviewsPerActivity | integer | 200 | Max reviews per activity. 0 = all available. |
includeActivityInfo | boolean | true | Attach activity name, city, country, category, score and total review count to every review. |
proxyConfiguration | object | Residential | Proxy settings — an Asia-Pacific residential proxy is required and enabled by default. |
📋 How to get an activity URL
- Open klook.com and choose any activity, tour, ticket or experience
- Copy the address-bar URL — it looks like
.../activity/73749-thsr-one-way-ticket-taipei/ - Paste it into Activity URLs. Add as many as you like.
📤 Output
One clean record per review, enriched with activity context:
{"reviewId": "18171293","activityId": "73749","activityName": "Taiwan High Speed Rail Ticket for non-Taiwanese","userName": "Lee *****","userAvatar": "https://cdn.klook.com/upload/img200X200/f157...jpg","rating": "5.0","ratingDesc": "Fantastic","reviewDate": "2026-04-01T05:42:53.000Z","reviewContent": "The Taiwan High-Speed Rail ticket was on a buy-one-take-one promotion...","translatedContent": "","likedCount": "4","hasReply": "false","imageCount": "6","reviewImages": "https://cdn.klook.com/user_review/...jpeg | https://cdn.klook.com/...jpeg","packageName": "Buy 1 Get 1 · Taipei · Zuoying (Kaohsiung)","packageId": "339074","activityCity": "Taipei","activityCountry": "Taiwan","activityScore": "4.8","activityReviewCount": "25461","activityCategory": "Transport","activityUrl": "https://www.klook.com/en-US/activity/73749-thsr-one-way-ticket-taipei/","language": "en_US","scrapedAt": "2026-08-10T13:38:51.864Z"}
💬 Review fields
| Field | Description |
|---|---|
reviewId | Unique review identifier |
userName · userAvatar | Reviewer name and avatar URL |
rating · ratingDesc | ⭐ Score out of 5 and label (e.g. Fantastic) |
reviewDate | Review timestamp (ISO 8601) |
reviewContent | Original review text |
translatedContent | Translated text when different from the original |
likedCount | 👍 How many users found the review helpful |
hasReply | Whether the merchant replied |
imageCount · reviewImages | 📸 Number and URLs of reviewer photos ( ` |
packageName · packageId | 🎟️ The booked package/option the review is about |
🏙️ Activity fields (when includeActivityInfo is on)
| Field | Description |
|---|---|
activityId · activityName | Activity identifier and name |
activityCity · activityCountry | Where the activity takes place |
activityCategory | Top category (Transport, Tours & experiences, Attractions…) |
activityScore | Activity overall score out of 5 |
activityReviewCount | Total reviews for the activity |
activityUrl · language · scrapedAt | Source URL, language and timestamp |
Export everything to JSON, CSV, Excel, HTML or RSS, or pull it through the Apify API and integrations.
🌏 Languages & coverage
Klook operates across Asia-Pacific and globally. Reviews can be returned in any of these languages:
| 🇬🇧 English | 🇨🇳 Chinese (Simplified) | 🇹🇼 Chinese (Traditional) | 🇭🇰 Chinese (HK) |
| 🇯🇵 Japanese | 🇰🇷 Korean | 🇹🇭 Thai | 🇻🇳 Vietnamese |
| 🇮🇩 Indonesian | 🇲🇾 Malay | 🇪🇸 Spanish | 🇫🇷 French |
| 🇩🇪 German | 🇷🇺 Russian |
Tip: English gives the widest, most readable output. Klook translates each review into the language you pick — the set of reviews collected is the same.
💡 Use cases
| Use case | How this actor helps |
|---|---|
| 🎟️ Activity & tour operator monitoring | Track your Klook reputation and catch recurring complaints from real guest feedback and photos. |
| 📊 Competitor benchmarking | Pull reviews, scores and photos for rival activities in a destination and compare side by side. |
| 💬 Sentiment & voice-of-customer | Feed review text and ratings into your NLP or LLM pipeline for experience-level insight. |
| 📈 Travel-experience market research | Study traveler preferences across Asia — which experiences delight, which disappoint, and why. |
| 📸 UGC & photo analysis | Collect reviewer-uploaded photos at scale for visual quality and content analysis. |
| 🤖 ML / NLP training data | Build large labeled review datasets (rating, language, package, images) for models. |
❓ FAQ
How many reviews can I get per activity?
All of them. Set maxReviewsPerActivity to 0 and the actor paginates to the last page. Popular activities have tens of thousands of reviews.
Do reviews include photos?
Yes — every reviewer-uploaded image URL is captured in reviewImages, with a count in imageCount.
Can I get reviews in a specific language?
Set language to English, Chinese, Japanese, Korean, Thai and more. Klook translates the review text; the set of reviews is the same either way.
Do I need a proxy? Yes — an Asia-Pacific residential proxy is required and enabled by default.
Which export formats are supported? JSON, CSV, Excel, HTML and RSS, plus programmatic access via the Apify API and integrations (Google Sheets, Zapier, Make, Airbyte and more).
🔗 Integrations
Send results wherever you work: Google Sheets / Excel, Zapier · Make · n8n, Airbyte / databases / webhooks, and the Apify API for any language.
⚖️ Legal & responsible use
This actor collects publicly available review information — the same content any visitor can read on an activity page without logging in. It does not access private data and does not require any user account.
You are responsible for how you use the data. Please:
- Use the output for lawful purposes such as research, analytics, reputation monitoring and benchmarking.
- Respect the reviewed platform's Terms of Service and robots directives.
- Comply with applicable data-protection laws (e.g. GDPR, CCPA) when handling personal data such as reviewer names — aggregate or anonymize where appropriate.
- Do not republish scraped content in a way that infringes copyright or database rights.
This actor is an independent tool and is not affiliated with, endorsed by, or sponsored by Klook. All product names, logos and brands are property of their respective owners.
🛟 Support
Need another language, an extra field, or hit an activity that won't parse? Open an issue from the actor's Issues tab and we'll take a look.