# Twitch Video Downloader (`serpdownloaders/twitch-video-downloader`) Actor

Twitch Video Downloader gives creators and teams a dependable way to save Twitch videos instantly for offline viewing. Instead of juggling manual captures or questionable browser extensions, it pulls content directly from Twitch with consistent quality and predictable results.

It supports Twitch V

- **URL**: https://apify.com/serpdownloaders/twitch-video-downloader.md
- **Developed by:** [SERP Downloaders](https://apify.com/serpdownloaders) (community)
- **Categories:** Videos, Automation, Social media
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

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

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use 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

## Twitch Video Downloader

> Download Twitch clips, VODs, and highlights as MP4 files directly from your browser. Use this page for current scope details and waitlist updates.

![Twitch Video Downloader](https://raw.githubusercontent.com/serpdownloaders/twitch-video-downloader/main/assets/workflow-preview.webp)

Twitch Video Downloader is an upcoming browser extension that will provide users with a seamless way to save video content from Twitch without relying on third-party desktop applications or complicated command-line utilities. It is being engineered around the Twitch web experience so you can grab clips, past broadcasts, and highlight reels while browsing channels and watching streams.

- Save Twitch clips, VODs, and highlights as local MP4 files
- Download past broadcasts and archived stream segments
- Capture highlight compilations from any public channel
- Work entirely inside the browser with no external software required
- Designed for Chrome, Edge, Brave, Opera, Firefox, and other Chromium browsers

### Status

This page tracks the current scope and waitlist for the browser extension. Sign up below to get release updates.

:bell: **Get release updates:** [Join the waitlist](https://serp.ly/twitch-video-downloader)

### Get it Here

Get it here: https://serp.ly/twitch-video-downloader

### Table of Contents

- [Why Twitch Video Downloader](#why-twitch-video-downloader)
- [Planned Features](#planned-features)
- [How It Will Work](#how-it-will-work)
- [Expected Formats](#expected-formats)
- [Who It's For](#who-its-for)
- [Use Cases We're Building For](#use-cases-were-building-for)
- [FAQ](#faq)
- [License](#license)
- [Notes](#notes)
- [About Twitch](#about-twitch)

### Why Twitch Video Downloader

Twitch serves video through adaptive HLS streaming, which means there is no direct download link when you watch a clip or browse a VOD archive. Clips can be shared with short URLs, but saving them as actual video files requires workarounds. VODs are even trickier because they are segmented into hundreds of small transport stream chunks that need to be reassembled into a single watchable file. Highlights sit in a similar position, locked behind the player with no native export button.

Twitch Video Downloader is being designed to handle all of that complexity behind a single browser button. The extension will detect when you are viewing a clip page, VOD, or highlight reel, resolve the underlying video segments, and assemble them into a standard MP4 file that downloads straight to your machine. No copying URLs into external sites, no installing FFmpeg, and no juggling terminal commands.

### Planned Features

- One-click download of Twitch clips from any public clip page
- Full VOD capture including multi-hour past broadcasts
- Highlight reel downloads from channel video archives
- Resolution selection so you can pick between available quality tiers
- Automatic assembly of segmented HLS streams into a single MP4 container
- Batch queue for downloading multiple clips or VODs in sequence
- Filename templating with channel name, date, and video title
- Cross-browser compatibility targeting Chrome, Edge, Brave, and Firefox

### How It Will Work

1. Install the extension once it is released from the browser extension store.
2. Navigate to any Twitch channel, clip page, or video archive.
3. Open the clip, VOD, or highlight you want to save.
4. Click the extension icon or the download overlay that appears on the player.
5. Select your preferred resolution from the available quality options.
6. The extension resolves the HLS manifest and begins fetching video segments.
7. Segments are assembled into a single MP4 file inside the browser.
8. The finished file is saved to your default downloads folder.

### Expected Formats

- Input: Twitch HLS streams (segmented MPEG-TS delivered over adaptive bitrate)
- Output: MP4 (H.264 video with AAC audio in a standard container)

Exported files will be compatible with virtually every media player, video editor, and mobile device without any additional conversion step.

### Who It's For

- Viewers who want to keep personal copies of favorite stream moments
- Content creators archiving their own broadcasts before Twitch auto-deletes them
- Esports fans saving tournament highlights and clutch plays for later review
- Editors and clippers collecting source footage for compilations and montages
- Community moderators preserving VOD evidence for rule enforcement records

### Use Cases We're Building For

- Save a clutch play clip before the streamer deletes it or the channel goes offline
- Archive a full past broadcast that Twitch will automatically remove after the retention window
- Download your own stream VODs to repurpose into YouTube videos or social media cuts
- Collect highlight reels from an esports tournament for a recap video project
- Build a local library of cooking, music, or art streams for offline viewing during travel

### FAQ

**When will Twitch Video Downloader be released?**
A release date has not been set. Sign up at the waitlist link above to be notified as soon as it is available.

**Does it work with live streams?**
No. This extension targets recorded content such as clips, VODs, and highlights. Live stream recording is not a planned feature for the initial release.

**What video quality will be available?**
You will be able to choose from whichever resolution tiers Twitch provides for a given video, typically ranging from 360p up to the original broadcast quality.

**Will it include chat replay or subtitles?**
Chat replay export is not planned for the first version. The focus is on delivering clean MP4 video files with the original audio track intact.

**Is it free?**
Pricing details will be announced closer to launch. SERP extensions typically include a free trial period.

**Can I download subscriber-only VODs?**
The extension will operate within your existing Twitch account permissions. If you can view a VOD in the browser, the extension should be able to capture it.

### License

This repository is distributed under the proprietary SERP Apps license in the [LICENSE](https://github.com/serpdownloaders/twitch-video-downloader/blob/main/LICENSE) file. Review that file before copying, modifying, or redistributing any part of this project.

### Notes

- This extension is in development and is not available for download yet
- Only download content you own or have explicit permission to save
- Video quality will depend on the source resolution and bitrate provided by Twitch
- Twitch platform or API changes may affect functionality once released
- An internet connection is required to fetch video segments from Twitch servers

### About Twitch

Twitch is the leading live streaming platform for gaming, esports, music, and creative content, hosting millions of creators and communities worldwide. Its clip and VOD system lets viewers revisit past broadcasts, but the platform does not offer any built-in option to download videos as local files. Twitch Video Downloader is being built to fill that gap for users who want to keep a personal, offline copy of the Twitch content they already watch and engage with through their account.

# Actor input Schema

## `listingNotice` (type: `string`):

Optional informational field only. This actor currently serves as the public listing surface for the browser extension and does not yet expose a finalized runtime API contract.

## Actor input object example

```json
{
  "listingNotice": "No runtime input is required yet. See the README and product page for the current extension workflow."
}
````

# 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 = {};

// Run the Actor and wait for it to finish
const run = await client.actor("serpdownloaders/twitch-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 = {}

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

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

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

```

## CLI example

```bash
echo '{}' |
apify call serpdownloaders/twitch-video-downloader --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=serpdownloaders/twitch-video-downloader",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Twitch Video Downloader",
        "description": "Twitch Video Downloader gives creators and teams a dependable way to save Twitch videos instantly for offline viewing. Instead of juggling manual captures or questionable browser extensions, it pulls content directly from Twitch with consistent quality and predictable results.\n\nIt supports Twitch V",
        "version": "0.0",
        "x-build-id": "SqdUD0f7L1ruBU4SY"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/serpdownloaders~twitch-video-downloader/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-serpdownloaders-twitch-video-downloader",
                "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/serpdownloaders~twitch-video-downloader/runs": {
            "post": {
                "operationId": "runs-sync-serpdownloaders-twitch-video-downloader",
                "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/serpdownloaders~twitch-video-downloader/run-sync": {
            "post": {
                "operationId": "run-sync-serpdownloaders-twitch-video-downloader",
                "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": {
                    "listingNotice": {
                        "title": "Listing notice",
                        "type": "string",
                        "description": "Optional informational field only. This actor currently serves as the public listing surface for the browser extension and does not yet expose a finalized runtime API contract.",
                        "default": "No runtime input is required yet. See the README and product page for the current extension workflow."
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
