Twitch Stream & Profile Stats avatar

Twitch Stream & Profile Stats

Pricing

from $1.00 / 1,000 stream or channel records

Go to Apify Store
Twitch Stream & Profile Stats

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ł

Paweł

Maintained by Community

Actor stats

0

Bookmarked

6

Total users

0

Monthly active users

19 days ago

Last modified

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

ParameterTypeDescriptionRequiredDefault
channelsArray of StringsTwitch channel login names to check (e.g., xqc, shroud)No[]
gameNamesArray of StringsGame/category names or numeric category ids (e.g., Fortnite, 33214)No[]
maxItemsIntegerMaximum number of records in total (0 = unlimited)No50
languageStringFilter by language - ISO 639-1 code (e.g., en, pl, de)No-
fanOutLanguagesArray of StringsLanguage 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: 30 and 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 than maxItems, no budget is left for game/top-stream results.
  • maxItems: 0 means 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 maxItems needs 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 maxItems is 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 - isLive is false, the live fields (title, viewers, game, thumbnail) are null, 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 maxItems budget 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 channels nor gameNames are 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

FieldTypeDescription
streamIdStringUnique stream identifier
userNameStringStreamer's display name
userLoginStringStreamer's login name (lowercase)
userIdStringStreamer's user ID
isLiveBooleanWhether the channel is live (channels mode; false records carry profile data only)
titleStringCurrent stream title
gameNameStringGame/category being streamed
gameIdStringGame/category ID
viewerCountIntegerCurrent live viewer count
startedAtStringStream start time (ISO 8601)
languageStringStream language (ISO 639-1, uppercase)
thumbnailUrlStringStream preview image URL (1280x720)
isMatureBooleanWhether the stream is marked as mature
typeStringStream type (typically live)
profileImageUrlStringStreamer's profile image URL (300x300)
descriptionStringStreamer's bio/description
followerCountIntegerTotal follower count
accountCreatedAtStringAccount creation date (ISO 8601)
scrapedAtStringTimestamp when data was scraped (ISO 8601)

Check out our other scrapers:

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.