Live endpoints
A real-time snapshot of who is streaming right now. The live channels list returns every channel currently broadcasting across every platform in the API, refreshed on a 5-minute pull interval. Query one platform or several at once.
Live data is captured every 5 minutes (pull_interval_seconds: 300). Each response carries a captured_at timestamp — use it to page through a consistent snapshot and to know how fresh the data is. Available for every platform in the API. Pass a single platform with platform={name}, or several at once as a comma-separated list, e.g. platform=twitch,kick,youtube. Omit it to return all platforms.
Live channels list
Every channel that is live right now, across every platform in the API — one platform or several at once in a single call. Same shape and pagination model as the list of channels — the difference is that this list is a real-time snapshot rather than an aggregated time window.
| Filter tier | Cost / page |
|---|---|
| No filter (all live channels) | 10 |
| Language | 10 |
| Game / category | 10 |
| Country | 20 |
REQUESTCURLcurl -X GET https://streamscharts.com/api/v2/live/channels?platform=twitch,kick&lang=en&game=rocket-league \ -H 'Client-ID: XXXXXXXXXXXX' -H 'Token: YYYYYYYYYYYYYY'
RESPONSEJSON{ "data": [ { "platform": "twitch", "channel_id": "57781936", "display_name": "RocketLeague", "avatar_url": "https://static-cdn.jtvnw.net/.../300x300.png", "country": "US", "language": "en", "current_category": "Rocket League", "current_stream_title": "FURIA vs NRG | Playoffs | Paris Major | RLCS 2026", "live_viewers": 48213, "current_airtime_in_m": 210, "broadcast_started_at": "2026-05-22T11:15:00Z", "captured_at": "2026-05-22T14:45:03Z" } ], "links": { "first": ".../live/channels?captured_at=2026-02-18T17%3A58%3A16Z&page=1", "last": ".../live/channels?captured_at=2026-02-18T17%3A58%3A16Z&page=189", "prev": null, "next": ".../live/channels?captured_at=2026-02-18T17%3A58%3A16Z&page=2" }, "meta": { "captured_at": "2026-02-18T17:58:16Z", "pull_interval_seconds": 300, "current_page": 1, "from": 1, "to": 100, "per_page": 100, "total": 18854 }, "filters": { "platforms": "all", "languages": [ "en" ], "categories": "all" } }
Response fields
| Field | Type | Description |
|---|---|---|
| platform | string | Any active platform slug — twitch, youtube, kick, rumble, nimo, bigo, afreecatv, chzzk, steam. |
| channel_id | string | Platform channel identifier. |
| display_name | string | Channel display name. |
| country | string | ISO 3166 Alpha-2 (user-contributed). |
| language | string | ISO 639-1 broadcast language. |
| current_category | string | Game or category being streamed right now. |
| current_stream_title | string | Current broadcast title. |
| live_viewers | integer | Concurrent viewers at the moment of capture. |
| current_airtime_in_m | integer | Minutes the current broadcast has been live, as of capture. |
| broadcast_started_at | string | ISO 8601 UTC start time of the broadcast. |
| captured_at | string | ISO 8601 UTC time this snapshot was pulled. |
Filters
Everything else works exactly like the list of channels — pagination (100 rows/page), sorting, and value exclusion with a ! prefix. Live channels support three filters:
| Filter | Parameter | Accepted values |
|---|---|---|
| Language | lang={code} | ISO 639-1, e.g. en, es |
| Game / category | game={slug} | e.g. rocket-league |
| Country | country={code} | ISO 3166 Alpha-2, e.g. US |
The links block pins captured_at so every page you fetch belongs to the same 5-minute snapshot. Follow links.next rather than incrementing page by hand to avoid mixing two snapshots as the data refreshes underneath you. Minimum viewership thresholds follow Streams Charts platform-wide rules.
The business_contacts=true parameter is not supported on the live list. Business emails and socials are available on the aggregated channel lists only — list of channels, top by subscribers, top by bits.