{
  "openapi": "3.0.1",
  "info": {
    "title": "Kick Trending Clips Scraper: Rank Viral Clips by View Velocity",
    "description": "Find Kick.com clips going viral right now, ranked by view velocity (views per hour) or total views, scoped to the whole site, a category, or specific channels via Kick's real per-channel API. Monitor mode returns only clips you have not already seen. Export JSON, CSV, or Excel. $2 per 1,000 clips.",
    "version": "0.0",
    "x-build-id": "ajqXbf94Dv2oAosM0"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/getascraper~kick-trending-clips-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-getascraper-kick-trending-clips-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/getascraper~kick-trending-clips-scraper/runs": {
      "post": {
        "operationId": "runs-sync-getascraper-kick-trending-clips-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/getascraper~kick-trending-clips-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-getascraper-kick-trending-clips-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": {
          "mode": {
            "title": "Discovery scope",
            "enum": [
              "global",
              "category",
              "channel"
            ],
            "type": "string",
            "description": "Global scans Kick's site-wide recent-clips feed and ranks across everything. Category and Channel scan that same feed but only keep clips matching the categories or channels you list below, since Kick's API does not filter these server side.",
            "default": "global"
          },
          "categories": {
            "title": "Categories",
            "type": "array",
            "description": "Kick category slugs to keep, for example just-chatting or grand-theft-auto-v. Only used when Discovery scope is set to Category. Find a category's slug in its Kick.com URL.",
            "items": {
              "type": "string"
            },
            "default": []
          },
          "channels": {
            "title": "Channels",
            "type": "array",
            "description": "Kick channel slugs to scan, for example xqc. Only used when Discovery scope is set to Channel. Each channel is fetched from its own clips feed instead of the global one, so results are complete for that channel rather than sampled.",
            "items": {
              "type": "string"
            },
            "default": []
          },
          "sortBy": {
            "title": "Rank by",
            "enum": [
              "velocity",
              "views"
            ],
            "type": "string",
            "description": "Velocity ranks clips by views per hour since they were created, the real signal for what is trending right now. Views ranks by total lifetime view count instead, which favors older clips that have simply had more time to accumulate views.",
            "default": "velocity"
          },
          "timeWindowHours": {
            "title": "Freshness window (hours)",
            "minimum": 1,
            "maximum": 720,
            "type": "integer",
            "description": "Only rank clips created within this many hours. This is applied after scanning, since Kick's API has no server-side time filter, so a wide window only works if Scan depth below is also raised enough to actually reach that far back; a narrow window is reachable with a small scan depth.",
            "default": 24
          },
          "minViews": {
            "title": "Minimum views",
            "minimum": 0,
            "type": "integer",
            "description": "Drop clips with fewer than this many total views.",
            "default": 0
          },
          "minViewsPerHour": {
            "title": "Minimum views per hour",
            "minimum": 0,
            "type": "number",
            "description": "Drop clips below this views-per-hour velocity. Raise this to keep only clips that are actively gaining views fast, not just old clips with a high total.",
            "default": 0
          },
          "maxDurationSeconds": {
            "title": "Maximum clip duration (seconds)",
            "minimum": 0,
            "type": "integer",
            "description": "Drop clips longer than this many seconds. Use 0 for no duration limit.",
            "default": 0
          },
          "excludeMature": {
            "title": "Exclude mature content",
            "type": "boolean",
            "description": "Skip clips Kick has flagged as mature (18+).",
            "default": false
          },
          "maxClips": {
            "title": "Max clips to return",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "The hard cap on ranked clips returned and charged in this run. Keep this low for a quick check; raise it once you know the scope and filters above return what you expect.",
            "default": 20
          },
          "scanDepth": {
            "title": "Scan depth",
            "minimum": 20,
            "maximum": 2000,
            "type": "integer",
            "description": "How many recent clips to fetch and rank before filters and the Max clips cap are applied. Scanning is free; only the ranked clips actually returned are charged. A wider Freshness window or a narrower Category/Channel scope needs a higher scan depth to find enough matching clips.",
            "default": 150
          },
          "onlyNew": {
            "title": "Monitor mode: only new clips",
            "type": "boolean",
            "description": "When enabled, clips already returned to you in an earlier run with the same Discovery scope are skipped, so a scheduled run only reports genuinely new trending clips.",
            "default": false
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Datacenter proxy is sufficient for Kick's clip API and is far cheaper than residential. Only switch to residential if you start seeing blocked or empty responses.",
            "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}