Twitch Scraper: Channels, Streams, Clips & Games avatar

Twitch Scraper: Channels, Streams, Clips & Games

Pricing

from $1.80 / 1,000 channel scrapeds

Go to Apify Store
Twitch Scraper: Channels, Streams, Clips & Games

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

Automation Lab

Maintained by Community

Actor stats

1

Bookmarked

696

Total users

132

Monthly active users

3 days ago

Last modified

Features

Limited permissions

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)

FieldDescription
loginChannel username
displayNameDisplay name
descriptionChannel bio
profileImageUrlAvatar image URL
bannerImageUrlBanner image URL
urlChannel page URL
followersCountTotal follower count
isPartnerTwitch Partner status
isAffiliateTwitch Affiliate status
languageChannel language code
emailsEmail addresses published in the bio or panels
socialLinksTwitter/X, Instagram, YouTube, TikTok, Discord, and other profile links
isLiveCurrently streaming
currentViewersLive viewer count
streamTitleCurrent stream title
currentGameGame being played
lastBroadcastTitleMost recent broadcast title
lastBroadcastGameMost recent broadcast game
lastBroadcastDateWhen last broadcast started
createdAtAccount creation date
recentVideosRecent VODs with titles, view counts, durations (5 by default, up to 100)
topClipsTop 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

FieldDescription
broadcasterLoginChannel username
broadcasterDisplayNameDisplay name
broadcasterIdChannel ID
broadcasterFollowersFollower count
isPartner / isAffiliateChannel status
titleStream title
viewersCountCurrent viewer count
game / gameIdGame/category name and ID
languageStream language code
tagsStream tags
startedAtStream start time
uptimeSecondsSeconds live when scraped
thumbnailUrlLive preview image
urlChannel URL

Top Games/Categories

FieldDescription
nameGame/category name
viewersCountTotal viewers across all streams
broadcastersCountNumber of live channels
boxArtUrlGame cover image

Clips

FieldDescription
titleClip title
urlClip URL
viewCountView count
durationSecondsClip length
gameGame name
channelLoginSource channel
curatorLoginWho created the clip
thumbnailUrlClip 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 modeRecommended viewHighlights
channels, searchChannelsChannelsProfile, followers, live status, current game, and channel URL
topStreams, gameStreamsStreamsBroadcaster, followers, viewers, game, start time, and channel URL
topGamesGamesCategory viewers, live channels, cover art, and directory URL
clipsClipsChannel, 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.

FreeStarter ($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:

ModeResultsDurationCost (Free tier)
2 channel profiles2~3s~$0.01
30 top live streams30~4s~$0.07
500 streams in one category500~10s~$1.16
100 top games100~5s~$0.24
100 clips from 1 channel100~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

  1. Go to Twitch Scraper on Apify Store
  2. Select a Scraping Mode (Channel Profiles, Top Streams, etc.)
  3. 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
  4. Click Start and wait a few seconds
  5. 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

ParameterTypeDefaultDescription
modestringchannelsScraping mode: channels, searchChannels, topStreams, gameStreams, topGames, clips
channelUsernamesarray[]Twitch usernames or channel URLs. Used in channels and clips modes
searchQuerystring—Search query for searchChannels mode
gameNamestring—Game name, category URL, or slug for gameStreams mode (e.g., "League of Legends")
maxResultsinteger30Maximum results, up to 1,000. Channel Profiles returns one row per username. Top games stop at 100 and clips at 100 per channel
clipPeriodstringLAST_WEEKTime range for clips: LAST_DAY, LAST_WEEK, LAST_MONTH, ALL_TIME
includeVideosbooleantrueInclude recent VODs (Channel Profiles mode)
includeClipsbooleanfalseInclude top clips (Channel Profiles mode)
maxVideosPerChannelinteger5Recent VODs per channel, up to 100
maxClipsPerChannelinteger5Top clips per channel, up to 100
languagesarray—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
minFollowersinteger—Minimum followers. Used in streams and search modes
maxFollowersinteger—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 gameStreams mode, 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 ApifyClient
client = 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().items
print(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 dataset
curl "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 examplechannel for 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.

⌂ 换网址