Twitch Scraper — Streams, Games, Channels & Followers avatar

Twitch Scraper — Streams, Games, Channels & Followers

Pricing

$10.00 / 1,000 result scrapeds

Go to Apify Store
Twitch Scraper — Streams, Games, Channels & Followers

Twitch Scraper — Streams, Games, Channels & Followers

Scrape Twitch live streams, games, and channel data with no API key required. Get streamer name, viewer count, game category, stream title, language, and follower count. Ideal for esports analytics, creator research, and live audience tracking. PPE pricing — pay only for results.

Pricing

$10.00 / 1,000 result scrapeds

Rating

0.0

(0)

Developer

Web Data Labs

Web Data Labs

Maintained by Community

Actor stats

0

Bookmarked

5

Total users

2

Monthly active users

5 days ago

Last modified

Categories

Share

Twitch Scraper — Streams, Games, Channels, Clips & Videos

Extract live streams, top games by viewer count, full channel profiles, top clips, and past broadcasts (VODs) from Twitch — no OAuth token required. Built on Twitch's public GQL API used by the Twitch web app itself.

Why Use This Twitch Scraper?

Twitch is the dominant live streaming platform with millions of concurrent viewers. Whether you're tracking game trends, discovering influencers, monitoring esports viewership, or researching the streaming market — this scraper gives you structured data without needing Twitch API credentials or developer registration.

No OAuth token needed. No Twitch developer account required. The scraper uses the same public GraphQL API that powers the Twitch website.

Features

  • Live streams — Get currently live streams across all categories or filtered by game
  • Top games — Real-time leaderboard of games ranked by live viewer count
  • Channel profiles — Followers, total views, account-created date, bio, partner/affiliate status, primary game, social links, profile & banner images, and live status
  • Clips — Top clips for a channel or a whole game/category, by time window (24h / 7d / 30d / all-time)
  • Videos / VODs — Past broadcasts, highlights, and uploads for any channel
  • No API credentials — Uses Twitch's public GQL endpoint (no OAuth/Client-ID needed)
  • JSON & CSV export — Download results in JSON, CSV, Excel, XML, or RSS
  • Schedule-friendly — Run hourly/daily to build time-series datasets of Twitch metrics

Input Parameters

ParameterTypeRequiredDefaultDescription
actionstringYesstreamsstreams, top-games, channel, clips, or videos
game_namestringNoGame/category name. Filters streams; selects category clips for clips
usernamestringConditionalTwitch username. Required for channel and videos; for clips provide a username or a game_name
clips_periodstringNoLAST_WEEKTime window for clips: LAST_DAY, LAST_WEEK, LAST_MONTH, ALL_TIME
clips_sortstringNoVIEWS_DESCSort for clips: VIEWS_DESC (most viewed) or TRENDING
video_typestringNoALLFilter for videos: ALL, ARCHIVE, HIGHLIGHT, UPLOAD
video_sortstringNoTIMESort for videos: TIME (newest) or VIEWS
maxItemsintegerNo25Maximum results to return (1–500, always 1 for channel)

Example Input

Get Top Live Streams

{
"action": "streams",
"maxItems": 50
}

Get Streams for a Specific Game

{
"action": "streams",
"game_name": "Valorant",
"maxItems": 30
}

Get Top Games by Viewers

{
"action": "top-games",
"maxItems": 100
}

Get Channel Details

{
"action": "channel",
"username": "shroud"
}

Get Top Clips for a Channel

{
"action": "clips",
"username": "xqc",
"clips_period": "LAST_WEEK",
"clips_sort": "VIEWS_DESC",
"maxItems": 50
}

Get Top Clips for a Game/Category

{
"action": "clips",
"game_name": "Just Chatting",
"clips_period": "LAST_MONTH",
"maxItems": 100
}

Get a Channel's Past Broadcasts (VODs)

{
"action": "videos",
"username": "pokimane",
"video_type": "ARCHIVE",
"video_sort": "TIME",
"maxItems": 50
}

Output Format

Stream Result

{
"login": "tarik",
"display_name": "tarik",
"title": "Ranked grind — Road to Radiant",
"game_id": "516575",
"game_name": "Valorant",
"viewer_count": 28500,
"started_at": "2026-03-30T14:22:00Z",
"language": "en",
"thumbnail_url": "https://static-cdn.jtvnw.net/previews-ttv/live_user_tarik-640x360.jpg",
"tags": ["English", "FPS", "Competitive"]
}

Top Game Result

{
"rank": 1,
"game_id": "509658",
"game_name": "Just Chatting",
"viewer_count": 385000,
"box_art_url": "https://static-cdn.jtvnw.net/ttv-boxart/509658-285x380.jpg"
}

Channel Result (enriched)

