Changelog
Notable additions, changes, and fixes to the Streams Charts API. Dates are in UTC.
5-minute interval series & `time` fixes
2026-09-11ADDEDA broadcast as a 5-minute series. /channels/{name}/streams-extra/{stream-id}/intervals returns one point every 5 minutes for a whole stream — concurrent viewers, authorized viewers, net follower change, and the game and title live at that moment. chat_metrics=true and subs_metrics=true add per-point chat and subscription activity. 3 credits per call whatever the length of the broadcast, 4 with subscriber metrics, 5 with chat metrics, 6 with both. See 5-minute intervals.
FIXEDtime windows with both edges at midnight. time=2026-07-26 00:00,2026-07-27 00:00 was falling back to a daily window and reaching a day past the end; it now behaves exactly like 00:00,23:59. followers_gain also returned a string on minute-level windows and an integer on daily ones — it is an integer on both.
FIXEDMalformed time values return 422, not 500. An unreadable value such as 25:00 or 2026-13-40 now answers 422 invalid_parameter with Invalid time: could not parse "<value>", and an empty time= answers 422 with time must not be empty instead of quietly returning all-time data for 1 credit. See how time is validated.
FIXEDstream_end under a time window. Stream endpoints reported the edge of the window instead of the real end of the broadcast. stream_start and stream_end now always describe the broadcast.
FIXEDZeros replaced by null on minute-level windows. live_views is now null on both the channel and the stream endpoint when a minute-level window is passed — it is measured per broadcast, not per slice — and chat counters no longer come back as 0 on windows that do have data.
CHANGEDpassive_chatters and chat_engagement_rate_% under a time window. Both are defined over a full broadcast only, and now say so explicitly: with an exact-time window they return the string not available for timestamps instead of a number. Every other chat counter is recalculated for the window. See chat analytics.
Audience data on Kick and YouTube
2026-08-31ADDEDAudience geography & demographics on Kick and YouTube. /channels-extra/{name}/audience is no longer Twitch-only. Kick and YouTube channels return the same response — viewers_by_country plus every audience_* block — for the same 2 credits. Nothing changed for Twitch. See audience geography & demographics.
Contacts, chat logs & simpler credit costs
2026-08-25CHANGEDSingle-resource requests are 1 credit. Channel extra metrics, channel chat analytics and stream chat analytics dropped from 2 credits to 1. Every endpoint that describes one channel, one stream or one game now costs 1 credit per request — the only 2-credit single-resource call left is the joint audience set. See credits & billing.
CHANGEDAudience geography and demographics merged. /channels-extra/{name}/geo and /channels-extra/{name}/demo are replaced by one endpoint, /channels-extra/{name}/audience, returning both blocks for 2 credits total instead of 2 + 2. See audience geography & demographics.
ADDEDChat logs. /channels/{name}/streams-extra/{stream-id}/chat-logs returns the raw chat of one broadcast — timestamp, chatter, message text, bits — for Twitch, Kick and YouTube. 1 credit per chat log, however many messages it holds; paging through the same log with links.next is not charged again. See chat logs.
ADDEDBusiness contacts on channel lists. Append business_contacts=true to /channels, /subscribers or /bits and each row returns the channel’s business_email plus a socials object with every attached account (X, Instagram, Discord, YouTube, TikTok and others). Cost is dynamic: the usual list price plus 1 credit per channel that has at least one contact — rows with neither an email nor a social are free. Per-page totals are in meta.business_contacts and in the x-credits-charged header. Not available on /live/channels. See business contacts.
API v2
2026-08-19ADDEDVersion 2 of the API, served from https://streamscharts.com/api/v2. Every endpoint now lives under one versioned namespace.
ADDEDGames. /games/{slug} returns viewership and channel metrics for a single game or category; /games returns a ranked list, filterable by language and by publisher.
ADDEDLive. /live/channels returns every channel broadcasting right now across all platforms, refreshed on a 5-minute interval. Query one platform or several at once, and page through a single snapshot with the pinned captured_at.
ADDEDTesting mode. Append testing_mode=true to any endpoint for a free sample response with the same schema as the live one. Testing-mode requests are never charged and are exempt from the rate limit.
Earlier changes
Data-collection and coverage updates made before the v2 release.
ADDEDChat analytics extended to Kick (70,000+ channels) and to top YouTube Gaming channels, on both the channel and the stream endpoint.
ADDEDNaver's CHZZK and SteamTV added to the tracked platforms.
CHANGEDAfreecaTV is now SOOP Korea. The platform slug afreecatv is unchanged.
CHANGEDRumble's minimum collection threshold raised to 15+ average viewers.
REMOVEDTrovo, SOOP Global, Nonolive, and Mildom are no longer collected. Historical data within their published ranges remains queryable — see supported platforms.