Twitch Live Stream Intelligence
Pricing
from $0.01 / 1,000 results
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
Maintained by CommunityActor 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, ordeclining. - 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:
| Field | Type | Default | Description |
|---|---|---|---|
channels | array | – | Usernames or URLs, e.g. "xqc" or "https://twitch.tv/xqc". |
categories | array | – | Games/categories to discover live channels in, e.g. "Just Chatting". |
languages | array | – | Keep only these languages (2-letter, e.g. "EN"). |
liveOnly | boolean | false | Skip offline channels. |
minimumViewers / maximumViewers | integer | 0 | Viewer bounds for live streams (0 = no bound). |
minimumStreamDurationSeconds | integer | 0 | Minimum uptime for live streams. |
monitoringIntervalSeconds | integer | 0 | Re-check every N seconds within one run (0 = single snapshot). |
maximumMonitoringDurationSeconds | integer | 0 | Cap for a monitoring run. |
maximumChannels | integer | 0 | Safety cap per cycle (0 = no cap). |
categoryStreamsPerGame | integer | 30 | How many live streams to pull per category. |
enableAnalysis | boolean | true | Compute growth/category/streamer/brand intelligence. |
previousDatasetId | string | – | Dataset ID of a prior run — used as baseline for cross-run change detection. |
proxyConfiguration | object | Apify Proxy | Proxy 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.