Twitch Scraper — Streams, Channels & Directory avatar

Twitch Scraper — Streams, Channels & Directory

Pricing

from $0.98 / 1,000 overview record extracteds

Go to Apify Store
Twitch Scraper — Streams, Channels & Directory

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Ü

SIÁN OÜ

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Share

Twitch Scraper — Live Streams, Channels & Directory Data 🟣

SIÁN Agency Store Bilibili Scraper Douyin Scraper Instagram Transcript

🎉 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

FieldTypeRequiredDescription
scrapeModestringNooverview (many rows) or detail (full profiles)
sourceTypestringNoOverview source: directory or search
game / gamesstring / arrayNoCategory/game for directory overview (single or bulk)
directoryUrlstringNoPaste a Twitch directory URL instead of a category
searchTerm / searchTermsstring / arrayNoKeyword(s) for channel search overview
searchUrlstringNoPaste a Twitch search URL instead of a term
channel / channelsstring / arrayNoChannel login(s) or URL(s) for detail mode
includeVideosbooleanNoAlso pull archive videos in detail mode
sortstringNoDirectory sort: viewers high→low, low→high, or recent
languagesarrayNoRestrict directory streams to broadcast languages
maxResultsintegerNoCap records per run (FREE capped at 25)
maxPagesintegerNoDirectory 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:

FieldTypeDescription
loginstringChannel login handle
display_namestringChannel display name
urlstringPublic channel URL
is_livebooleanWhether currently broadcasting
viewersnumberCurrent concurrent viewers
gamestringCurrent category / game
stream_titlestringCurrent live stream title
followersnumberTotal follower count
is_partnerbooleanTwitch Partner status
created_atstringAccount creation date
tagsarrayStream freeform tags
clipsarrayRecent clips (detail mode)
videosarrayArchive videos (detail mode, optional)
preview_image_urlstringLive stream thumbnail
coveragenumberPer-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 ApifyClient
client = 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)

  1. Trigger: Schedule or webhook
  2. HTTP Request: Call the actor API
  3. Process: Handle JSON results
  4. 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
  • 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.

🔗 View current pricing


❓ 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, not just 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 @ — both xqc and @xqc work, 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

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

Telegram Support

Join our active support community


Built by SIÁN Agency | More Tools