# 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:** [Michael Yousrie](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 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

## 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

Download the OpenAPI definition: https://api.apify.com/v2/acts/Z7idCfDTk1Nbzbz1I/builds/dDcns9aeUnmssBLey/openapi.json
