{
  "openapi": "3.0.1",
  "info": {
    "title": "Kwai & Kuaishou Scraper",
    "description": "Kwai & Kuaishou scraper + Kuaishou video downloader — extract video data, user profiles, comments, user posts, keyword search. KOL discovery, view counts, engagement metrics, creator analytics for China market research. Six operations, one clean dataset per run. No API key.",
    "version": "1.0",
    "x-build-id": "WCbF4kI31HrEAb0Jf"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/sian.agency~kwai-kuaishou-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-sian.agency-kwai-kuaishou-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/sian.agency~kwai-kuaishou-scraper/runs": {
      "post": {
        "operationId": "runs-sync-sian.agency-kwai-kuaishou-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/sian.agency~kwai-kuaishou-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-sian.agency-kwai-kuaishou-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": [
          "operation"
        ],
        "properties": {
          "operation": {
            "title": "🎯 Operation — what do you want to scrape?",
            "enum": [
              "videoDetail",
              "userDetail",
              "userVideos",
              "videoComments",
              "searchVideo",
              "searchUser"
            ],
            "type": "string",
            "description": "🎯 **PICK ONE OPERATION PER RUN.** Each run produces one clean dataset matching the chosen mode.\n\n- **🎥 Video Detail** — deep scrape of a single video by ID (caption, view/like/share/comment counts, video URL, cover, creator info, timestamps)\n- **👤 User Profile** — full profile by user ID (fan count, follow count, photo count, bio, verification, location, avatar, banner)\n- **📹 User Videos** — paginated list of a creator's full video history (~10 videos/page)\n- **💬 Video Comments** — paginated comments on a single video, with reply samples (~9 comments/page)\n- **🔍 Search Videos** — keyword search across Kwai/Kuaishou videos, paginated (~20 results/page)\n- **🔎 Search Users** — keyword search across Kwai/Kuaishou creators, paginated (~30 results/page)\n\n💡 **TIP:** To combine operations, run the actor multiple times with different configurations.",
            "default": "searchVideo"
          },
          "videoId": {
            "title": "🎥 Video ID (for Video Detail / Video Comments)",
            "type": "string",
            "description": "🎥 **Required for `Video Detail` and `Video Comments` operations.**\n\nThe numeric Kuaishou video ID (also called `photo_id`). You can find it:\n- In any Kuaishou video URL: `https://www.kuaishou.com/short-video/{ID}` → the trailing segment\n- In the `videoId` / `photo_id` field of any search or user-videos result row\n\n💡 **TIP:** To analyze a batch of videos, run a `Search Videos` operation first, copy the `videoId` from the result rows, then run `Video Detail` per ID.\n\n⚠️ **Ignored** for User Profile, User Videos, and Search operations."
          },
          "userId": {
            "title": "👤 User ID (for User Profile / User Videos)",
            "type": "string",
            "description": "👤 **Required for `User Profile` and `User Videos` operations.**\n\nThe numeric Kuaishou user ID. You can find it:\n- In the `userId` / `user_id` field of any video, search, or comment result row\n- In a creator's profile URL: `https://www.kuaishou.com/profile/{ID}`\n\n💡 **TIP:** To build a list of creators in a niche, run `Search Users` with a keyword first, then use the top `userId` values to drill into individual profiles or video catalogs.\n\n⚠️ **Ignored** for Video Detail, Video Comments, and Search operations."
          },
          "keyword": {
            "title": "🔍 Search Keyword (for Search Videos / Search Users)",
            "type": "string",
            "description": "🔍 **Required for `Search Videos` and `Search Users` operations.**\n\nAny Kwai/Kuaishou search query. Supports Chinese, English, and mixed queries:\n- `funny`\n- `搞笑视频` (funny videos)\n- `美食` (food)\n- `dance challenge`\n\n💡 **TIP:** Specific niches return higher-relevance results. Chinese-language queries surface more native creators; English queries surface international Kwai creators."
          },
          "maxPages": {
            "title": "📄 Max pages to fetch",
            "minimum": 1,
            "maximum": 50,
            "type": "integer",
            "description": "📄 **Applies to paginated operations** (User Videos, Video Comments, Search Videos, Search Users). Ignored for single-record operations (Video Detail, User Profile).\n\n- **User Videos:** ~10 videos per page\n- **Video Comments:** ~9 comments per page\n- **Search Videos:** ~20 results per page\n- **Search Users:** ~30 results per page\n\n💡 **TIP:** Start small (1–3 pages) to preview results before scaling up.\n\n⚠️ Hard cap: 50 pages to prevent runaway runs.",
            "default": 5
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}