{
  "openapi": "3.0.1",
  "info": {
    "title": "Kwai Scraper - Videos, Creators, Hashtags & Search",
    "description": "Scrape Kwai videos from URLs, creator profiles, playlists, hashtags and keyword search, or find creators in a niche. Schedule it daily with onlyNewVideos to get only new videos. No login. From US$ 2 per 1,000 videos; failed items are free.",
    "version": "0.2",
    "x-build-id": "fJfn8Ja9STIpdkria"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/scrapewise~kwai-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-scrapewise-kwai-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/scrapewise~kwai-scraper/runs": {
      "post": {
        "operationId": "runs-sync-scrapewise-kwai-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/scrapewise~kwai-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-scrapewise-kwai-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": {
          "urls": {
            "title": "Kwai URLs",
            "type": "array",
            "description": "Kwai links or handles, one per line. A profile (https://www.kwai.com/@cnnbrasil or just @cnnbrasil) returns that creator's videos, newest first, up to 'Max items'. A video URL (https://www.kwai.com/@Futecem/video/5214755523601622914) or a bare video id returns that one video. Playlist URLs (/@user/playlist/<id>), hashtag URLs (/topic/halloween) and app share links (https://k.kwai.com/p/...) also work, even pasted inside the app's share message. Duplicates in a run are removed before charging; invalid lines become free INVALID_URL rows. Also accepts 'startUrls' and 'userId'. Leave empty if you only use search terms or hashtags.",
            "items": {
              "type": "string"
            }
          },
          "searchTerms": {
            "title": "Search terms",
            "type": "array",
            "description": "Keywords to search on Kwai, one per line, for example makeup tutorial, Champions League or asmr. Each keyword is searched separately and returns up to 'Max items' videos; every row says which keyword found it in 'source' (search:asmr). Kwai's search index leans toward Brazil and Latin America, so short keywords work better than long phrases. A keyword with no results returns one free NO_RESULTS row. Also accepts 'keyword' and 'operation' + 'input'.",
            "items": {
              "type": "string"
            }
          },
          "hashtags": {
            "title": "Hashtags",
            "type": "array",
            "description": "Hashtags with or without #, one per line, for example halloween or #asmr. Each hashtag returns up to 'Max items' videos from its public feed, ordered by Kwai's relevance (not by date). Kwai repeats videos across feed pages: duplicates are removed and not charged, and the feed stops after three pages with nothing new.",
            "items": {
              "type": "string"
            }
          },
          "resultType": {
            "title": "What to return",
            "enum": [
              "videos",
              "creators"
            ],
            "type": "string",
            "description": "Videos (default): one row per video with its stats, charged per video. Creators: the same profiles, keywords and hashtags become one row per creator, with followers, total likes and video count plus how many of the matched videos are theirs, their views in your niche and their best video. Use it to build an influencer shortlist or to look up followers for a list of @handles. From 2026-10-25 a creator row is charged as 'perfil-completo' (US$ 6.00 per 1,000 on the Free plan) instead of the video price.",
            "default": "videos"
          },
          "maxItems": {
            "title": "Max items",
            "minimum": 0,
            "maximum": 10000,
            "type": "integer",
            "description": "Maximum videos for each profile, playlist, hashtag and search term (in Creators mode: maximum creators per keyword or hashtag). Default 30. 0 means no limit, up to 10,000 per input. Video URLs are always returned in full and do not count against this. Since you pay per row, this is also your spending cap per input: 30 listing videos cost US$ 0.06 on the Free plan.",
            "default": 30
          },
          "includeAuthorStats": {
            "title": "Creator followers and totals",
            "type": "boolean",
            "description": "On (default): adds the creator's followers, following, total likes and video count to 'authorMeta' on every video. It costs one light request per creator, cached for the whole run, and nothing extra in price. Turn it off only to make very large hashtag runs a little faster.",
            "default": true
          },
          "includeTranscript": {
            "title": "Include transcript and genres",
            "type": "boolean",
            "description": "Adds 'transcript' (the spoken words of the video as text, from Kwai's own speech recognition; present on about half of the videos in our tests, null on music-only videos) and 'genres' (Kwai's categories such as Soccer, Cooking or News). The Actor opens each video page once, so runs take longer, but the price per video stays the same. Default off.",
            "default": false
          },
          "onlyNewVideos": {
            "title": "Only new videos (for schedules)",
            "type": "boolean",
            "description": "For scheduled runs. Remembers the videos already delivered for each profile, hashtag, playlist and keyword in the Key-Value Store 'kwai-scraper-only-new-videos' in your account, and returns only videos not delivered before. The first run delivers up to 'Max items'; later runs return only what is new, and a run with nothing new is empty and costs nothing. Delete the store to start over. Video URLs are always returned. Not used in Creators mode. Default off.",
            "default": false
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Apify datacenter proxy (the default) works for Kwai; blocked requests are retried on a new IP, and a page blocked on every retry becomes a free BLOCKED row. Change it only if you have a reason to use another proxy group.",
            "default": {
              "useApifyProxy": true
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}