Twitch Live Stream Intelligence avatar

Twitch Live Stream Intelligence

Pricing

from $0.01 / 1,000 results

Go to Apify Store
Twitch Live Stream Intelligence

Twitch Live Stream Intelligence

Monitor Twitch streams, detect viewer growth, track live channels, discover rising categories, and collect structured Twitch intelligence automatically — from public data only.

Pricing

from $0.01 / 1,000 results

Rating

0.0

(0)

Developer

Tuhin

Tuhin

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Categories

Share

Monitor Twitch streams, detect viewer growth, track live channels, discover rising categories, and collect structured Twitch intelligence automatically — from public data only.

This is not a generic scraper. It turns publicly available Twitch information into structured intelligence: it tells you who is live now, how their audience is moving, which categories are heating up, and what brands are being mentioned — and it detects meaningful changes over time when you run it on a schedule.

Responsible use: This Actor only reads publicly available Twitch data. It does not create viewers, inflate counts, automate accounts, generate fake engagement, or bypass any authentication, CAPTCHA, or anti-bot protection. It is a monitoring and analytics tool.


Who it's for

  • Creators & managers — track your own and competitors' live performance and growth.
  • Agencies & talent scouts — discover rising streamers and trending categories.
  • Brands & marketers — surface brand/sponsorship mentions across live streams.
  • Researchers & analysts — build your own historical dataset of the live Twitch ecosystem.

What it does

  • Detects whether each channel is live or offline.
  • Collects stream title, streamer, category/game, viewer count, follower count, start time, duration, language, tags, thumbnail, profile image, and URLs.
  • Discovers currently-live channels by category/game.
  • Computes viewer change, growth %, velocity, peak/min/average viewers, and flags trends as normal, rising, spike, or declining.
  • Emits structured events: stream_start, stream_end, title_change, category_change, language_change, viewer_change.
  • Aggregates category intelligence (live channel count, total/average/median viewers, top channels).
  • Produces streamer intelligence (latest snapshot + trend per channel).
  • Detects brand & sponsorship signals from public titles/tags/description — labelled as detected mentions, never confirmed sponsorships.

Input

Run it with just a channel name. All fields:

FieldTypeDefaultDescription
channelsarrayUsernames or URLs, e.g. "xqc" or "https://twitch.tv/xqc".
categoriesarrayGames/categories to discover live channels in, e.g. "Just Chatting".
languagesarrayKeep only these languages (2-letter, e.g. "EN").
liveOnlybooleanfalseSkip offline channels.
minimumViewers / maximumViewersinteger0Viewer bounds for live streams (0 = no bound).
minimumStreamDurationSecondsinteger0Minimum uptime for live streams.
monitoringIntervalSecondsinteger0Re-check every N seconds within one run (0 = single snapshot).
maximumMonitoringDurationSecondsinteger0Cap for a monitoring run.
maximumChannelsinteger0Safety cap per cycle (0 = no cap).
categoryStreamsPerGameinteger30How many live streams to pull per category.
enableAnalysisbooleantrueCompute growth/category/streamer/brand intelligence.
previousDatasetIdstringDataset ID of a prior run — used as baseline for cross-run change detection.
proxyConfigurationobjectApify ProxyProxy for Twitch requests.

Example inputs

Single streamer

{ "channels": ["xqc"] }

Monitor ten competitors

{ "channels": ["pokimane","kaicenat","ninja","shroud","amouranth","tarik","summit1g","hasanabi","xqc","ludwig"], "liveOnly": true }

Track a gaming category and find rising channels

{ "categories": ["League of Legends"], "minimumViewers": 500, "languages": ["EN"], "enableAnalysis": true }

Continuous monitoring (build a short series in one run)

{ "channels": ["kaicenat"], "monitoringIntervalSeconds": 60, "maximumMonitoringDurationSeconds": 600 }

Output

1) Channel observations (default dataset)

One normalized record per channel per cycle:

{
"channelName": "eliasn97",
"streamerName": "eliasn97",
"channelUrl": "https://www.twitch.tv/eliasn97",
"streamUrl": "https://www.twitch.tv/eliasn97",
"isLive": true,
"title": "Reactions & Talks | !iconleague",
"category": "Just Chatting",
"gameId": "509658",
"viewerCount": 25454,
"followerCount": 2412771,
"language": "DE",
"tags": ["Deutsch"],
"startedAt": "2026-08-30T17:01:30Z",
"observedAt": "2026-08-30T17:35:02.000Z",
"streamDurationSeconds": 2012,
"thumbnailUrl": "https://static-cdn.jtvnw.net/previews-ttv/live_user_eliasn97-1920x1080.jpg",
"profileImageUrl": "https://static-cdn.jtvnw.net/.../profile_image-300x300.png",
"viewerChange": 320,
"viewerChangePercent": 1.28,
"growthClassification": "normal",
"detectedBrands": [{ "brand": "Red Bull", "confidence": 0.6, "sources": ["title"], "detectedMention": true, "confirmedSponsorship": false }],
"sponsorshipSignals": [{ "source": "title", "phrase": "sponsored by" }],
"detectedPromoCodes": [{ "source": "title", "code": "ELIAS10" }],
"dataSource": "twitch-public-gql"
}

2) Stream events (named dataset events)

{ "channelName": "kaicenat", "eventType": "viewer_change", "observedAt": "2026-08-30T17:35:02.000Z", "previousValue": 40000, "newValue": 62000, "metadata": { "viewerChange": 22000, "viewerChangePercent": 55, "classification": "spike" } }

3) Category intelligence (named dataset category-intelligence)

{ "category": "Just Chatting", "liveChannelCount": 12, "totalObservedViewers": 184300, "averageObservedViewers": 15358, "medianObservedViewers": 9200, "topChannels": [{ "channelName": "eliasn97", "viewerCount": 25454, "title": "..." }], "observedAt": "2026-08-30T17:35:05.000Z" }

Additionally, a run summary is written to the key-value store record OUTPUT, and streamer intelligence (latest + trend per channel) to STREAMER_INTELLIGENCE.

Scheduling & historical data

Schedule the Actor (e.g. every 5–15 minutes). Each run appends observations you can combine into a historical dataset. To detect changes across runs, pass the previous run's dataset ID as previousDatasetId — the Actor uses each channel's most recent prior observation as the baseline for viewer changes and events.

Reliability & error handling

  • Batched GraphQL requests with retries + exponential backoff and rate-limit awareness.
  • One unavailable/banned/renamed channel is skipped and logged — it never fails the run.
  • Deterministic, consistently-typed output for easy downstream joins.

Limitations

  • Viewer/follower counts reflect publicly visible values at observation time — they are point-in-time samples, not Twitch's official historical analytics.
  • Brand/sponsorship results are detected mentions from public text, not confirmed commercial relationships.
  • Category discovery returns a sample of top live streams per category (categoryStreamsPerGame), not the entire category.

Architecture

Modular by design — twitch (collection), normalize, compare (history/events), analytics, state (cross-run), and main (orchestration/output) — so future capabilities (Slack/Discord/email alerts, dashboards, creator ranking, historical DB, e-commerce product matching) drop in cleanly.