Twitch Streams & Channels Scraper
Pricing
from $0.30 / 1,000 results
Twitch Streams & Channels Scraper
Export public Twitch streams, channels, categories, viewer metrics, account details, recent videos, and top clips through the official Twitch API.
Pricing
from $0.30 / 1,000 results
Rating
0.0
(0)
Developer
Hanna Nosova
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
18 hours ago
Last modified
Categories
Share
Export public Twitch streams and channels with follower totals, live viewer metrics, stable IDs, account details, recent VODs, and top clips.
Twitch Streams & Channels Scraper turns channel URLs, category names, and search terms into structured rows for creator discovery, live-stream monitoring, gaming research, dashboards, and API workflows. You do not need to supply a Twitch login, cookies, or API credentials.
Unofficial integration: This Actor is independently maintained and is not affiliated with, sponsored by, or endorsed by Twitch.
What does this Actor do?
- Live stream discovery: Export top streams or streams from categories such as Just Chatting, Minecraft, and League of Legends.
- Channel search and profiles: Find live and offline channels and collect stable Twitch IDs, display names, follower totals, profile images, account dates, and broadcaster type.
- Live metrics: Collect viewer counts, stream titles, game/category IDs, languages, tags, timestamps, thumbnails, and mature-content flags.
- Scalable content enrichment: Attach up to five recent public VODs and five public clips per selected channel using bounded pages rather than several API calls per channel.
- Reliable automation: Cursor pagination, global deduplication, bounded retries, progressive saves, pending-work checkpoints, and a machine-readable run summary.
- Flexible export: Download JSON, CSV, Excel, XML, or use the Apify API, schedules, webhooks, and MCP.
Who is it for?
- Creator and influencer teams discovering Twitch channels for sponsorship research.
- Game studios and esports analysts monitoring live category audiences and streamer activity.
- Content teams comparing recent public VODs and clips across channels.
- Researchers and data journalists collecting repeatable public Twitch snapshots.
- Developers and AI agents integrating Twitch stream and channel data through API or MCP.
Example input
{"categories": ["Just Chatting", "Minecraft"],"searchTerms": ["vtuber"],"includeOfflineChannels": true,"includeVideos": true,"videosPerChannel": 3,"includeClips": true,"clipsPerChannel": 3,"maxEnrichedChannels": 20,"maxItems": 75}
Example output
{"url": "https://www.twitch.tv/examplechannel","channelId": "123456789","channelName": "examplechannel","displayName": "ExampleChannel","broadcasterType": "partner","channelCreatedAt": "2020-01-15T12:00:00Z","isLive": true,"isMature": false,"streamId": "987654321","streamTitle": "Ranked matches with viewers","categoryId": "27471","category": "Minecraft","viewerCount": 1245,"startedAt": "2026-07-20T10:00:00Z","language": "en","tags": ["English", "Survival"],"thumbnailUrl": "https://static-cdn.jtvnw.net/previews-ttv/live_user_examplechannel-440x248.jpg","profileImageUrl": "https://static-cdn.jtvnw.net/jtv_user_pictures/example-profile.png","offlineImageUrl": "https://static-cdn.jtvnw.net/jtv_user_pictures/example-offline.png","followersText": "125,400 followers","followersCount": 125400,"channelDescription": "Public Twitch channel description.","recentVideos": [{"id": "2468013579","title": "Recent broadcast","url": "https://www.twitch.tv/videos/2468013579","viewCount": 4321,"duration": "2h14m8s"}],"topClips": [{"id": "InterestingClipSlug","title": "Top play","url": "https://clips.twitch.tv/InterestingClipSlug","viewCount": 9800,"durationSeconds": 28.4}],"warnings": [],"dataSource": "graphql","sourceType": "category","sourceValue": "Minecraft","scrapedAt": "2026-07-20T11:00:00.000Z"}
Ready-to-run examples
- Export live Twitch channels from Just Chatting
- Find live Minecraft Twitch channels
- Find live and offline Twitch music channels
- Export Twitch channels with recent VODs and clips
Each example is a tested public task with a bounded input, selected output view, and a dedicated landing page. Duplicate one into your Apify account to run it as-is or customize the input.
With no channel, category, or search input, the Actor exports the current top live Twitch streams.
Input settings
| Setting | API key | Description |
|---|---|---|
| Twitch URLs | startUrls | Up to 100 public channel, category, or Twitch search URLs. |
| Categories or games | categories | Up to 100 category names. The legacy games API alias remains accepted. |
| Channel search terms | searchTerms | Up to 100 public Twitch channel searches. |
| Maximum saved channels | maxItems | Global unique-row limit from 1 to 10,000. Default: 20. |
| Include offline channels | includeOfflineChannels | Include offline profiles from direct channel and search inputs. Default: true. |
| Include recent VODs | includeVideos | Attach public archived broadcasts. Default: false. |
| VODs per channel | videosPerChannel | Attach 1–5 recent broadcasts. Default: 3. |
| Include top clips | includeClips | Attach public clips. Default: false. |
| Clips per channel | clipsPerChannel | Attach 1–5 clips. Default: 3. |
| Maximum enriched channels | maxEnrichedChannels | Bound optional VOD/clip requests to 1–100 channels. Default: 20. |
| Allow empty results | allowEmptyResults | Permit a successful zero-row monitoring run. Default: false. |
| Active work deadline | maxRunSeconds | Stop admitting work after 60–270 seconds while preserving cleanup time. Default: 240. |
| Proxy | proxyConfiguration | Optional compatibility setting. Direct public Twitch traffic is the default. |
Output fields
| Field | Description |
|---|---|
url, channelId, channelName, displayName | Canonical URL plus stable and human-readable channel identity. |
broadcasterType, channelCreatedAt | Partner/affiliate type and account creation time when returned. |
isLive, isMature, streamId, streamTitle | Current live status and stream identity. |
categoryId, category, viewerCount, startedAt | Current game/category and live audience metrics. |
language, tags | Public stream or channel classification metadata. |
thumbnailUrl, profileImageUrl, offlineImageUrl | Public stream preview and channel imagery. |
channelDescription | Public channel biography. |
followersText, followersCount | Formatted and numeric public follower totals when Twitch returns them. |
recentVideos | Optional nested VOD metadata: IDs, titles, dates, URLs, views, language, type, and duration. |
topClips | Optional nested clip metadata: IDs, URLs, titles, creators, views, timestamps, duration, and VOD offset. |
warnings, dataSource | Row-specific warnings and whether GraphQL or Helix produced the row. |
sourceType, sourceValue, scrapedAt | Provenance and collection time. |
The default key-value store also contains RUN_SUMMARY and PENDING_WORK. These records report target failures, warnings, processed work, deadline state, and the latest idempotent cursor checkpoint without adding paid dataset rows.
Pricing
The Actor charges one start event per valid run and one item event for each stream or channel row successfully saved. Optional VODs and clips are nested in the paid parent row and do not create additional result events. Failed targets and unsaved enrichment are not charged as items.
| Apify pricing tier | Start | Saved item row | Approximate 1,000 rows |
|---|---|---|---|
| Free | $0.005 | $0.000575 | $0.575 + start |
| Starter / Bronze | $0.005 | $0.000500 | $0.500 + start |
| Scale / Silver | $0.005 | $0.000390 | $0.390 + start |
| Business / Gold | $0.005 | $0.000300 | $0.300 + start |
| Platinum | $0.005 | $0.000200 | $0.200 + start |
| Diamond | $0.005 | $0.000140 | $0.140 + start |
Use as a Twitch data API
Replace YOUR_TOKEN with your Apify API token.
Node.js
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('fetch_cat/twitch-streams-channels-scraper').call({categories: ['Minecraft'],includeVideos: true,includeClips: true,maxItems: 50,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
Python
from apify_client import ApifyClientclient = ApifyClient('YOUR_TOKEN')run = client.actor('fetch_cat/twitch-streams-channels-scraper').call(run_input={'categories': ['Minecraft'],'includeVideos': True,'includeClips': True,'maxItems': 50,})items = client.dataset(run['defaultDatasetId']).list_items().itemsprint(items)
cURL
curl -X POST "https://api.apify.com/v2/acts/fetch_cat~twitch-streams-channels-scraper/runs?token=YOUR_TOKEN" \-H "Content-Type: application/json" \-d '{"categories":["Minecraft"],"includeVideos":true,"includeClips":true,"maxItems":50}'
MCP and AI agents
This Actor works through the official Apify MCP server. A focused server URL exposes only this Actor:
https://mcp.apify.com?tools=fetch_cat/twitch-streams-channels-scraper
Claude CLI setup:
$claude mcp add apify-twitch --transport http "https://mcp.apify.com?tools=fetch_cat/twitch-streams-channels-scraper"
JSON configuration:
{"mcpServers": {"apify-twitch": {"url": "https://mcp.apify.com?tools=fetch_cat/twitch-streams-channels-scraper"}}}
Example prompts:
- “Export 50 live Minecraft Twitch channels and rank them by current viewers.”
- “Find Twitch channels matching speedrun, include recent VODs and clips for the first 20, and summarize content themes.”
- “Check these five Twitch channel URLs every hour and highlight changes in live status, title, category, and viewers.”
Schedule Twitch monitoring
Use an Apify schedule for hourly, daily, or weekly snapshots. Keep the same input and export destination so stable channelId, streamId, categoryId, and scrapedAt values can support change tracking. Enable allowEmptyResults only when a zero-match interval is a valid monitoring outcome.
Tips for better results
- Use exact Twitch category names when possible.
- Start with a small
maxItemsandmaxEnrichedChannelswhen testing VOD or clip enrichment. - Set
includeOfflineChannels: falsefor live-only creator lists. - Multiple inputs share one global result limit and are deduplicated by stable Twitch channel ID.
- Direct public Twitch access is normally the fastest and least expensive route; a residential proxy is not required.
Limits and responsible use
- The Actor uses Twitch's public website GraphQL data interface first and the documented Twitch API for recovery. Twitch does not publish a compatibility or rate-limit contract for the website interface, so query changes or throttling can temporarily cause slower fallback runs.
- It does not collect Twitch passwords, cookies, chat history, subscriptions, messages, or private account data.
- Follower totals are point-in-time public counts. Individual follower identities are not collected.
- Recent VOD and clip arrays may be empty when a channel has no public content or Twitch does not return it.
- Viewer counts and live state are point-in-time values and can change immediately after collection.
- Review Twitch’s Terms of Service, privacy expectations, and applicable laws. Do not use exported data for spam, harassment, or prohibited profiling.
FAQ
Do users need a Twitch account or API key?
No. Run inputs never ask customers for Twitch credentials, login cookies, or access tokens.
Can it export Twitch clips and VODs?
Yes. Enable includeClips or includeVideos. Metadata is nested in each channel row; the Actor does not download media files.
Why can follower counts be null?
The public count is normally returned with the channel profile. It can be null if Twitch omits the profile, changes the public response, or the run recovered through an API response that did not include the total.
Why did my run fail instead of returning an empty dataset?
Empty success often hides invalid categories, removed channels, credential problems, or source changes. The default is therefore to fail with diagnostics. Set allowEmptyResults: true only for a workflow where zero matches are expected.
Can I export to CSV, Excel, JSON, or an API?
Yes. Apify datasets support CSV, Excel, JSON, XML, RSS, HTML table, API access, webhooks, and integrations.
Can I monitor Twitch channels on a schedule?
Yes. Use Apify schedules and stable channel IDs to compare viewer counts, live state, stream titles, and categories over time.
Related Actors
- YouTube Channel Videos Scraper
- YouTube Video Details Scraper
- TikTok Profile Scraper
- Instagram Profile Posts Scraper
- YouTube Search Results Scraper
Support
If a run fails or the output looks wrong, open an issue or report a bug from the Actor page. Include the Apify run ID or run URL, input JSON, expected output, actual output, and one reproducible public URL from Twitch, category, or search term. Do not include Twitch application secrets or access tokens.