# Twitch Live Streams Scraper | Top Streams, Games, Viewers (`parseforge/twitch-live-streams-scraper`) Actor

Tap into creator and stream records from Twitch Live Streams with channel name, follower count, viewer count, category, language and direct links. Loved by influencer discovery, brand partnerships and audience research. Run on demand or on a recurring schedule and feed every row into your favouri.

- **URL**: https://apify.com/parseforge/twitch-live-streams-scraper.md
- **Developed by:** [ParseForge](https://apify.com/parseforge) (community)
- **Categories:** Videos, Social media, Automation
- **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

![ParseForge Banner](https://github.com/ParseForge/apify-assets/blob/ad35ccc13ddd068b9d6cba33f323962e39aed5b2/banner.jpg?raw=true)

## 🟣 Twitch Live Streams Scraper

> 🚀 **Pull the top Twitch live streams with viewers, games, and tags in seconds.** No login required.

> 🕒 **Last updated:** 2026-05-27 · **📊 18 fields** per stream · **All live streams** · **By global rank or category**

The Twitch Live Streams Scraper pulls active streams from Twitch sorted by viewer count, either globally or for a specific game/category. It returns one record per live stream with full broadcaster, game, viewer, language, and tag metadata - all from public anonymous endpoints.

Coverage: every currently-live stream on twitch.tv. Optional filters by game slug (e.g. `just-chatting`, `league-of-legends`) and stream language. Up to 1,000,000 records per run on paid plans.

| 🎯 Target Audience | 💡 Primary Use Cases |
|---|---|
| Streaming analytics | Track top streams by game/language |
| Sponsorship teams | Identify high-viewer creators in real time |
| Esports media | Monitor tournament-related live streams |
| Researchers | Study live-streaming engagement |

### 📋 What the Twitch Live Streams Scraper does

- Queries the public Twitch GraphQL endpoint with the public anonymous Client-ID
- Returns one record per live stream with 18 normalized fields
- Optional filters: game slug, language
- Outputs to structured records via Apify dataset
- Auto-limits to 10 items on the free plan; up to 1,000,000 on paid

> 💡 **Why it matters:** Twitch's public API requires OAuth tokens and rate-limits aggressively. This Actor handles auth-free access via the same endpoint twitch.tv itself uses.

### 🎬 Full Demo (_🚧 Coming soon_)

### ⚙️ Input

<table>
<thead><tr><th>Field</th><th>Type</th><th>Description</th></tr></thead>
<tbody>
<tr><td>gameSlug</td><td>string</td><td>Optional category slug, e.g. just-chatting</td></tr>
<tr><td>maxItems</td><td>integer</td><td>Cap on rows (free: 10)</td></tr>
<tr><td>language</td><td>enum</td><td>Optional 2-letter language code</td></tr>
</tbody>
</table>

```structured
{ "maxItems": 100 }
````

```structured
{ "gameSlug": "league-of-legends", "language": "en", "maxItems": 50 }
```

> ⚠️ **Good to Know:** Twitch's public GraphQL surface can change without notice. The Actor uses persisted-query-free fallback queries that match what the web app sends.

### 📊 Output

| Field | Type | Description |
|---|---|---|
| 🖼 imageUrl | string | Stream preview image |
| 📌 title | string | Stream title |
| 🔗 url | string | twitch.tv/{login} |
| 🆔 id | string | Stream ID |
| 🎤 broadcasterLogin | string | Streamer login |
| 🎤 broadcasterDisplayName | string | Streamer display name |
| 🆔 broadcasterId | string | Broadcaster ID |
| 🖼 broadcasterAvatar | string | Profile image URL |
| 👀 viewersCount | number | Current viewers |
| 🎮 game | string | Game / category name |
| 🎮 gameSlug | string | Game slug |
| 🖼 gameBoxArt | string | Box-art URL |
| 🌐 language | string | Broadcast language |
| 🏷 tags | array | Stream tags |
| 📺 streamType | string | live / playlist |
| 🕒 startedAt | string | Stream start ISO timestamp |
| 🕒 scrapedAt | string | ISO timestamp |
| ❌ error | string | null | Error message if extraction failed |

### ✨ Why choose this Actor

- Direct Twitch GraphQL source, no third-party caching
- Real-time data, never stale
- Pay-per-result pricing; only charged for what you keep
- Works with Make, Zapier, n8n, Airbyte, GitHub Actions, Google Sheets

### 📈 How it compares to alternatives

| Approach | Cost | Maintenance | Coverage |
|---|---|---|---|
| Twitch Helix API + OAuth | Free (with token) | OAuth dance, rate limits | Official |
| Manual directory browsing | Free | Tedious | Visual only |
| This actor | Pay per result | None | Live + filters |

### 🚀 How to use

1. [Create a free Apify account w/ $5 credit](https://console.apify.com/sign-up?fpr=vmoqkp)
2. Open the Twitch Live Streams Scraper actor page
3. (Optional) Set `gameSlug` and `language`, set `maxItems`
4. Click **Start** and wait for the run to finish
5. Retrieves the dataset as tabular / spreadsheet / structured / structured

### 💼 Business use cases

#### Sponsorship & marketing

| Need | How this Actor helps |
|---|---|
| Find high-viewer streamers | Sort by `viewersCount` |
| Topic-specific creators | Filter by `gameSlug` |

#### Esports & media

| Need | How this Actor helps |
|---|---|
| Tournament monitoring | Pull live streams of the tournament game |
| Co-streamer detection | Match titles for tournament keywords |

#### Analytics

| Need | How this Actor helps |
|---|---|
| Hourly viewer snapshots | Schedule the Actor every hour |
| Language market share | Group by `language` |

#### Research

| Need | How this Actor helps |
|---|---|
| Live-streaming studies | Bulk pull over time windows |
| Category dynamics | Compare games hour-by-hour |

### 🔌 Automating Twitch Live Streams Scraper

Schedule the Actor every 15 minutes, forward results to Make, Zapier, n8n, Slack, Airbyte, GitHub Actions, or Google Drive. Push alerts when a streamer crosses a viewer threshold.

### 🌟 Beyond business use cases

#### Research

Academic studies of live-streaming behavior need clean snapshots. This Actor delivers them.

#### Personal

Build your own "Twitch radar" showing only languages you speak and games you follow.

#### Non-profit

Track charity streams and fundraiser categories.

#### Experimentation

Build a Discord bot that pings when a favourite streamer goes live in a specific category.

### 🤖 Ask an AI assistant about this scraper

- [ChatGPT](https://chatgpt.com/)
- [Claude](https://claude.ai/)
- [Perplexity](https://www.perplexity.ai/)
- [Microsoft Copilot](https://copilot.microsoft.com/)

### ❓ Frequently Asked Questions

**Q: Do I need a Twitch developer token?** No. The Actor uses the same anonymous Client-ID twitch.tv itself uses.

**Q: How fresh is the data?** Live - every run hits Twitch directly.

**Q: Can I get historical streams?** No - only currently-live streams.

**Q: Does it include subs / chat?** No. This Actor returns the stream metadata that powers the Twitch directory.

**Q: What's the rate limit?** Anonymous GraphQL allows generous traffic; the Actor paces 250ms between pages.

**Q: Can I filter to a single language?** Yes - set `language: "en"` (or es, fr, de, etc.).

**Q: How do I find the game slug?** Open the category page on twitch.tv - slug is in the URL after `/directory/category/`.

**Q: Can I scrape VODs / clips?** Not in this Actor; this is for live streams only.

**Q: Are tags localized?** Tags are returned in their canonical English form.

**Q: Why is `viewersCount` sometimes 0?** Stream may have just gone live or the broadcaster has tags suppressing viewer counts.

### 🔌 Integrate with any app

Slack, Discord, Sheets, Airtable, BigQuery, S3, Snowflake, Zapier, Make, n8n, and 100+ more via Apify webhooks.

### 🔗 Recommended Actors

| Actor | What it does |
|---|---|
| YouTube Trending Scraper | Top trending videos |
| Mastodon Trends Scraper | Fediverse trends |
| Reddit Subreddit Scraper | Subreddit posts |
| GitHub Trending Scraper | Daily trending repos |

> 💡 **Pro Tip:** browse the complete [ParseForge collection](https://apify.com/parseforge).

**🆘 Need Help?** [Open our contact form](https://tally.so/r/BzdKgA)

> **⚠️ Disclaimer:** independent tool, not affiliated with Twitch Interactive Inc. Only publicly available data is collected.

# Actor input Schema

## `gameSlug` (type: `string`):

Optional Twitch category slug (e.g. 'just-chatting', 'league-of-legends'). Leave blank for global top streams.

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

Free users: Limited to 10 items (preview). Paid users: Optional, max 1,000,000

## `language` (type: `string`):

Optional stream language filter (2-letter code, e.g. 'en', 'es').

## Actor input object example

```json
{
  "gameSlug": "",
  "maxItems": 10,
  "language": ""
}
```

# Actor output Schema

## `results` (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 = {
    "maxItems": 10
};

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

# Run the Actor and wait for it to finish
run = client.actor("parseforge/twitch-live-streams-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 '{
  "maxItems": 10
}' |
apify call parseforge/twitch-live-streams-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Twitch Live Streams Scraper | Top Streams, Games, Viewers",
        "description": "Tap into creator and stream records from Twitch Live Streams with channel name, follower count, viewer count, category, language and direct links. Loved by influencer discovery, brand partnerships and audience research. Run on demand or on a recurring schedule and feed every row into your favouri.",
        "version": "0.1",
        "x-build-id": "gdlo0EIcipJSTXCYo"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/parseforge~twitch-live-streams-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-parseforge-twitch-live-streams-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/parseforge~twitch-live-streams-scraper/runs": {
            "post": {
                "operationId": "runs-sync-parseforge-twitch-live-streams-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/parseforge~twitch-live-streams-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-parseforge-twitch-live-streams-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": {
                    "gameSlug": {
                        "title": "Game / Category Slug",
                        "type": "string",
                        "description": "Optional Twitch category slug (e.g. 'just-chatting', 'league-of-legends'). Leave blank for global top streams.",
                        "default": ""
                    },
                    "maxItems": {
                        "title": "Max Items",
                        "minimum": 1,
                        "maximum": 1000000,
                        "type": "integer",
                        "description": "Free users: Limited to 10 items (preview). Paid users: Optional, max 1,000,000"
                    },
                    "language": {
                        "title": "Language",
                        "enum": [
                            "",
                            "en",
                            "es",
                            "fr",
                            "de",
                            "pt",
                            "ru",
                            "ja",
                            "ko",
                            "zh",
                            "it",
                            "pl",
                            "tr",
                            "ar",
                            "th",
                            "nl",
                            "sv",
                            "no",
                            "fi",
                            "cs",
                            "hu",
                            "vi",
                            "id"
                        ],
                        "type": "string",
                        "description": "Optional stream language filter (2-letter code, e.g. 'en', 'es').",
                        "default": ""
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
