Klook Activity Detail Scraper avatar

Klook Activity Detail Scraper

Pricing

from $2.30 / 1,000 activity chargeds

Go to Apify Store
Klook Activity Detail Scraper

Klook Activity Detail Scraper

Get full activity detail and similar activities from Klook. Talks directly to Klook's own mobile app API, no login needed. Split from the mature, published klook-all-in-one-api for a focused, single-purpose workflow.

Pricing

from $2.30 / 1,000 activity chargeds

Rating

0.0

(0)

Developer

Romy

Romy

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Categories

Share

What does Klook Activity Detail Scraper do?

Klook Activity Detail Scraper takes one or more Klook activity ids and pushes full activity/experience detail — title, description, price, discount info, package options — plus recommended/similar activities, one dataset row per activity id.

It talks directly to the same internal API the official Klook Android app uses, reverse-engineered by disassembling the app's native request-signing library and validated against live traffic captured from a real device. No Klook account, no API key. This is the activity-detail slice of Klook All-in-One API, split out as its own focused Actor.

Why use Klook Activity Detail Scraper?

  • Two calls in one row — activity detail and similar activities, fetched in parallel and merged into a single dataset item per activity id
  • Real, server-computed pricing in any currency — pass currency: "IDR" (or any ISO code) and get genuine localized prices from Klook's own server; confirmed live by the parent Actor across GBP/USD/IDR on the same activity
  • No account needed — every read request works fully anonymously
  • Use cases: price/rating monitoring, activity-catalog enrichment for a search pipeline, recommendation-graph building via similar

How it connects to the parent

This Actor is a narrow, batch-run spin-off of klook-all-in-one-api (an always-on Standby REST API exposing every Klook endpoint). It reuses the parent's exact, proven request-signing logic (klook-client.ts, copied verbatim) but only wraps /activities/{id} and /activities/{id}/similar, and runs as a normal input-in/dataset-out Actor instead of a Standby API.

Input

FieldTypeDescription
activityIdsstring[]Required. Klook activity ids, from klook-search-scraper or a Klook activity URL.
currencystringISO code, default GBP
includeSimilarbooleanDefault true
similarLengthintegerNumber of similar activities to fetch per id. Default 8

Example:

{ "activityIds": ["93901"], "currency": "USD" }

Output

One dataset row per activity id:

{
"activityId": "93901",
"detail": { "...": "full activity detail (title, description, price, packages, ...)" },
"similar": { "...": "recommended/similar activities" }
}

Known limitations

  • Requires Apify's RESIDENTIAL proxy group. Klook's edge blocks non-residential IPs with a DataDome bot-challenge page — confirmed directly from this development sandbox (a request byte-for-byte identical to a working one, sent without the proxy, came back as a DataDome JS-challenge HTML page, not JSON). All outbound requests route through Actor.createProxyConfiguration({ groups: ['RESIDENTIAL'] }).
  • Local dev smoke testing outside the Apify platform needs "Proxy external access" enabled on the account. This Actor's code was verified to be a byte-for-byte match against the parent's already-published, working klook-client.ts, and the local smoke test run during development failed exactly at the proxy-URL-acquisition step (ProxyConfiguration: The "Proxy external access" feature isn't enabled for your account) — before any request to Klook was even attempted. That's an account-tier restriction on pulling a proxy URL from outside a real platform Actor run, not a defect in this code; once deployed and actually run on Apify's platform, proxy access works through the normal SDK path.
  • No booking/pricing-calendar endpoint. Klook protects activity schedule/availability and package-pricing endpoints with an additional bot-detection layer (DataDome) that returns a JS challenge page instead of JSON, even with a fully valid request signature — confirmed by the parent Actor's repeated testing across several related internal endpoints. activityDetail() still returns the activity's base price and discount info from its own detail payload.
  • Reviews are a separate spin-off Actor (klook-reviews-scraper) — this one focuses on the activity detail page itself.
  • This is an unofficial, reverse-engineered integration, not affiliated with or endorsed by Klook Travel Technology Limited.

Pricing

Pay per event. Charged $0.004 per activity (FREE tier) — one event per activity id processed. See the Actor's Pricing tab for rates across all tiers.