{
"user_id": "37402112",
"login": "shroud",
"display_name": "shroud",
"description": "Professional gamer and streamer",
"is_partner": true,
"is_affiliate": false,
"broadcaster_type": "partner",
"follower_count": 10200000,
"primary_game": "Counter-Strike 2",
"social_links": [
{ "name": "twitter", "title": "Twitter", "url": "https://twitter.com/shroud" },
{ "name": "youtube", "title": "YouTube", "url": "https://youtube.com/shroud" }
],
"created_at": "2012-10-08T18:13:01Z",
"profile_image_url": "https://static-cdn.jtvnw.net/jtv_user_pictures/shroud-profile.png",
"banner_image_url": "https://static-cdn.jtvnw.net/jtv_user_pictures/shroud-banner.png",
"primary_color_hex": "0000FF",
"is_live": true,
"stream": {
"title": "CS2 with the boys",
"game_name": "Counter-Strike 2",
"viewer_count": 42000,
"started_at": "2026-05-29T14:22:00Z",
"language": "en"
}
}

Note: social_links is best-effort — Twitch only exposes a channel's social links to some clients, so this array may be empty for certain runs even when the channel has links set.

Clip Result

{
"clip_id": "3325252103",
"slug": "AmericanHappyCurryVoteYea-RsgaDwmUmP2dganr",
"title": "INSANE 1v5 CLUTCH",
"url": "https://www.twitch.tv/xqc/clip/AmericanHappyCurryVoteYea-RsgaDwmUmP2dganr",
"view_count": 120050,
"duration_seconds": 40,
"created_at": "2026-05-22T23:38:22Z",
"creator_login": "someclipper",
"creator_name": "SomeClipper",
"broadcaster_login": "xqc",
"broadcaster_name": "xQc",
"game_id": "509658",
"game_name": "Just Chatting",
"thumbnail_url": "https://clips-media-assets2.twitch.tv/.../thumb-1920x1080.jpg",
"video_id": "2783188044"
}

Video / VOD Result

{
"video_id": "2783188044",
"title": "Ranked grind — full session",
"url": "https://www.twitch.tv/videos/2783188044",
"view_count": 412000,
"duration_seconds": 21600,
"published_at": "2026-05-28T20:00:00Z",
"created_at": "2026-05-28T12:00:00Z",
"type": "ARCHIVE",
"game_id": "509658",
"game_name": "Just Chatting",
"channel_login": "pokimane",
"channel_name": "pokimane",
"thumbnail_url": "https://static-cdn.jtvnw.net/.../thumb-1920x1080.jpg"
}

How to Use with Python

from apify_client import ApifyClient
client = ApifyClient("YOUR_API_TOKEN")
# Get top 50 live streams
run = client.actor("cryptosignals/twitch-scraper").call(run_input={
"action": "streams",
"maxItems": 50,
})
for stream in client.dataset(run["defaultDatasetId"]).iterate_items():
print(f"{stream['display_name']} playing {stream['game_name']}{stream['viewer_count']} viewers")
# Track top games over time (schedule this hourly)
run = client.actor("cryptosignals/twitch-scraper").call(run_input={
"action": "top-games",
"maxItems": 20,
})
for game in client.dataset(run["defaultDatasetId"]).iterate_items():
print(f"{game['name']}{game['viewer_count']:,} viewers")

Use Cases

Streaming Analytics & Market Research

  • Track which games are trending by viewer count over time
  • Monitor viewer distribution across a game's top broadcasters
  • Build time-series databases of Twitch metrics by scheduling hourly runs

Influencer Discovery & Sponsorship

  • Find mid-tier creators (1,000–10,000 viewers) for sponsorship outreach
  • Filter streamers by language to target specific geographic markets
  • Get follower counts and broadcaster type (partner/affiliate) for any channel

Game Industry Intelligence

  • Track whether a game announcement translates to Twitch viewership
  • Identify breakout games before they hit mainstream awareness
  • Compare viewer counts across competing titles during launch windows

Esports & Competitive Gaming

  • Monitor tournament viewership in real-time
  • Track pro player streaming schedules and viewer counts
  • Analyze which esports titles are gaining or losing audience share

Working Around Bot Detection

Twitch's GQL API is relatively permissive since it's the same endpoint the website uses. However, aggressive scraping from a single IP can trigger rate limiting or temporary blocks.

For high-frequency scraping (multiple runs per hour) or large result sets, use residential proxies to distribute requests. ThorData offers residential proxies that make requests appear to come from regular Twitch viewers, reducing the chance of blocks.

Integrations

  • Google Sheets — Export viewer data to spreadsheets for analysis
  • Zapier / Make.com — Get alerts when a specific streamer goes live or a game hits a viewer threshold
  • Slack / Discord — Notify your team about trending streams or games
  • API — Call programmatically from any language using the Apify API

FAQ

Is this legal? This scraper accesses Twitch's public GQL API, the same endpoint used by the Twitch website. It only collects publicly visible data. Review Twitch's Terms of Service for your specific use case.

Do I need a Twitch account? No. The scraper uses Twitch's public unauthenticated GQL endpoint.

How fresh is the data? Data is real-time — viewer counts and live status reflect the moment the scraper runs. Schedule the actor to run periodically for up-to-date monitoring.

Can I filter streams by language? Not directly via input parameters, but you can filter the output dataset by the language field after the run completes.