# Kick Video Downloader: Clips and VODs as MP4 with Watchlist (`getascraper/kick-video-downloader`) Actor

Download Kick.com clips and VODs as MP4 files by channel or direct URL. Watchlist mode catches new clips automatically, before the streamer deletes the source VOD. Clear size-based pricing, no surprise stacked fees. Built for clip creators, archivists and social teams.

- **URL**: https://apify.com/getascraper/kick-video-downloader.md
- **Developed by:** [GetAScraper](https://apify.com/getascraper) (community)
- **Categories:** Videos, Automation, Other
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $6.40 / 1,000 video (small)s

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## 🎬 Kick Video Downloader: Clips and VODs as MP4 with Watchlist

<table width="100%" style="display:table;width:100%">
<tr>
<td style="padding:24px 28px;background:#F5F3FF;border:1px solid #DDD6FE;border-top:4px solid #6D28D9;border-radius:12px">
<span style="font-size:23px;font-weight:800;color:#1C1917;line-height:1.3">Download Kick clips and VODs before they're gone</span><br>
<span style="font-size:15px;color:#57534E;line-height:1.6">Get MP4 files from any Kick channel or direct URL. Watchlist mode grabs new clips automatically, before the streamer deletes the source VOD.</span>
</td>
</tr>
</table>

<table width="100%" style="display:table;width:100%;border-collapse:collapse;table-layout:fixed">
<tr>
<td width="25%" style="width:25%;padding:14px 12px;background:#FFFFFF;border:1px solid #DDD6FE;border-radius:10px 0 0 10px;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#6D28D9">🎯 Clear pricing, no guessing</span><br>
<span style="font-size:12px;color:#57534E">Size tiers are stated plainly. Know roughly what a download costs before you run it.</span>
</td>
<td width="25%" style="width:25%;padding:14px 12px;background:#FFFFFF;border:1px solid #DDD6FE;border-left:none;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#6D28D9">🔔 Watchlist mode</span><br>
<span style="font-size:12px;color:#57534E">Track a channel and download only what's new since your last run.</span>
</td>
<td width="25%" style="width:25%;padding:14px 12px;background:#FFFFFF;border:1px solid #DDD6FE;border-left:none;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#6D28D9">⚡ No browser needed</span><br>
<span style="font-size:12px;color:#57534E">Runs on Kick's own public data. Fast, reliable, nothing to configure.</span>
</td>
<td width="25%" style="width:25%;padding:14px 12px;background:#FFFFFF;border:1px solid #DDD6FE;border-left:none;border-radius:0 10px 10px 0;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#6D28D9">🔒 Personal use, stated plainly</span><br>
<span style="font-size:12px;color:#57534E">Built for archiving and offline viewing. Redistribution is the streamer's call.</span>
</td>
</tr>
</table>

Pull clips and VODs from any public [Kick](https://kick.com) channel. Export MP4 download links to JSON, CSV or Excel, or connect them into your own pipeline via the API. Run it once, or schedule it to watch a channel. No account, no API key, no coding required.

### ✨ Why use this Actor

**Built for anyone who needs Kick footage before it disappears.**

- 🎬 **Clip compilation creators**: pull the source footage the moment a clip goes up, not after the VOD it came from is deleted.
- 📼 **Fan archivists and community moderators**: preserve VODs and clips for a community or wiki with a scheduled watchlist that checks your favorite channels automatically.
- 📊 **Social and marketing teams**: repurposing streamer content needs a cost you can predict per download, not a surprise bill after the fact.

**Pricing is the real difference.** The leading alternative bills through six separate size-based charges plus a startup fee, so you can't know the cost until after the download finishes. This Actor states its size tiers plainly, and no other Kick downloader on the Store offers a watchlist that catches new clips before the source VOD is gone.

### 🚀 How it works

<table width="100%" style="display:table;width:100%;border-collapse:collapse;table-layout:fixed">
<tr>
<td width="33%" style="width:33.333%;padding:16px 14px;background:#F5F3FF;border:1px solid #DDD6FE;border-radius:10px 0 0 10px;vertical-align:top">
<span style="font-size:12px;font-weight:800;color:#6D28D9;letter-spacing:1px">STEP 1</span><br>
<span style="font-size:14px;font-weight:700;color:#1C1917">Pick a channel or paste a URL</span><br>
<span style="font-size:12px;color:#57534E">Give it a Kick channel, or a specific clip or VOD link.</span>
</td>
<td width="33%" style="width:33.333%;padding:16px 14px;background:#F5F3FF;border:1px solid #DDD6FE;border-left:none;vertical-align:top">
<span style="font-size:12px;font-weight:800;color:#6D28D9;letter-spacing:1px">STEP 2</span><br>
<span style="font-size:14px;font-weight:700;color:#1C1917">Set your limits</span><br>
<span style="font-size:12px;color:#57534E">Choose how many clips, or cap a VOD's length to control cost and run time.</span>
</td>
<td width="33%" style="width:33.333%;padding:16px 14px;background:#F5F3FF;border:1px solid #DDD6FE;border-left:none;border-radius:0 10px 10px 0;vertical-align:top">
<span style="font-size:12px;font-weight:800;color:#6D28D9;letter-spacing:1px">STEP 3</span><br>
<span style="font-size:14px;font-weight:700;color:#1C1917">Get your MP4s</span><br>
<span style="font-size:12px;color:#57534E">Download links land in your dataset, ready to grab.</span>
</td>
</tr>
</table>

### 📥 Input

| Field | Type | Required | Description |
|---|---|---|---|
| `mode` | enum | No | What to download: latest clips from a channel, latest VODs from a channel, or specific URLs. |
| `channel` | string | No | Kick channel slug, e.g. xqc. Used for channel-based modes. |
| `directUrls` | array of URLs | No | Specific Kick clip or VOD URLs to download. |
| `maxItems` | integer | No | Stop after downloading this many clips or VODs. |
| `maxVodDurationMinutes` | integer | No | Caps how much of a VOD is downloaded, so one long broadcast can't blow past cost or run time. |
| `monitorMode` | boolean | No | Remember what was already downloaded for this channel and fetch only new clips or VODs on later runs. |
| `proxyConfiguration` | object | No | Proxy settings. Datacenter by default. |

### 📤 Output

Every result is one downloaded clip or VOD:

```json
{
  "mediaType": "clip",
  "id": "clip_01M1GPMNTS36TJXS6KKG57CC87",
  "channel": "xqc",
  "title": "Odin's empty vault Sadge",
  "category": "Just Chatting",
  "durationSec": 61,
  "viewCount": 7,
  "sourcePageUrl": "https://kick.com/xqc?clip=clip_01M1GPMNTS36TJXS6KKG57CC87",
  "downloadUrl": "https://api.apify.com/v2/key-value-stores/.../records/clip-....mp4",
  "fileSizeBytes": 47879506
}
```

Download the dataset in JSON, CSV, Excel, HTML or XML from the Apify Console, or pull it through the API. Each row's `downloadUrl` links directly to the MP4 file.

### 📊 Data table

| Field | Type | Description |
|---|---|---|
| `mediaType` | string | `clip` or `vod`. |
| `id` | string | The clip ID or VOD's unique identifier. |
| `channel` | string | The Kick channel the media belongs to. |
| `title` | string | The clip or broadcast title, where published. |
| `category` | string | The game or stream category, where published. |
| `durationSec` | number | Duration in seconds. |
| `viewCount` | number | View count at time of collection. |
| `sourcePageUrl` | string | Link back to the clip or VOD on Kick. |
| `downloadUrl` | string | Direct link to the downloaded MP4 file. |
| `fileSizeBytes` | number | Size of the downloaded file. |
| `changedFields` | array | Watchlist mode only: present when a prior snapshot changed. |
| `error` | string | Set when a specific clip or VOD failed to download. |

The Output tab also ships two pre-built views: a downloads overview and a watchlist-changes view.

### 💰 Pricing

This Actor is pay per result: you only pay for the clips and VODs you actually download, sized in clear, stated tiers. A run that returns nothing costs nothing. There is no subscription and no hidden startup fee.

### ⭐ Enjoying Kick Video Downloader?

<table width="100%" style="display:table;width:100%">
<tr>
<td style="padding:20px 24px 14px;background:#F5F3FF;border:1px solid #DDD6FE;border-left:5px solid #6D28D9;border-radius:10px 10px 0 0">
<span style="font-size:20px;letter-spacing:4px">⭐ ⭐ ⭐ ⭐ ⭐</span><br>
<span style="font-size:17px;font-weight:800;color:#1C1917">Found the clip before it vanished?</span><br>
<span style="font-size:14px;color:#57534E">A 5-star rating takes 10 seconds and helps other creators and archivists find it. Your feedback also tells us what to build next.</span>
</td>
</tr>
<tr>
<td style="padding:0;background:#6D28D9;border:1px solid #DDD6FE;border-top:none;border-radius:0 0 10px 10px;text-align:center">
<a href="https://apify.com/getascraper/kick-video-downloader/reviews" style="display:block;padding:13px 16px;color:#FFFFFF;text-decoration:none;font-weight:800;font-size:15px;letter-spacing:0.3px">★&nbsp;&nbsp;Rate this Actor on Apify</a>
</td>
</tr>
</table>

### 🛠️ Tips for better runs

- Turn on `monitorMode` and schedule the Actor to catch new clips as soon as a streamer posts them, before the source VOD can be deleted.
- Set `maxVodDurationMinutes` deliberately on long broadcasts. A full multi-hour VOD costs and takes longer than a short highlight.
- Use `directUrls` mode when you already know exactly which clips or VODs you want, for the fastest and cheapest run.
- Deleted or private VODs can't be recovered. If a clip or VOD is gone from Kick, this Actor can't get it back.

### ❓ FAQ

**Is it legal to download Kick clips and VODs?**
Kick's own Help Center supports downloading your own stream recordings. For other creators' content, downloading for personal, offline viewing is generally fine, but re-uploading, re-clipping without credit, or commercial use is the streamer's call, not this Actor's. You are responsible for how you use downloaded content.

**Can I download an entire multi-hour VOD?**
Yes, up to the length you set in `maxVodDurationMinutes`. This exists to keep cost and run time predictable on very long broadcasts. Raise the cap if you need more, or run `directUrls` mode against just the segment you need.

**Why did a clip or VOD fail to download?**
Kick content can be deleted or made private at any time, sometimes within minutes of a broadcast ending. A failed row includes an `error` field explaining what happened, rather than silently disappearing from your results.

**Can I get alerted when a channel posts something new?**
Yes. Turn on watchlist mode and schedule the Actor to run periodically. Only clips or VODs new since the last check are downloaded.

Found a bug or need a custom version of this Actor? Open an issue from the Actor's Issues tab and it'll be looked at directly.

### 🔗 Other actors

- [Kick Streamer Intelligence Monitor: Live Channels, Streams & Clips](https://apify.com/getascraper/kick-scraper) ↗ - Kick channel, stream, VOD and clip metadata with change tracking.
- [Loom Video Downloader: MP4, captions, and metadata](https://apify.com/getascraper/loom-video-downloader) ↗ - download Loom recordings as MP4 with captions.
- [Streamable Video Downloader: Direct MP4 links in seconds](https://apify.com/getascraper/streamable-video-downloader) ↗ - direct MP4 links from Streamable videos.
- [Twitch Scraper: channels, live streams, clips and games](https://apify.com/getascraper/twitch-scraper) ↗ - channel, stream and clip data from Twitch.
- [Bulk Image Downloader: Website Crawl, ZIP and Image Dataset](https://apify.com/getascraper/bulk-image-downloader) ↗ - crawl a site and download every image found.

# Actor input Schema

## `mode` (type: `string`):

What to download: the latest clips from a channel, the latest VODs from a channel, or specific clip/VOD URLs you already know.

## `channel` (type: `string`):

Kick channel slug, from kick.com/<channel>. Used when Mode is set to a channel-based option.

## `directUrls` (type: `array`):

Specific Kick clip or VOD page URLs to download. Used only when Mode is set to specific URLs.

## `monitorMode` (type: `boolean`):

Remember what was already downloaded for this channel and fetch only clips or VODs new since the last run. Turn this on for scheduled runs that need to catch a clip before its source VOD is deleted.

## `maxItems` (type: `integer`):

Stop after downloading this many clips or VODs in this run.

## `maxVodDurationMinutes` (type: `integer`):

Caps how much of a VOD is downloaded, so one long broadcast can't blow past the run's expected time or cost. Does not apply to clips, which are already short.

## `proxyConfiguration` (type: `object`):

Datacenter proxy is enough for Kick's public API and video CDN, and is the default. Only switch to residential if you hit unexpected blocks at very high volume.

## Actor input object example

```json
{
  "mode": "channelClips",
  "channel": "xqc",
  "directUrls": [],
  "monitorMode": false,
  "maxItems": 5,
  "maxVodDurationMinutes": 10,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `downloads` (type: `string`):

No description

## `files` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "mode": "channelClips",
    "channel": "xqc",
    "directUrls": [],
    "monitorMode": false,
    "maxItems": 5,
    "maxVodDurationMinutes": 10,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("getascraper/kick-video-downloader").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "mode": "channelClips",
    "channel": "xqc",
    "directUrls": [],
    "monitorMode": False,
    "maxItems": 5,
    "maxVodDurationMinutes": 10,
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("getascraper/kick-video-downloader").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "mode": "channelClips",
  "channel": "xqc",
  "directUrls": [],
  "monitorMode": false,
  "maxItems": 5,
  "maxVodDurationMinutes": 10,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call getascraper/kick-video-downloader --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,getascraper/kick-video-downloader"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/6yE6UrUImbGHIqCYL/builds/Yn2uXGyRm8bquXOmQ/openapi.json
