Twitch Scraper — Streams, Channels & Directory
Pricing
from $0.98 / 1,000 overview record extracteds
Twitch Scraper — Streams, Channels & Directory
Scrape Twitch (twitch.tv) live streams, channels & directories into clean structured data — viewers, followers, categories, clips, archive videos. Browse a category, search channels, or pull full channel profiles. JSON/CSV, no login or API key.
Pricing
from $0.98 / 1,000 overview record extracteds
Rating
0.0
(0)
Developer
SIÁN OÜ
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Twitch Scraper — Live Streams, Channels & Directory Data 🟣
🎉 Pull thousands of live streams, channels and clips into clean JSON — no login, no API key
Built for esports analysts, streamer-discovery teams, sponsorship researchers and growth marketers
📋 Overview
Need structured Twitch data without wrangling an OAuth app or a browser farm? This scraper turns Twitch's public catalog into clean datasets — live streams by category, channel profiles, keyword search results, clips and archive videos — one operation per run, one tidy dataset out.
Why teams choose this scraper:
- ✅ Three data sources in one tool: browse a category directory, search channels by keyword, or pull full channel profiles
- ⚡ Fast and direct: high-volume live-stream rows in seconds — no account, no captcha, no API key
- 🎯 Rich records: viewers, followers, partner/affiliate status, account age, current stream, last broadcast, tags, clips and archive videos
- 💰 Pay-per-result: only pay for records you actually receive — generous FREE tier to test first
- 💎 Clean, typed output: every field documented, ready for JSON/CSV/Excel export
- ✨ NEW: optional archive-video pulls and a per-row coverage score so you can gauge data quality at a glance
✨ Features
- 📺 Category Directory: pull every live stream for a game/category (e.g.
VALORANT,Just Chatting), sorted by viewers - 🔎 Channel Search: find channels by keyword with follower counts and live status
- 👤 Full Channel Profiles: follower count, account creation date, partner/affiliate flags, bio, avatar and banner
- 🔴 Live Stream Data: current viewers, stream title, category, tags and preview thumbnail
- 🎞️ Recent Clips: top clips per channel with view counts, duration and game
- 🎬 Archive Videos: optional past-broadcast pulls with view counts and length
- 🌐 Language Filters: restrict directory streams to specific broadcast languages
- 📊 Coverage Score: a 0–1 quality gauge on every row
- 📄 Run Report: an HTML summary of every run, saved to your key-value store
🎬 Quick Start
Pick a mode, give it a category, keyword or channel, and run. Results stream into your dataset and export to JSON, CSV or Excel. No setup, no credentials.
curl -X POST https://api.apify.com/v2/acts/sian.agency~twitch-scraper/runs?token=YOUR_TOKEN \-H 'Content-Type: application/json' \-d '{"scrapeMode": "overview", "sourceType": "directory", "game": "VALORANT"}'
🚀 Getting Started (3 Simple Steps)
Step 1: Choose a mode
Overview for many rows (category directory or channel search), or Detail for full profiles of specific channels.
Step 2: Provide your target
A category name, a search keyword, or one or more channel logins / URLs.
Step 3: Run and export
Start the actor and download your dataset as JSON, CSV or Excel.
That's it! In under a minute, you'll have:
- A clean dataset of streams or channels
- Engagement metrics (viewers, followers) ready to analyze
- An HTML run report with success/error counts
📥 Input Configuration
| Field | Type | Required | Description |
|---|---|---|---|
| scrapeMode | string | No | overview (many rows) or detail (full profiles) |
| sourceType | string | No | Overview source: directory or search |
| game / games | string / array | No | Category/game for directory overview (single or bulk) |
| directoryUrl | string | No | Paste a Twitch directory URL instead of a category |
| searchTerm / searchTerms | string / array | No | Keyword(s) for channel search overview |
| searchUrl | string | No | Paste a Twitch search URL instead of a term |
| channel / channels | string / array | No | Channel login(s) or URL(s) for detail mode |
| includeVideos | boolean | No | Also pull archive videos in detail mode |
| sort | string | No | Directory sort: viewers high→low, low→high, or recent |
| languages | array | No | Restrict directory streams to broadcast languages |
| maxResults | integer | No | Cap records per run (FREE capped at 25) |
| maxPages | integer | No | Directory pages to fetch per category |
Example — directory:
{"scrapeMode": "overview","sourceType": "directory","game": "Just Chatting","sort": "VIEWER_COUNT","maxResults": 100}
Example — channel search:
{"scrapeMode": "overview","sourceType": "search","searchTerm": "speedrun"}
Example — full channel detail:
{"scrapeMode": "detail","channels": ["xqc", "https://www.twitch.tv/pokimane"],"includeVideos": true}
📤 Output
Results are saved to the Apify dataset with 35+ fields including:
| Field | Type | Description |
|---|---|---|
| login | string | Channel login handle |
| display_name | string | Channel display name |
| url | string | Public channel URL |
| is_live | boolean | Whether currently broadcasting |
| viewers | number | Current concurrent viewers |
| game | string | Current category / game |
| stream_title | string | Current live stream title |
| followers | number | Total follower count |
| is_partner | boolean | Twitch Partner status |
| created_at | string | Account creation date |
| tags | array | Stream freeform tags |
| clips | array | Recent clips (detail mode) |
| videos | array | Archive videos (detail mode, optional) |
| preview_image_url | string | Live stream thumbnail |
| coverage | number | Per-row data-quality score (0–1) |
Example:
{"id": "71092938","url": "https://www.twitch.tv/xqc","source": "detail","login": "xqc","display_name": "xQc","followers": 12502569,"is_partner": true,"is_live": false,"last_broadcast_game": "Just Chatting","clip_count": 20,"coverage": 1,"status": "success"}
💼 Use Cases & Examples
1. Esports & Tournament Analytics
Analysts tracking which streams and players draw the biggest audiences during an event.
Input: A game category (e.g. VALORANT) in directory mode
Output: Live streams sorted by viewers, with titles, tags and categories
Use: Rank concurrent viewership across competing broadcasts in real time.
2. Streamer & Influencer Discovery
Talent and sponsorship teams building shortlists of channels in a niche.
Input: A keyword in search mode, or a list of candidate logins in detail mode Output: Follower counts, partner status, live status and recent clips Use: Find and qualify creators by audience size and engagement.
3. Sponsorship & Brand-Fit Research
Marketers vetting channels before a partnership.
Input: Channel logins in detail mode with includeVideos
Output: Account age, follower count, recent broadcast history and archive videos
Use: Assess consistency, reach and content fit before reaching out.
4. Category & Trend Monitoring
Researchers tracking which games and categories are surging.
Input: Multiple categories in bulk directory mode Output: Per-category live-stream counts and viewer totals Use: Spot rising titles and shifting audience attention over time.
5. Audience & Language Analysis
Growth teams segmenting streams by broadcast language.
Input: A category with languages filters
Output: Streams restricted to your target languages, with tags
Use: Size and compare regional audiences for a game.
6. Content & Clip Curation
Editors and social teams sourcing the best recent clips.
Input: Channel logins in detail mode Output: Top recent clips with view counts and durations Use: Build highlight reels and social posts from proven clips.
🔗 Integration Examples
JavaScript/Node.js
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_TOKEN' });const run = await client.actor('sian.agency/twitch-scraper').call({scrapeMode: 'overview',sourceType: 'directory',game: 'VALORANT',});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items[0]);
Python
from apify_client import ApifyClientclient = ApifyClient('YOUR_TOKEN')run = client.actor('sian.agency/twitch-scraper').call(run_input={'scrapeMode': 'detail', 'channels': ['xqc', 'pokimane']})for item in client.dataset(run['defaultDatasetId']).iterate_items():print(item)
cURL
curl -X POST 'https://api.apify.com/v2/acts/sian.agency~twitch-scraper/runs?token=YOUR_TOKEN' \-H 'Content-Type: application/json' \-d '{"scrapeMode": "overview", "sourceType": "search", "searchTerm": "chess"}'
Automation Workflows (N8N / Zapier / Make)
- Trigger: Schedule or webhook
- HTTP Request: Call the actor API
- Process: Handle JSON results
- Action: Save, notify, or transform
📊 Performance & Pricing
FREE Tier (Try It Now)
- 25 records per run — full feature access, same quality
- No credit card required
- Perfect for testing and small projects
PAID Tier (Production Ready)
- Unlimited records per run
- Faster processing, no delays
- Pay-per-result: only charged for successful records
💰 Transparent pay-per-result pricing — you're never charged for invalid input or failed fetches.
❓ Frequently Asked Questions
Q: How many records can I extract? A: FREE tier: 25 per run. PAID tier: unlimited.
Q: Do I need a Twitch account or developer key? A: No — the scraper reads only publicly available data. No login, no API key.
Q: What output formats are available? A: JSON, CSV and Excel — export directly from the Apify dataset.
Q: Can I scrape a specific channel's full profile? A: Yes — use Detail mode with one or more channel logins or URLs.
Q: Can I get archive videos and clips? A: Clips come with every Detail run; enable Also Pull Archive Videos for past broadcasts.
Q: Is this legal? A: Yes — we only extract publicly available data. See the legal section below.
Q: How fresh is the data? A: Every run fetches live data at request time — viewers and live status are current.
🐛 Troubleshooting
No results in directory mode
- Use the exact category name as shown on Twitch (e.g.
Just Chatting, notjust chatting room) - Try the directory URL field instead of a bare category name
A channel returns "not found" in detail mode
- Use the channel login (the name in
twitch.tv/<login>), not the display name - Remove a leading
@— bothxqcand@xqcwork, but check the spelling
Fewer rows than expected
- FREE runs are capped at 25 records — upgrade for unlimited
- Deep directory pagination may be limited by Twitch; the run stops cleanly when reached
⚖️ Is it legal to scrape data?
Our actors are ethical and do not extract any private user data, such as email addresses, gender, or location. They only extract what the user has chosen to share publicly. We therefore believe that our actors, when used for ethical purposes by Apify users, are safe.
However, you should be aware that your results could contain personal data. Personal data is protected by the GDPR in the European Union and by other regulations around the world. You should not scrape personal data unless you have a legitimate reason to do so. If you're unsure whether your reason is legitimate, consult your lawyers.
You can also read Apify's blog post on the legality of web scraping.
Disclaimer: This is an independent tool and is not affiliated with, endorsed by, or sponsored by Twitch Interactive, Inc. "Twitch" is a trademark of its respective owner. This actor accesses only publicly available information.
🤝 Support
Join our active support community
- For issues or questions, open an issue in the actor's repository
- Check the SIÁN Agency Store for more automation tools
- 📧 apify@sian-agency.online
Built by SIÁN Agency | More Tools