{
  "openapi": "3.0.1",
  "info": {
    "title": "Klook Scraper - Activities, Tours & Attractions",
    "description": "Scrape Klook activities, tours, attractions and travel experiences from search pages or activity URLs. Extract structured data for destinations, prices, ratings, availability, images, package details and more.",
    "version": "0.1",
    "x-build-id": "HUm3T1FIkHVOzi8RM"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/abotapi~klook-activities-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-abotapi-klook-activities-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/acts/abotapi~klook-activities-scraper/runs": {
      "post": {
        "operationId": "runs-sync-abotapi-klook-activities-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor and returns information about the initiated run in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runsResponseSchema"
                }
              }
            }
          }
        }
      }
    },
    "/acts/abotapi~klook-activities-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-abotapi-klook-activities-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "inputSchema": {
        "type": "object",
        "required": [
          "mode"
        ],
        "properties": {
          "operation": {
            "title": "Klook data type",
            "enum": [
              "activities",
              "categories",
              "home",
              "destinations",
              "reviews",
              "deals",
              "esim",
              "car_rentals",
              "airport_transfers",
              "dining",
              "suggestions",
              "hotels"
            ],
            "type": "string",
            "description": "Choose activities, public reviews, catalog navigation, suggestions, or a themed listing search. Home returns homepage links; deals returns listings with promotions or reduced prices. Car rentals and airport transfers return discovery listings, not date-specific quotes. Reviews always use the activity URLs; no mode change is needed. Hotels searches properties for your selected stay and guests.",
            "default": "activities"
          },
          "mode": {
            "title": "Mode",
            "enum": [
              "search",
              "url"
            ],
            "type": "string",
            "description": "Search by keyword or read pasted Klook URLs. Reviews always use the activity URLs, regardless of this setting.",
            "default": "search"
          },
          "query": {
            "title": "Search query",
            "type": "string",
            "description": "Keyword for activity search and suggestions, or a hotel city, area or property name. Ignored in URL mode and for categories, destinations and home.",
            "default": "Tokyo"
          },
          "currency": {
            "title": "Currency",
            "type": "string",
            "description": "Three-letter display currency when supported by the page.",
            "default": "USD"
          },
          "urls": {
            "title": "Klook URLs",
            "type": "array",
            "description": "Activity or keyword search URLs. Reviews require an activity URL. Search URLs preserve the query and start page; other URL filters are not supported. Hotels accepts hotel property, hotel city and hotel search URLs. Hotel stay dates and guests in a URL take precedence over form values.",
            "default": [
              "https://www.klook.com/en-US/activity/41352-tokyo-skytree/"
            ],
            "items": {
              "type": "string"
            }
          },
          "checkIn": {
            "title": "Check-in date",
            "type": "string",
            "description": "Hotels only. YYYY-MM-DD or a relative value such as 30 days. Defaults to 30 days from today.",
            "default": "30 days"
          },
          "checkOut": {
            "title": "Check-out date",
            "type": "string",
            "description": "Hotels only. Leave empty for two nights after check-in. A stay must be 1-30 nights."
          },
          "adults": {
            "title": "Adults",
            "minimum": 1,
            "maximum": 30,
            "type": "integer",
            "description": "Hotels only. Total adult guests across all rooms, with at least one adult per room.",
            "default": 2
          },
          "rooms": {
            "title": "Rooms",
            "minimum": 1,
            "maximum": 8,
            "type": "integer",
            "description": "Hotels only. Number of rooms needed for the guest party.",
            "default": 1
          },
          "childrenAges": {
            "title": "Children ages",
            "type": "array",
            "description": "Hotels only. One age from 0 to 17 per child, up to 10 children. The child count comes from this list.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "hotelSort": {
            "title": "Sort hotels by",
            "enum": [
              "recommended",
              "priceAsc",
              "priceDesc",
              "rating",
              "popular"
            ],
            "type": "string",
            "description": "Hotels only. Use Klook's hotel sort order. Live quoted prices may not be strictly ordered.",
            "default": "recommended"
          },
          "starRatings": {
            "title": "Hotel star ratings",
            "type": "array",
            "description": "Hotels only. Leave empty for all star ratings.",
            "items": {
              "type": "string",
              "enum": [
                "2",
                "3",
                "4",
                "5"
              ],
              "enumTitles": [
                "2 stars or fewer",
                "3 stars",
                "4 stars",
                "5 stars"
              ]
            },
            "default": []
          },
          "minHotelRating": {
            "title": "Minimum hotel review score",
            "enum": [
              "0",
              "3",
              "3.5",
              "4",
              "4.5"
            ],
            "type": "string",
            "description": "Hotels only. Minimum guest review score on the 0-5 scale.",
            "default": "0"
          },
          "minNightlyPrice": {
            "title": "Minimum nightly price",
            "minimum": 0,
            "type": "integer",
            "description": "Hotels only. Minimum price in the selected currency, including taxes and fees. Zero means no minimum.",
            "default": 0
          },
          "maxNightlyPrice": {
            "title": "Maximum nightly price",
            "minimum": 0,
            "type": "integer",
            "description": "Hotels only. Maximum price in the selected currency, including taxes and fees. Zero means no maximum.",
            "default": 0
          },
          "freeCancellation": {
            "title": "Free cancellation",
            "type": "boolean",
            "description": "Hotels only. Request offers matching the free-cancellation filter. Deadlines and terms vary by offer.",
            "default": false
          },
          "breakfastIncluded": {
            "title": "Breakfast included",
            "type": "boolean",
            "description": "Hotels only. Request offers that include breakfast.",
            "default": false
          },
          "fetchDetails": {
            "title": "Fetch activity details",
            "type": "boolean",
            "description": "Add description, address, images and cancellation information to activity listings. Does not apply to reviews or catalog navigation. An additional charge applies only to successfully enriched records saved in the dataset.",
            "default": true
          },
          "maxItems": {
            "title": "Max items",
            "minimum": 1,
            "maximum": 500,
            "type": "integer",
            "description": "Maximum number of records returned. Applies to every operation.",
            "default": 20
          },
          "maxPages": {
            "title": "Max search pages",
            "minimum": 0,
            "maximum": 50,
            "type": "integer",
            "description": "Maximum search pages to read. Defaults to the maximum of 50; stops earlier at Max items or the end of results. Empty or 0 removes the page limit.",
            "default": 50
          },
          "resumeFromRunId": {
            "title": "Resume from run or dataset",
            "type": "string",
            "description": "Skip activity IDs already present in a previous run or dataset."
          },
          "incrementalMode": {
            "title": "Incremental monitoring",
            "type": "boolean",
            "description": "Return only new or changed activities for the same state key.",
            "default": false
          },
          "stateKey": {
            "title": "State key",
            "type": "string",
            "description": "Name for shared recurring-run state. Leave empty to derive it from operation, query or URLs, and currency."
          },
          "emitUnchanged": {
            "title": "Emit unchanged",
            "type": "boolean",
            "description": "Return records that have not changed during incremental monitoring.",
            "default": false
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Apify Proxy settings used for Klook requests."
          },
          "mcpConnectors": {
            "title": "MCP connectors",
            "type": "array",
            "description": "Optional connector names for downstream export."
          },
          "notionParentPageUrl": {
            "title": "Notion parent page",
            "type": "string",
            "description": "Optional parent page for Notion export."
          },
          "maxNotifyListings": {
            "title": "Max connector exports",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Maximum records sent to each optional connector.",
            "default": 50
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}