# Twitch Scraper: Channels, Streams, Videos & Clips API (`f0rty7even/twitch-scraper`) Actor

Scrape Twitch channels via the official Helix API: profile, live stream status and viewers, recent videos, and top clips. Look up channels by name or search by keyword. Clean JSON output.

- **URL**: https://apify.com/f0rty7even/twitch-scraper.md
- **Developed by:** [F0rty7even](https://apify.com/f0rty7even) (community)
- **Categories:** Social media, Videos
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $4.00 / 1,000 channel scrapeds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

## 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 Scraper: Channels, Streams, Videos & Clips

**Export Twitch channel data into clean, structured records.** This **Twitch scraper** pulls channel profiles, live stream status, recent videos, and top clips straight from Twitch's official Helix API. Look up channels by name or search by keyword, and get one tidy record per channel with everything you asked for.

Powered by Twitch's official API. No login for you to manage, no anti-bot workarounds.

### Why this actor

- **Official API, reliable data**: structured channel records, not fragile HTML scraping.
- **Look up or search**: pass exact channel names, or search by keyword to discover channels.
- **Live status built in**: see who is live right now, their viewer count, category, and stream title.
- **Videos and clips on demand**: optionally attach each channel's recent VODs and most-viewed clips.
- **Simple pricing**: you are charged per channel returned, nothing else.

### Use cases

- **Influencer and sponsorship research**: find and vet streamers by category, size, and activity.
- **Live monitoring**: track which channels are live and how many viewers they have.
- **Gaming and esports analytics**: build datasets of channels, categories, and top clips.
- **Content discovery**: pull top clips and recent videos for a set of creators.

### Input

| Field | Description |
|---|---|
| `channels` | Twitch channel names (logins) or channel URLs (e.g. `ninja`, `https://twitch.tv/pokimane`). |
| `searchQuery` | Optional. Find channels by keyword instead of, or in addition to, an explicit list. |
| `includeStream` | Add current live status, viewer count, category, and stream title. |
| `includeVideos` | Add each channel's recent past broadcasts (VODs). |
| `includeClips` | Add each channel's most-viewed clips. |
| `maxVideosPerChannel` / `maxClipsPerChannel` | How many videos/clips to attach. |
| `maxItems` | Cap on channels returned (main cost lever, mostly for search). |
| `clientId` / `clientSecret` | Optional. Use your own Twitch app credentials instead of the built-in ones. |

### Output

Each channel becomes one dataset item:

```json
{
  "userId": "19571641",
  "login": "ninja",
  "displayName": "Ninja",
  "url": "https://www.twitch.tv/ninja",
  "description": "...",
  "broadcasterType": "partner",
  "profileImageUrl": "https://static-cdn.jtvnw.net/....png",
  "createdAt": "2011-01-16T21:07:38Z",
  "game": "Marvel Rivals",
  "streamTitle": "big streams",
  "language": "en",
  "tags": ["English"],
  "isLive": false,
  "viewerCount": null,
  "startedAt": null,
  "videos": [
    { "id": "...", "title": "...", "url": "...", "viewCount": 5063, "duration": "3h20m", "publishedAt": "2026-07-12T..." }
  ],
  "clips": [
    { "id": "...", "title": "...", "url": "...", "viewCount": 947553, "duration": 30.0, "createdAt": "2026-06-01T..." }
  ]
}
````

### Pricing

Pay per result: you are charged **per channel returned**. There is no monthly fee.

### Notes

- **Public data only.** This actor reads publicly available channel data through Twitch's official Helix API. It does not access private messages, email addresses, subscriber lists, or anything behind a login.
- **Follower lists** are not included because Twitch requires a channel owner's authorization for those; this actor uses app-level access to public data only.

# Actor input Schema

## `channels` (type: `array`):

Twitch channel names (logins) or channel URLs, e.g. ninja or https://twitch.tv/pokimane. Leave empty if you use a search query instead.

## `searchQuery` (type: `string`):

Find channels by keyword instead of (or in addition to) an explicit list. Returns channels matching the term.

## `includeStream` (type: `boolean`):

Add current live status, viewer count, game/category, and stream title for each channel.

## `includeVideos` (type: `boolean`):

Add each channel's most recent past broadcasts / videos (VODs).

## `includeClips` (type: `boolean`):

Add each channel's most-viewed clips.

## `maxVideosPerChannel` (type: `integer`):

How many recent videos to include when 'Include recent videos' is on.

## `maxClipsPerChannel` (type: `integer`):

How many top clips to include when 'Include top clips' is on.

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

Cap on channels returned (main cost lever). Applies mostly to search results.

## `clientId` (type: `string`):

Optional: your own Twitch app Client ID to use instead of the built-in credentials.

## `clientSecret` (type: `string`):

Optional: your own Twitch app Client Secret, paired with the Client ID above.

## Actor input object example

```json
{
  "channels": [
    "ninja"
  ],
  "includeStream": true,
  "includeVideos": false,
  "includeClips": false,
  "maxVideosPerChannel": 5,
  "maxClipsPerChannel": 5,
  "maxItems": 100
}
```

# Actor output Schema

## `channels` (type: `string`):

One normalized channel per item. Export as JSON, JSONL, CSV, or Excel.

# 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 = {
    "channels": [
        "ninja"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("f0rty7even/twitch-scraper").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 = { "channels": ["ninja"] }

# Run the Actor and wait for it to finish
run = client.actor("f0rty7even/twitch-scraper").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 '{
  "channels": [
    "ninja"
  ]
}' |
apify call f0rty7even/twitch-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Twitch Scraper: Channels, Streams, Videos & Clips API",
        "description": "Scrape Twitch channels via the official Helix API: profile, live stream status and viewers, recent videos, and top clips. Look up channels by name or search by keyword. Clean JSON output.",
        "version": "0.1",
        "x-build-id": "dDcns9aeUnmssBLey"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/f0rty7even~twitch-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-f0rty7even-twitch-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/f0rty7even~twitch-scraper/runs": {
            "post": {
                "operationId": "runs-sync-f0rty7even-twitch-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/f0rty7even~twitch-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-f0rty7even-twitch-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": {
                    "channels": {
                        "title": "Channels",
                        "type": "array",
                        "description": "Twitch channel names (logins) or channel URLs, e.g. ninja or https://twitch.tv/pokimane. Leave empty if you use a search query instead.",
                        "default": [],
                        "items": {
                            "type": "string"
                        }
                    },
                    "searchQuery": {
                        "title": "Search query (optional)",
                        "type": "string",
                        "description": "Find channels by keyword instead of (or in addition to) an explicit list. Returns channels matching the term."
                    },
                    "includeStream": {
                        "title": "Include live stream status",
                        "type": "boolean",
                        "description": "Add current live status, viewer count, game/category, and stream title for each channel.",
                        "default": true
                    },
                    "includeVideos": {
                        "title": "Include recent videos",
                        "type": "boolean",
                        "description": "Add each channel's most recent past broadcasts / videos (VODs).",
                        "default": false
                    },
                    "includeClips": {
                        "title": "Include top clips",
                        "type": "boolean",
                        "description": "Add each channel's most-viewed clips.",
                        "default": false
                    },
                    "maxVideosPerChannel": {
                        "title": "Max videos per channel",
                        "minimum": 1,
                        "maximum": 100,
                        "type": "integer",
                        "description": "How many recent videos to include when 'Include recent videos' is on.",
                        "default": 5
                    },
                    "maxClipsPerChannel": {
                        "title": "Max clips per channel",
                        "minimum": 1,
                        "maximum": 100,
                        "type": "integer",
                        "description": "How many top clips to include when 'Include top clips' is on.",
                        "default": 5
                    },
                    "maxItems": {
                        "title": "Max channels",
                        "minimum": 1,
                        "maximum": 5000,
                        "type": "integer",
                        "description": "Cap on channels returned (main cost lever). Applies mostly to search results.",
                        "default": 100
                    },
                    "clientId": {
                        "title": "Twitch Client ID (optional)",
                        "type": "string",
                        "description": "Optional: your own Twitch app Client ID to use instead of the built-in credentials."
                    },
                    "clientSecret": {
                        "title": "Twitch Client Secret (optional)",
                        "type": "string",
                        "description": "Optional: your own Twitch app Client Secret, paired with the Client ID above."
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
