Twitch Stream & Profile Stats
Pricing
from $1.00 / 1,000 stream or channel records
Twitch Stream & Profile Stats
Scrape live Twitch stream statistics including viewer counts, game categories, follower counts, and streamer profiles. No API keys or Twitch developer account required.
Pricing
from $1.00 / 1,000 stream or channel records
Rating
0.0
(0)
Developer
Paweł
Maintained by CommunityActor stats
0
Bookmarked
6
Total users
0
Monthly active users
19 days ago
Last modified
Categories
Share
Twitch Stream Stats
Scrape live Twitch stream statistics including viewer counts, game categories, follower counts, and streamer profiles. No API keys or Twitch developer account required.
Features
- Zero Configuration - No API keys, tokens, or Twitch developer registration needed
- 3 Scraping Modes - Check specific channels, browse by game/category, or fetch top streams globally
- Rich Data - 18 fields per stream: viewer count, follower count, title, game, language, profile image, bio, thumbnail, and more
- Language Filter - Filter streams by language code (en, pl, de, es, etc.)
- Batch Queries - Efficiently checks up to 35 channels per API request
- Lightweight - Pure HTTP API calls, no browser needed, runs on the smallest Apify actor image
- Cost-Effective - Fractions of a cent per run
Input Configuration
| Parameter | Type | Description | Required | Default |
|---|---|---|---|---|
channels | Array of Strings | Twitch channel login names to check (e.g., xqc, shroud) | No | [] |
gameNames | Array of Strings | Game/category names or numeric category ids (e.g., Fortnite, 33214) | No | [] |
maxItems | Integer | Maximum number of records in total (0 = unlimited) | No | 50 |
language | String | Filter by language - ISO 639-1 code (e.g., en, pl, de) | No | - |
fanOutLanguages | Array of Strings | Language set used to return more than ~30 records (see below) | No | [] |
How maxItems Works
maxItems is a cap on the total number of records a run returns, not a per-category limit:
- Game/category and top-streams modes share one budget. Ask for 3 games with
maxItems: 30and you get 30 records in total, and the scraper stops fetching as soon as it has them. - Channels you list explicitly are never dropped. If you list 200 channels with
maxItems: 50, all 200 are returned and the run logs a warning that the limit was raised to fit them. When the channel list is longer thanmaxItems, no budget is left for game/top-stream results. maxItems: 0means unlimited. There is no upper bound on how many records such a run produces - the run logs a warning when you use it. In practice the limits below apply.
How Large Results Are Built
Twitch serves about 30 streams per query and refuses to page deeper. To return more than that, the scraper repeats the same query once per language and merges the results, removing duplicates:
- Fan-out only runs when
maxItemsneeds more than one query can deliver. Small runs issue exactly one query, as before. - If you set
language, no fan-out happens. You asked for one language, so that is the only language queried. - Records are deduplicated across languages, so no stream is ever returned twice.
- Querying stops the moment
maxItemsis reached. - Default language set (override with
fanOutLanguages):EN, ES, PT, DE, FR, RU, JA, KO, ZH, IT, PL, TR, AR, NL, UK, CS, HU, TH, SV, RO, NO, DA, FI, EL, ID, VI.
Practical ceiling: roughly 500 records for a single busy category and ~750 for top-streams mode. Niche categories return fewer simply because fewer people stream them. Requesting more than that returns everything available, not an error.
How It Works
The scraper operates in three modes depending on the input:
1. Channels Mode (channels provided)
- Checks if specific channels are currently live
- Returns full stream data for each live channel
- Offline channels are returned too, as results -
isLiveisfalse, the live fields (title, viewers, game, thumbnail) arenull, and the profile data (display name, bio, follower count, account creation date, profile image) is filled in - Every channel you list produces exactly one record, live or not
- Uses efficient batch queries (up to 35 channels per request)
2. Game/Category Mode (gameNames provided)
- Fetches live streams for specific game categories
- Game names must match the exact Twitch category name; numeric category ids work as well
- Every returned record belongs to the requested category
- Supports multiple game categories in a single run
- Shares the
maxItemsbudget across all categories - Language filtering is done by Twitch itself, so
language: "pl"returns a full page of Polish streams
3. Top Streams Mode (no filters)
- When neither
channelsnorgameNamesare provided - Fetches the most popular live streams globally
- Sorted by viewer count (highest first)
Example Input - Check Specific Channels
{"channels": ["xqc", "shroud", "pokimane", "summit1g", "hasanabi"]}
Example Input - Browse Game Category
{"gameNames": ["Just Chatting", "Fortnite"],"maxItems": 30,"language": "en"}
Example Input - Top Streams
{"maxItems": 20}
Example Input - Polish Streams in a Category
{"gameNames": ["League of Legends"],"language": "pl","maxItems": 10}
Output Format
Each stream record contains 18 fields:
{"streamId": "316323504615","userName": "ESLCS","userLogin": "eslcs","userId": "31239503","title": "LIVE: HEROIC vs NRG - ESL Pro League Season 23 - Stage 1","gameName": "Counter-Strike","gameId": "32399","viewerCount": 9947,"startedAt": "2026-03-01T09:51:37Z","language": "EN","thumbnailUrl": "https://static-cdn.jtvnw.net/previews-ttv/live_user_eslcs-1280x720.jpg","isMature": false,"type": "live","profileImageUrl": "https://static-cdn.jtvnw.net/jtv_user_pictures/c1ecbcd5-b8b6-4e0c-9d5f-e01d610aa97d-profile_image-300x300.png","description": "Home of everything Counter-Strike","followerCount": 6631088,"accountCreatedAt": "2012-06-11T13:36:21.618338Z","scrapedAt": "2026-03-01T12:02:26.634Z"}
Output Fields Reference
| Field | Type | Description |
|---|---|---|
streamId | String | Unique stream identifier |
userName | String | Streamer's display name |
userLogin | String | Streamer's login name (lowercase) |
userId | String | Streamer's user ID |
isLive | Boolean | Whether the channel is live (channels mode; false records carry profile data only) |
title | String | Current stream title |
gameName | String | Game/category being streamed |
gameId | String | Game/category ID |
viewerCount | Integer | Current live viewer count |
startedAt | String | Stream start time (ISO 8601) |
language | String | Stream language (ISO 639-1, uppercase) |
thumbnailUrl | String | Stream preview image URL (1280x720) |
isMature | Boolean | Whether the stream is marked as mature |
type | String | Stream type (typically live) |
profileImageUrl | String | Streamer's profile image URL (300x300) |
description | String | Streamer's bio/description |
followerCount | Integer | Total follower count |
accountCreatedAt | String | Account creation date (ISO 8601) |
scrapedAt | String | Timestamp when data was scraped (ISO 8601) |
Related Actors
Check out our other scrapers:
- Pracuj.pl Job Scraper - Extract job listings from Poland's leading job portal
- Empik Product Search Scraper - Search and scrape products from Empik.com
- Sinsay Scraper - Extract fashion products from Sinsay online store
Your Feedback
We are always working to improve our Actors' performance. If you have any technical feedback about Twitch Stream Stats or found a bug, please create an issue on the Actor's Issues tab in Apify Console.