Twitch Scraper: Channels, Streams, Clips & Games
Pricing
from $1.80 / 1,000 channel scrapeds
Twitch Scraper: Channels, Streams, Clips & Games
Scrape Twitch channels, live streams, top games, clips, and VODs. Get followers, viewers, languages, business emails and social links, up to 1,000 streams or channels per run. No login, API key or browser. Filter by language and followers.
Pricing
from $1.80 / 1,000 channel scrapeds
Rating
0.0
(0)
Developer
Automation Lab
Maintained by CommunityActor stats
1
Bookmarked
696
Total users
132
Monthly active users
3 days ago
Last modified
Categories
Features
Share
Twitch Scraper: channels, streams, clips, games, and VODs
Twitch Scraper extracts data from Twitch channels, live streams, top games, clips, and videos using Twitch's public API. No API key, no login, no browser needed.
Get channel profiles with follower counts, partner status, language, business emails and social links, recent VODs, and top clips. Browse up to 1,000 live streams ranked by viewers, filtered by language and follower range (Streams by Game reaches about 100 streams per language in one category, because that is all Twitch lists). Discover trending games with viewer and broadcaster counts. Extract clips with view counts, durations, and curator info.
The easiest way to try it: open Twitch Scraper on Apify, keep the default input, and click Start.
Built on Twitch's public GraphQL API — pure HTTP, no browser and no proxies, so most runs finish in seconds on 256 MB memory.
Who is it for?
Influencer marketing teams
- Find streamers by game category, language, follower range, and partner status
- Pull business emails and social links from channel bios and panels
- Track which channels are live and what games they play
- Build outreach lists with profile data and social metrics
Esports and gaming analysts
- Monitor live viewership across games and categories
- Track trending games by viewer and broadcaster count
- Analyze clip performance and viral content
Content creators and streamers
- Research competitors in your game category
- Track top clips from channels you follow
- Monitor viewership trends for scheduling decisions
Data journalists and researchers
- Study Twitch viewership patterns over time
- Analyze the gaming industry landscape
- Track streamer growth and engagement metrics
Why use Twitch Scraper?
- No API key or login required — uses Twitch's public endpoint
- Pure HTTP, no browser — runs on 256 MB memory, finishes in seconds
- 6 scraping modes — channels, search, top streams, game streams, top games, clips
- More than the first 30 results — up to 1,000 live streams or channels per run, 100 clips per channel. With a language filter, Streams by Game reaches about 100 streams per language
- Rich channel data — followers, partner status, language, emails, social links, last broadcast, live status, VODs, clips
- Streamer discovery filters — language and minimum or maximum followers
- Pay only for results — a bad username or an empty search costs nothing
- Export anywhere — JSON, CSV, Excel, or push to Google Sheets, Slack, and 5,000+ apps via Zapier/Make
- Schedule and automate — run on a schedule via Apify's built-in scheduler
- Full API access — call from Node.js, Python, cURL, or any HTTP client
What data can you extract?
Channel Profiles (up to 1,000 channels per run)
| Field | Description |
|---|---|
login | Channel username |
displayName | Display name |
description | Channel bio |
profileImageUrl | Avatar image URL |
bannerImageUrl | Banner image URL |
url | Channel page URL |
followersCount | Total follower count |
isPartner | Twitch Partner status |
isAffiliate | Twitch Affiliate status |
language | Channel language code |
emails | Email addresses published in the bio or panels |
socialLinks | Twitter/X, Instagram, YouTube, TikTok, Discord, and other profile links |
isLive | Currently streaming |
currentViewers | Live viewer count |
streamTitle | Current stream title |
currentGame | Game being played |
lastBroadcastTitle | Most recent broadcast title |
lastBroadcastGame | Most recent broadcast game |
lastBroadcastDate | When last broadcast started |
createdAt | Account creation date |
recentVideos | Recent VODs with titles, view counts, durations (5 by default, up to 100) |
topClips | Top clips with view counts, URLs, curators (5 by default, up to 100) |
Search Channels returns the same profile fields except emails, socialLinks, banner, last broadcast, VODs and clips.
Live Streams and Game Streams
| Field | Description |
|---|---|
broadcasterLogin | Channel username |
broadcasterDisplayName | Display name |
broadcasterId | Channel ID |
broadcasterFollowers | Follower count |
isPartner / isAffiliate | Channel status |
title | Stream title |
viewersCount | Current viewer count |
game / gameId | Game/category name and ID |
language | Stream language code |
tags | Stream tags |
startedAt | Stream start time |
uptimeSeconds | Seconds live when scraped |
thumbnailUrl | Live preview image |
url | Channel URL |
Top Games/Categories
| Field | Description |
|---|---|
name | Game/category name |
viewersCount | Total viewers across all streams |
broadcastersCount | Number of live channels |
boxArtUrl | Game cover image |
Clips
| Field | Description |
|---|---|
title | Clip title |
url | Clip URL |
viewCount | View count |
durationSeconds | Clip length |
game | Game name |
channelLogin | Source channel |
curatorLogin | Who created the clip |
thumbnailUrl | Clip thumbnail |
Choose the result view for your mode
The run's Output tab links to focused dataset views, so each mode opens with its most useful columns visible:
| Scraping mode | Recommended view | Highlights |
|---|---|---|
channels, searchChannels | Channels | Profile, followers, live status, current game, and channel URL |
topStreams, gameStreams | Streams | Broadcaster, followers, viewers, game, start time, and channel URL |
topGames | Games | Category viewers, live channels, cover art, and directory URL |
clips | Clips | Channel, title, views, duration, game, curator, thumbnail, and clip URL |
The Overview link remains available as a backward-compatible channel view. All views read the same dataset and do not alter the JSON records or exports.
How much does it cost to scrape Twitch?
This Actor uses pay-per-event pricing — you pay only for what you scrape. No monthly subscription. All platform costs are included.
| Free | Starter ($29/mo) | Scale ($199/mo) | Business ($999/mo) | |
|---|---|---|---|---|
| Per channel | $0.00345 | $0.003 | $0.00234 | $0.0018 |
| Per stream/game/clip | $0.0023 | $0.002 | $0.00156 | $0.0012 |
| 1,000 channels | $3.45 | $3.00 | $2.34 | $1.80 |
Each run also has a one-time start fee of $0.005, charged only when the run delivers at least one result.
From 2026-11-23 the per-result prices will be: channels $0.003 (Free and Starter), $0.0027 (Scale), $0.0024 (Business and above); streams, games and clips $0.002, $0.0018, and $0.0016.
Real-world cost examples:
| Mode | Results | Duration | Cost (Free tier) |
|---|---|---|---|
| 2 channel profiles | 2 | ~3s | ~$0.01 |
| 30 top live streams | 30 | ~4s | ~$0.07 |
| 500 streams in one category | 500 | ~10s | ~$1.16 |
| 100 top games | 100 | ~5s | ~$0.24 |
| 100 clips from 1 channel | 100 | ~5s | ~$0.24 |
On Apify's free plan ($5 credits), you can scrape approximately 1,400 channels or 2,100 streams.
How to scrape Twitch data
- Go to Twitch Scraper on Apify Store
- Select a Scraping Mode (Channel Profiles, Top Streams, etc.)
- Enter the required input:
- Channel Profiles / Clips: enter Twitch usernames or channel URLs
- Search Channels: enter a search query
- Streams by Game: enter the game name, as shown on Twitch
- Top Streams / Top Games: no input needed
- Click Start and wait a few seconds
- Download results as JSON, CSV, or Excel
Example: Scrape 3 channel profiles
{"mode": "channels","channelUsernames": ["shroud", "pokimane", "xqc"],"includeVideos": true,"includeClips": true}
Example: Get top 30 live streams
{"mode": "topStreams","maxResults": 30}
Example: Find German and French streamers with 1,000 to 50,000 followers
{"mode": "gameStreams","gameName": "Just Chatting","maxResults": 100,"languages": ["DE", "FR"],"minFollowers": 1000,"maxFollowers": 50000}
Example: Get clips from a channel
{"mode": "clips","channelUsernames": ["shroud"],"maxResults": 30,"clipPeriod": "LAST_MONTH"}
Input parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
mode | string | channels | Scraping mode: channels, searchChannels, topStreams, gameStreams, topGames, clips |
channelUsernames | array | [] | Twitch usernames or channel URLs. Used in channels and clips modes |
searchQuery | string | — | Search query for searchChannels mode |
gameName | string | — | Game name, category URL, or slug for gameStreams mode (e.g., "League of Legends") |
maxResults | integer | 30 | Maximum results, up to 1,000. Channel Profiles returns one row per username. Top games stop at 100 and clips at 100 per channel |
clipPeriod | string | LAST_WEEK | Time range for clips: LAST_DAY, LAST_WEEK, LAST_MONTH, ALL_TIME |
includeVideos | boolean | true | Include recent VODs (Channel Profiles mode) |
includeClips | boolean | false | Include top clips (Channel Profiles mode) |
maxVideosPerChannel | integer | 5 | Recent VODs per channel, up to 100 |
maxClipsPerChannel | integer | 5 | Top clips per channel, up to 100 |
languages | array | — | Language codes to keep, such as EN, DE. Used in streams and search modes. Streams by Game returns about 100 streams per language at most |
minFollowers | integer | — | Minimum followers. Used in streams and search modes |
maxFollowers | integer | — | Maximum followers. Used in streams and search modes |
Output example
Channel profile:
{"id": "37402112","login": "shroud","displayName": "shroud","description": "I'm back baby","profileImageUrl": "https://static-cdn.jtvnw.net/jtv_user_pictures/...","url": "https://www.twitch.tv/shroud","followersCount": 11313275,"isPartner": true,"isAffiliate": false,"language": "EN","emails": [],"socialLinks": {"youtube": "https://www.youtube.com/shroud","twitter": "https://twitter.com/shroud","instagram": "https://www.instagram.com/shroud/"},"isLive": false,"currentViewers": null,"lastBroadcastTitle": "Ready or Not with friends","lastBroadcastGame": "Ready or Not","createdAt": "2012-11-03T15:50:32Z","recentVideos": [{"id": "2724725765","title": "Marathon stream","viewCount": 260226,"durationSeconds": 27466,"game": "Marathon"}]}
Tips for best results
- Start small — try 2-3 channels first, then scale up
- Channel Profiles mode has no limit — you can scrape hundreds of channels in a single run
- Ask for what you need — streams and channel search go up to 1,000 results, and you pay only for rows you receive
- Use the game name shown on Twitch — for
gameStreamsmode, use "League of Legends", not "LoL"; capitalization doesn't matter - Check the run status — it tells you how many results you got against your limit, and why it stopped
- Schedule regular runs — track viewership trends by running the scraper on a schedule
- Combine modes — run multiple times with different modes to build comprehensive datasets
- VODs and clips are optional — disable them in Channel Profiles mode if you only need basic stats
Integrations
- Twitch Scraper -> Google Sheets — export live stream rankings to a spreadsheet, updated hourly
- Twitch Scraper -> Slack/Discord — get alerts when specific streamers go live or hit viewer milestones
- Twitch Scraper -> Make/Zapier — trigger workflows when new top clips appear for tracked channels
- Scheduled runs — monitor game category trends daily and build historical viewership data
- Webhooks — process scraped channel data in real-time for influencer databases
API usage
Node.js
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });const run = await client.actor('automation-lab/twitch-scraper').call({mode: 'channels',channelUsernames: ['shroud', 'pokimane'],includeVideos: true,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
Python
from apify_client import ApifyClientclient = ApifyClient('YOUR_API_TOKEN')run = client.actor('automation-lab/twitch-scraper').call(run_input={'mode': 'channels','channelUsernames': ['shroud', 'pokimane'],'includeVideos': True,})items = client.dataset(run['defaultDatasetId']).list_items().itemsprint(items)
cURL
curl "https://api.apify.com/v2/acts/automation-lab~twitch-scraper/run-sync-get-dataset-items" \-H "Authorization: Bearer YOUR_API_TOKEN" \-H "Content-Type: application/json" \-d '{"mode": "topStreams","maxResults": 30}'
🤖 Agent and LLM workflow (Apify API / MCP-ready)
Use this actor as an agent-ready source for gaming, esports, influencer, and live-stream intelligence. It does not expose a native Twitch MCP endpoint; AI assistants can run it through Apify's API, Apify Integrations, or the Apify MCP server and then analyze the dataset results.
Example agent task: "Get the top 30 Twitch streams right now, group them by game, and identify five high-viewer channels that could fit an influencer campaign."
Call from an agent via API
curl "https://api.apify.com/v2/acts/automation-lab~twitch-scraper/runs?token=YOUR_APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"mode":"topStreams","maxResults":30}'# After the run finishes, let the agent fetch and summarize the datasetcurl "https://api.apify.com/v2/datasets/DATASET_ID/items?format=json" \-H "Authorization: Bearer YOUR_APIFY_TOKEN"
Use through Apify MCP server
If your AI client supports MCP, connect the Apify MCP server and allow only this actor:
$claude mcp add --transport http apify "https://mcp.apify.com?tools=automation-lab/twitch-scraper"
Configure Claude Desktop, Cursor, or VS Code
Claude Desktop, Cursor, and VS Code can use the same actor-scoped MCP endpoint. Add this JSON to your client's MCP server configuration and set APIFY_TOKEN in the client environment:
{"mcpServers": {"twitch-scraper": {"url": "https://mcp.apify.com?tools=automation-lab/twitch-scraper"}}}
Example prompts
- "Run Twitch Scraper for the top 30 streams and rank the results by
viewersCount." - "Get clips from
examplechannelfor the last week and summarize views by game." - "Find channels matching an esports keyword and return their follower counts and live status."
Ask your assistant to run automation-lab/twitch-scraper with channel, stream, game, or clip inputs, wait for the Apify run to finish, and work with fields such as viewer counts, games, stream titles, followers, VODs, and clip metrics.
Learn more in the Apify MCP documentation.
Legality and responsible use
Twitch Scraper is an independent tool and is not affiliated with, endorsed by, or sponsored by Twitch.
Twitch Scraper accesses only publicly available data through Twitch's public API endpoints — the same data any visitor sees on twitch.tv. The scraper does not bypass any authentication, does not access private data, and does not violate CAPTCHA protections.
Web scraping of publicly available data is generally legal in the US and EU. However, you should always:
- Comply with applicable data protection laws (GDPR, CCPA)
- Use scraped data responsibly and ethically
- Avoid collecting personal data without a legitimate purpose
- Review Twitch's Terms of Service for your specific use case
Diagnostics
When a run fails, it sends sanitized diagnostic input, the exception and Actor, build and run IDs to our private GlitchTip service so we can repair the fault. Secret fields and URL query strings are removed, and reports are kept for 30 days.
FAQ
How fast is Twitch Scraper?
Very fast. Channel profiles complete in under 1 second each. Browse modes (top streams, games, clips) return results in 3-5 seconds total. A run with 30 results typically costs under $0.08.
How much does it cost to scrape 1,000 Twitch channels?
On the Free tier: approximately $3.45 (start fee + $0.00345 per channel). On the Scale plan ($199/mo): approximately $2.34.
How many results can I get per run?
Channel Profiles: as many usernames as you send. Search Channels: up to about 1,000 channels, which is where Twitch's search ends. Top Live Streams and Streams by Game: up to 1,000, ranked by viewers. With a language filter, Streams by Game stops at about 100 streams per language, because Twitch lists no more than that for one language in one category; the run's status tells you when it reached that limit, and follower filters apply to those listed streams. Top Games: 100. Clips: 100 per channel. Twitch doesn't return a full stream list in one query, so beyond the first page the actor combines pages by language and category; for 31 or more top streams the ranking is very close to, but may not exactly match, Twitch's own order.
What if a channel username is wrong or doesn't exist?
The run continues with the remaining usernames, and its final status names the ones it could not find. You aren't charged for missing channels. If no input is usable, the run stops with a clear message and nothing is charged.
Are the emails and social links verified?
No. They are exactly what the streamer published in their channel bio and panels. Many channels publish no email. Only use them in line with the laws that apply to you, and honor opt-out requests.
Can I get historical data or past streams?
The scraper returns up to 100 of the channel's most recent VODs (when includeVideos is enabled; set maxVideosPerChannel) and clips within a selected time range. For historical viewership data, schedule regular runs and aggregate the data over time.
Related actors
- YouTube Scraper — extract videos, channels, playlists, and comments
- YouTube Transcript Scraper — download video transcripts and captions
- TikTok Scraper — scrape TikTok profiles, videos, and hashtags
- Twitter/X Scraper — extract tweets, profiles, and followers
- Instagram Scraper — scrape posts, reels, stories, and profiles
- Reddit Scraper — extract posts and comments from subreddits
- LinkedIn Jobs Scraper — scrape job listings by keyword and location