{
  "openapi": "3.0.1",
  "info": {
    "title": "Kwai & Kuaishou Videos Scraper",
    "description": "Kwai & Kuaishou Videos Scraper SD - Kwai & Kuaishou Videos Scraper is a logged-out tool that extracts Kwai videos by keyword, hashtag, creator or link (views, likes, comments, shares, mp4 and cover URLs, music, creator stats) plus the trending feed and the Kuaishou hot list.",
    "version": "1.0",
    "x-build-id": "TGpalTsX6p9SbUGar"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/neuro-scraper~kwai-kuaishou-videos-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-neuro-scraper-kwai-kuaishou-videos-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/neuro-scraper~kwai-kuaishou-videos-scraper/runs": {
      "post": {
        "operationId": "runs-sync-neuro-scraper-kwai-kuaishou-videos-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/neuro-scraper~kwai-kuaishou-videos-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-neuro-scraper-kwai-kuaishou-videos-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",
        "properties": {
          "operation": {
            "title": "Operation",
            "enum": [
              "auto",
              "searchVideos",
              "hashtagVideos",
              "userVideos",
              "userDetail",
              "videoDetail",
              "trending",
              "kuaishouHotList"
            ],
            "type": "string",
            "description": "What to scrape. Auto = every input below is used (search terms -> search results, hashtags -> hashtag videos, profile links -> the creator's videos, video links -> one video each). User profile = one row per creator (followers, following, videos, likes received, bio) instead of their videos. Trending = Kwai's For You feed (no other input needed). Kuaishou hot list = the public 快手 hot list from kuaishou.com/brilliant.",
            "default": "auto"
          },
          "searchTerms": {
            "title": "Search terms",
            "type": "array",
            "description": "Keywords to search on Kwai, one per line, e.g. futebol or gol bonito. A term starting with # is read as a hashtag. Results page 10 at a time (offset cursor) until Max items or Kwai's last result.",
            "items": {
              "type": "string"
            }
          },
          "keyword": {
            "title": "Keyword (single)",
            "type": "string",
            "description": "Optional. One more search keyword (same as a line in Search terms), e.g. receitas."
          },
          "hashtags": {
            "title": "Hashtags",
            "type": "array",
            "description": "Hashtags (with or without #) or hashtag links (https://www.kwai.com/topic/neymar), one per line. Kwai's topic list is followed with its own pcursor until Max items or the end.",
            "items": {
              "type": "string"
            }
          },
          "urls": {
            "title": "Video or profile links / handles / ids",
            "type": "array",
            "description": "Kwai links, one per line: a profile (https://www.kwai.com/@Futecem or @Futecem), a video (https://www.kwai.com/@Futecem/video/5253317596671093874), a share link (https://k.kwai.com/p/...), a numeric user id (15 digits) or a video id (19 digits). The Kuaishou hot list page https://www.kuaishou.com/brilliant is accepted too. startUrls and profile_url are read as the same list.",
            "items": {
              "type": "string"
            }
          },
          "userId": {
            "title": "User ID / handle",
            "type": "string",
            "description": "Optional. One Kwai creator: handle (Futecem), numeric user id or eid (3x...). Same as a profile line in the links list."
          },
          "videoId": {
            "title": "Video ID",
            "type": "string",
            "description": "Optional. One Kwai video id (19 digits, the number after /video/ in a link), e.g. 5253317596671093874."
          },
          "maxItems": {
            "title": "Max items (per search term, hashtag or profile)",
            "minimum": 1,
            "maximum": 10000,
            "type": "integer",
            "description": "How many videos to return for each search term, hashtag and profile (and in total for Trending and the hot list). The platform's own cursor is followed page by page until this number or the list's end.",
            "default": 30
          },
          "maxTotalItems": {
            "title": "Max items in total (0 = no limit)",
            "minimum": 0,
            "maximum": 1000000,
            "type": "integer",
            "description": "Optional cap on all rows of the run together. 0 = only the per-target limit applies.",
            "default": 0
          },
          "maxPages": {
            "title": "Max pages per target (0 = no limit)",
            "minimum": 0,
            "maximum": 10000,
            "type": "integer",
            "description": "Optional. Stop each search term / hashtag / profile after this many pages (search pages hold 10 videos, hashtag pages about 20, profile pages 20).",
            "default": 0
          },
          "profileSortBy": {
            "title": "Profile sort",
            "enum": [
              "latest",
              "popular"
            ],
            "type": "string",
            "description": "latest = the creator's newest videos first, as Kwai lists them. popular = most viewed first: the newest 'Popular: videos to scan' are read, sorted by views, and the top Max items are kept (Kwai has no popular sort logged out).",
            "default": "latest"
          },
          "popularScanDepth": {
            "title": "Popular: videos to scan",
            "minimum": 1,
            "maximum": 5000,
            "type": "integer",
            "description": "With Popular sort: how many of the newest videos are read per profile before picking the most viewed.",
            "default": 200
          },
          "includeAuthorStats": {
            "title": "Add creator stats to search / hashtag / video rows",
            "type": "boolean",
            "description": "Read each creator's profile once (one extra request per creator) and fill authorFollowers, authorFollowing, authorVideoCount and authorLikesReceived on every row. Profile rows always carry them.",
            "default": false
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Kwai's main market is Brazil; residential Brazil is the default (measured to return the same data as direct). Pick another country to see that country's Kwai.",
            "default": {
              "useApifyProxy": true,
              "apifyProxyGroups": [
                "RESIDENTIAL"
              ],
              "apifyProxyCountry": "BR"
            }
          }
        }
      },
      "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
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "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
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}