REST API reference
Klook API
10 endpoints for Klook. Each one is a POST with a JSON body, called with your API key.
- Base URL
- https://cotlet.dev/api/v1/klook
- Connects with
- Your own Klook account (a traveler account, no partner or supplier access needed)
- Integration page
- Klook
| Endpoint | Access | Description |
|---|---|---|
| search_activities | read | Tours, tickets and experiences by keyword or destination, with price, rating and cancellation type. |
| get_activity | read | Packages with prices, what is included, meeting point and cancellation policy of one activity. |
| check_availability | read | Open dates and time slots for a package, with the price per unit (adult, child). |
| list_activity_reviews | read | Traveler reviews of an activity with rating, date and text. |
| list_bookings | read | Bookings on your account with Booking Reference ID, activity, date and status. |
| get_booking | read | One booking with participants, cancellation policy, amend option and voucher link. |
| get_klookcash_balance | read | KlookCash on your account with the expiry date of each part. |
| book_activity | write | Book a package of an activity for a date. You see the total before anything is paid. |
| amend_booking | write | Change the participation date or contact info of a booking that allows Amend booking. |
| cancel_booking | write | Cancel a booking and apply for a refund, where it has free cancellation. |
Search activities
readPOST https://cotlet.dev/api/v1/klook/search_activities
Returns activities that match a keyword or destination, in the order set by sort. A date keeps only activities available that day. Each item has the lowest price, rating and review count, and the cancellation type: free, conditional or none. Use get_activity for packages and details.
Parameters
| Name | Type | Description |
|---|---|---|
| query required | string | Keyword or destination, e.g. "Mount Fuji day tour" or "Bangkok". |
| date | date | Only activities available on this date. |
| sort | enum | popular, price_low, price_high or rating. Default: popular. |
| currency | string | ISO 4217 code, e.g. USD. Default: your account currency. |
| limit | integer | 1 to 50. Default: 20. |
Request
curl -X POST https://cotlet.dev/api/v1/klook/search_activities \
-H "Authorization: Bearer $COTLET_API_KEY" \
-H "Content-Type: application/json" \
-d '{"query":"Mount Fuji day tour"}' result = client.call("klook", "search_activities", {"query":"Mount Fuji day tour"}) const result = await cotlet.call('klook', 'search_activities', {"query":"Mount Fuji day tour"}); cotlet call klook search_activities --data '{"query":"Mount Fuji day tour"}' Example response
{
"activities": [
{
"activity_id": "41528",
"title": "Mount Fuji One Day Tour from Tokyo",
"city": "Tokyo",
"price_from": {
"amount": 93.2,
"currency": "USD"
},
"rating": 4.7,
"reviews": 3120,
"cancellation": "free"
},
{
"activity_id": "30977",
"title": "Mt. Fuji and Hakone Day Trip with Lake Cruise",
"city": "Tokyo",
"price_from": {
"amount": 98.5,
"currency": "USD"
},
"rating": 4.6,
"reviews": 1844,
"cancellation": "free"
},
{
"activity_id": "52204",
"title": "Private Mount Fuji Tour with English Driver",
"city": "Tokyo",
"price_from": {
"amount": 112,
"currency": "USD"
},
"rating": 4.8,
"reviews": 402,
"cancellation": "none"
}
]
} Get activity
readPOST https://cotlet.dev/api/v1/klook/get_activity
Returns one activity with its packages, each with its own package_id and lowest price. It also returns what is included, the meeting point and the cancellation policy shown on the activity page. Use package_id with check_availability and book_activity.
Parameters
| Name | Type | Description |
|---|---|---|
| activity_id required | string | Activity ID from search_activities. |
Request
curl -X POST https://cotlet.dev/api/v1/klook/get_activity \
-H "Authorization: Bearer $COTLET_API_KEY" \
-H "Content-Type: application/json" \
-d '{"activity_id":"activity_8c41d2"}' result = client.call("klook", "get_activity", {"activity_id":"activity_8c41d2"}) const result = await cotlet.call('klook', 'get_activity', {"activity_id":"activity_8c41d2"}); cotlet call klook get_activity --data '{"activity_id":"activity_8c41d2"}' Example response
{
"activity_id": "41528",
"title": "Mount Fuji One Day Tour from Tokyo",
"packages": [
{
"package_id": "98731",
"name": "Departure from Shinjuku, English guide",
"price_from": {
"adult": 93.2,
"child": 80
},
"currency": "USD"
},
{
"package_id": "98740",
"name": "Departure from Tokyo Station, English guide",
"price_from": {
"adult": 96.5,
"child": 83
},
"currency": "USD"
}
],
"includes": [
"Round-trip bus",
"English-speaking guide",
"Lunch"
],
"meeting_point": "Shinjuku Station West Exit",
"cancellation": {
"type": "free",
"policy": "Free cancellation up to 24 hours before the start time"
}
} Check availability
readPOST https://cotlet.dev/api/v1/klook/check_availability
Returns the open dates and time slots of one package in a date range, with the price per unit type. Dates with no slots are left out. Run it before book_activity or amend_booking so you only ask for a slot that exists.
Parameters
| Name | Type | Description |
|---|---|---|
| activity_id required | string | Activity ID from search_activities. |
| package_id | string | Package from get_activity. Default: all packages. |
| from required | date | First date to check. |
| to | date | Last date to check. Default: same as from. |
Request
curl -X POST https://cotlet.dev/api/v1/klook/check_availability \
-H "Authorization: Bearer $COTLET_API_KEY" \
-H "Content-Type: application/json" \
-d '{"activity_id":"activity_8c41d2","from":"2026-10-01"}' result = client.call("klook", "check_availability", {"activity_id":"activity_8c41d2","from":"2026-10-01"}) const result = await cotlet.call('klook', 'check_availability', {"activity_id":"activity_8c41d2","from":"2026-10-01"}); cotlet call klook check_availability --data '{"activity_id":"activity_8c41d2","from":"2026-10-01"}' Example response
{
"activity_id": "41528",
"package_id": "98731",
"availability": [
{
"date": "2026-11-14",
"slots": [
"08:00",
"09:30"
],
"price": {
"adult": 93.2,
"child": 80
},
"currency": "USD"
},
{
"date": "2026-11-15",
"slots": [
"08:00"
],
"price": {
"adult": 93.2,
"child": 80
},
"currency": "USD"
}
]
} POST https://cotlet.dev/api/v1/klook/list_activity_reviews
Returns reviews of one activity, newest first by default, each with the rating, date and text. Set sort to rating to see the best rated first. Use it to check what travelers say before you book.
Parameters
| Name | Type | Description |
|---|---|---|
| activity_id required | string | Activity ID from search_activities. |
| sort | enum | recent or rating. Default: recent. |
| limit | integer | 1 to 50. Default: 20. |
Request
curl -X POST https://cotlet.dev/api/v1/klook/list_activity_reviews \
-H "Authorization: Bearer $COTLET_API_KEY" \
-H "Content-Type: application/json" \
-d '{"activity_id":"activity_8c41d2"}' result = client.call("klook", "list_activity_reviews", {"activity_id":"activity_8c41d2"}) const result = await cotlet.call('klook', 'list_activity_reviews', {"activity_id":"activity_8c41d2"}); cotlet call klook list_activity_reviews --data '{"activity_id":"activity_8c41d2"}' Example response
{
"activity_id": "41528",
"reviews": [
{
"rating": 5,
"date": "2026-10-02",
"text": "Clear views of Fuji and a guide who kept to the schedule."
},
{
"rating": 4,
"date": "2026-09-28",
"text": "Long day, but the lunch stop was good."
}
],
"next_cursor": null
} List bookings
readPOST https://cotlet.dev/api/v1/klook/list_bookings
Returns the bookings shown on the Bookings page of your account, with the Booking Reference ID, activity, participation date and status. Filter by upcoming, completed or cancelled. Pass booking_ref to get_booking, amend_booking or cancel_booking.
Parameters
| Name | Type | Description |
|---|---|---|
| status | enum | upcoming, completed, cancelled or all. Default: upcoming. |
| limit | integer | 1 to 100. Default: 20. |
Request
curl -X POST https://cotlet.dev/api/v1/klook/list_bookings \
-H "Authorization: Bearer $COTLET_API_KEY" result = client.call("klook", "list_bookings") const result = await cotlet.call('klook', 'list_bookings'); cotlet call klook list_bookings Example response
{
"bookings": [
{
"booking_ref": "KPR834512",
"activity": "Mount Fuji One Day Tour from Tokyo",
"date": "2026-11-14",
"status": "upcoming"
},
{
"booking_ref": "NJT204518",
"activity": "Nami Island and Petite France Day Tour from Seoul",
"date": "2026-11-21",
"status": "upcoming"
},
{
"booking_ref": "BKK771903",
"activity": "Bangkok Street Food Evening Tour",
"date": "2026-12-02",
"status": "upcoming"
}
]
} Get booking
readPOST https://cotlet.dev/api/v1/klook/get_booking
Returns one booking with its date, time, participants and voucher link. The cancellation policy says whether the booking is free to cancel, conditional or not cancellable, and whether Amend booking is available. Check it before amend_booking or cancel_booking.
Parameters
| Name | Type | Description |
|---|---|---|
| booking_ref required | string | Booking Reference ID from list_bookings, e.g. ABC123456. |
Request
curl -X POST https://cotlet.dev/api/v1/klook/get_booking \
-H "Authorization: Bearer $COTLET_API_KEY" \
-H "Content-Type: application/json" \
-d '{"booking_ref":"booking ref"}' result = client.call("klook", "get_booking", {"booking_ref":"booking ref"}) const result = await cotlet.call('klook', 'get_booking', {"booking_ref":"booking ref"}); cotlet call klook get_booking --data '{"booking_ref":"booking ref"}' Example response
{
"booking_ref": "BKK771903",
"activity": "Bangkok Street Food Evening Tour",
"date": "2026-12-02",
"time": "17:30",
"status": "upcoming",
"units": {
"adult": 2
},
"total": {
"amount": 64,
"currency": "USD"
},
"cancellation": {
"type": "free",
"policy": "Free cancellation up to 24 hours before the start time"
},
"can_amend": true,
"voucher_url": "https://www.klook.com/en-US/bookings/"
} POST https://cotlet.dev/api/v1/klook/get_klookcash_balance
Returns your KlookCash balance and the entries it is made of, each with its expiry date, like the Klookcash page in your profile. Klook lets you use KlookCash only with at least 10 KlookCash, which usable shows. It takes no parameters.
Parameters
No parameters.
Request
curl -X POST https://cotlet.dev/api/v1/klook/get_klookcash_balance \
-H "Authorization: Bearer $COTLET_API_KEY" result = client.call("klook", "get_klookcash_balance") const result = await cotlet.call('klook', 'get_klookcash_balance'); cotlet call klook get_klookcash_balance Example response
{
"klookcash": 1850,
"usable": true,
"entries": [
{
"amount": 300,
"expires_on": "2026-11-30"
},
{
"amount": 1550,
"expires_on": "2027-06-12"
}
]
} POST https://cotlet.dev/api/v1/klook/book_activity
Books one package for a date and time slot through Klook checkout and returns the Booking Reference ID. With use_klookcash set, it ticks KlookCash in the Discount section, which works only with at least 10 KlookCash and not on Klook Passes, e-Gift Cards, Travel Insurance, Stay+ packages or selected events. If checkout asks for extra authentication, the call stops and returns a link for you to finish it. By default you confirm each call; you can switch that off for this tool.
Parameters
| Name | Type | Description |
|---|---|---|
| activity_id required | string | Activity ID from search_activities. |
| package_id required | string | Package from get_activity. |
| date required | date | Participation date. |
| time_slot | string | Time from check_availability, if the package has slots. |
| units required | object | Quantity per unit type, e.g. { "adult": 2, "child": 1 }. |
| use_klookcash | boolean | Apply KlookCash at checkout where Klook allows it. Default: false. |
Request
curl -X POST https://cotlet.dev/api/v1/klook/book_activity \
-H "Authorization: Bearer $COTLET_API_KEY" \
-H "Content-Type: application/json" \
-d '{"activity_id":"41528","package_id":"98731","date":"2026-11-14","time_slot":"08:00","units":{"adult":2},"use_klookcash":true}' result = client.call("klook", "book_activity", {"activity_id":"41528","package_id":"98731","date":"2026-11-14","time_slot":"08:00","units":{"adult":2},"use_klookcash":True}) const result = await cotlet.call('klook', 'book_activity', {"activity_id":"41528","package_id":"98731","date":"2026-11-14","time_slot":"08:00","units":{"adult":2},"use_klookcash":true}); cotlet call klook book_activity --data '{"activity_id":"41528","package_id":"98731","date":"2026-11-14","time_slot":"08:00","units":{"adult":2},"use_klookcash":true}' Example response
{
"booking_ref": "KPR834512",
"status": "confirmed",
"activity": "Mount Fuji One Day Tour from Tokyo",
"date": "2026-11-14",
"time_slot": "08:00",
"units": {
"adult": 2
},
"subtotal": {
"amount": 186.4,
"currency": "USD"
},
"klookcash_discount": {
"amount": 12,
"currency": "USD"
},
"total_paid": {
"amount": 174.4,
"currency": "USD"
}
} POST https://cotlet.dev/api/v1/klook/amend_booking
Changes the participation date, the traveler contact info or both. It works only on bookings where Klook offers Amend booking: not with a No cancellation or Conditional cancellation policy, and not for vouchers whose codes do not begin with KLK. Klook then emails a booking change confirmation and an updated voucher. By default you confirm each call; you can switch that off for this tool.
Parameters
| Name | Type | Description |
|---|---|---|
| booking_ref required | string | Booking Reference ID from list_bookings, e.g. ABC123456. |
| date | date | New participation date. |
| contact | object | Traveler contact info to change, as the Amend booking form shows it. |
Request
curl -X POST https://cotlet.dev/api/v1/klook/amend_booking \
-H "Authorization: Bearer $COTLET_API_KEY" \
-H "Content-Type: application/json" \
-d '{"booking_ref":"NJT204518","date":"2026-11-22"}' result = client.call("klook", "amend_booking", {"booking_ref":"NJT204518","date":"2026-11-22"}) const result = await cotlet.call('klook', 'amend_booking', {"booking_ref":"NJT204518","date":"2026-11-22"}); cotlet call klook amend_booking --data '{"booking_ref":"NJT204518","date":"2026-11-22"}' Example response
{
"booking_ref": "NJT204518",
"status": "amended",
"activity": "Nami Island and Petite France Day Tour from Seoul",
"old_date": "2026-11-21",
"date": "2026-11-22"
} POST https://cotlet.dev/api/v1/klook/cancel_booking
Applies for a refund on a booking within the free cancellation period stated on the booking, for all units or for the quantity you set. Klook emails a cancellation confirmation, and the previous voucher can no longer be used. For conditional cancellation Klook asks you to contact Klook Customer Support, and the tool stops and says so; with No cancellation there is no refund. By default you confirm each call; you can switch that off for this tool.
Parameters
| Name | Type | Description |
|---|---|---|
| booking_ref required | string | Booking Reference ID from list_bookings, e.g. ABC123456. |
| quantity | integer | Units to cancel. Default: all. |
| reason | string | Reason for the refund form. |
Request
curl -X POST https://cotlet.dev/api/v1/klook/cancel_booking \
-H "Authorization: Bearer $COTLET_API_KEY" \
-H "Content-Type: application/json" \
-d '{"booking_ref":"BKK771903","quantity":1,"reason":"Change of plans"}' result = client.call("klook", "cancel_booking", {"booking_ref":"BKK771903","quantity":1,"reason":"Change of plans"}) const result = await cotlet.call('klook', 'cancel_booking', {"booking_ref":"BKK771903","quantity":1,"reason":"Change of plans"}); cotlet call klook cancel_booking --data '{"booking_ref":"BKK771903","quantity":1,"reason":"Change of plans"}' Example response
{
"booking_ref": "BKK771903",
"status": "refund_requested",
"quantity_cancelled": 2,
"reason": "Change of plans",
"refund": {
"amount": 64,
"currency": "USD"
}
}