List of channels
A ranked, filterable collection of channels for one platform — sorted by Hours Watched by default, 100 rows per page, time windows up to 365 days. This is how you discover creators rather than monitor a known one.
Cost by filter
Light filters cost 5 credits per page; segment filters cost 10. The cost is identical for the first page and every following page. Combining filters across tiers charges the higher tier, never the sum.
| Filter | Filter tier | Cost / page |
|---|---|---|
| No filter (overall top by platform) | Light | 5 |
| Language | Light | 5 |
| Game / category | Light | 5 |
| Platform's partnership | Light | 5 |
| Country | Segment | 10 |
| Gender (channel type) | Segment | 10 |
| VTubers | Segment | 10 |
| VTubers agencies | Segment | 10 |
| Age | Segment | 10 |
| Content type | Segment | 10 |
| Growing streamers | Segment | 10 |
| Games streamed | Segment | 10 |
| Average / Peak Viewers range | Segment | 10 |
| Hours Watched / Airtime range | Segment | 10 |
| Total Followers / Followers Gain range | Segment | 10 |
Need contact details too? Add business_contacts=true to return each channel’s business email and socials in the same response, charged per channel that has them — see business contacts.
The top 100 Twitch channels for the last 7 days — ?platform=twitch&time=7-days, page 1 — is free. Adding filters, changing the window, or requesting page 2+ moves it into the pricing above.
Sorting, pagination & exclusion
Sort with sortBy={value} — one of peak_viewers, average_viewers, air_time, followers_gain. Page with page={n} (100 rows/page). Exclude any filter value by prefixing it with !, e.g. type=!female.
REQUESTCURLcurl -X GET https://streamscharts.com/api/v2/channels?platform=twitch&time=7-days&type=!female \ -H 'Client-ID: XXXXXXXXXXXX' -H 'Token: YYYYYYYYYYYYYY'
RESPONSEJSON{ "data": [ { "platform": "twitch", "channel_name": "rtainjapan", "channel_display_name": "RTAinJapan", "channel_id": "134850221", "hours_watched": 3370658, "peak_viewers": 103708, "average_viewers": 56492, "airtime_in_m": 3580, "followers_gain": 13343, "live_views": "1915224", "last_streamed_game": "FINAL FANTASY VI", "avatar_url": "https://static-cdn.jtvnw.net/.../300x300.png", "channel_country": "JP", "stream_language": "ja", "partnership_status": "partner", "channel_type": "Organization" } ], "links": { "first": ".../channels?platform=twitch&time=7-days&page=1", "next": ".../channels?platform=twitch&time=7-days&page=2" }, "meta": { "current_page": 1, "from": 1, "per_page": 100, "to": 100 }, "filters": { "platform": "twitch", "time": "7-days" } }
Field availability by platform
| Platform(s) | Fields not returned |
|---|---|
| NimoTV, Bigo LIVE, SOOP Korea, CHZZK, SOOP | followers_gain |
| YouTube, Trovo, NimoTV, Bigo LIVE, Nonolive, SOOP Korea, Mildom | live_views, partnership_status |
| Kick | live_views |
| Rumble | followers_gain, live_views, last_streamed_game |
Filters reference
Country uses ISO 3166 Alpha-2; language uses ISO 639-1. Country, gender, and age data are user-contributed and available for hundreds of thousands of channels.
| Filter | Parameter | Accepted values |
|---|---|---|
| Language | lang={code} | ISO 639-1, e.g. en, es |
| Game / category | game={slug} | e.g. apex-legends |
| Partnership | partner={value} | only_partners (twitch, kick, rumble), only_affiliates (twitch) |
| Country | country={code} | ISO 3166 Alpha-2, e.g. US |
| Gender (channel type) | type={value} | female, male, organization |
| VTubers | vtuber=all | twitch, youtube |
| VTuber agency | vtuber_affiliation={value} | independent, vshojo, hololive, nijisanji, 774-inc |
| Age | age={value} | over_18, over_21 |
| Content type | category={value} | irl, gaming, esports, sports, music, slots, chess |
| Games streamed | gaming_activity={value} | 1, 2-5, 6-10, 11-25, 25-1000 |
| Avg Viewers range | accv={a}-{b} | e.g. 100-1000 |
| Peak Viewers range | pv={a}-{b} | numeric range |
| Hours Watched range | hw={a}-{b} | numeric range |
| Airtime range | at={a}-{b} | numeric range (minutes) |
| Total Followers range | followers={a}-{b} | numeric range |
| Followers Gain range | fg={a}-{b} | numeric range |
Growing streamers
Use growing_streamers={value} to surface fast-growing channels by Followers Gain, Average Viewers, or Hours Watched:
| Value | Meaning |
|---|---|
followers_gain_100k | By Followers Gain, total followers < 100K |
followers_gain_1m | By Followers Gain, total followers < 1M |
followers_gain_100 | Followers Gain up > 100% vs previous period |
fg_per_hour_100 | Followers Gain per hour up > 100% vs previous period |
avg_viewers_100 | Average Viewers up > 100% vs previous period |
avg_viewers_100_1k | Average Viewers up > 100% and gained ≥ 1,000 |
hours_watched_100 | Hours Watched up > 100% vs previous period |
hours_watched_100_10k | Hours Watched up > 100% and gained ≥ 10,000 |
The API exposes the five most popular VTuber agencies. To filter across all 200+ agencies, use a PRO subscription.
Top by subscribers TWITCH
A ranked list of Twitch channels by total paid subscribers, with tier breakdowns and estimated income. Sorted by total subscribers by default. Same credit tiers as the channel list — 5 (light) / 10 (segment) per page.
| Filter | Filter tier | Cost / page |
|---|---|---|
| No filter / Language / Partnership | Light | 5 |
| Country / Gender / VTubers | Segment | 10 |
RESPONSEJSON{ "data": [ { "platform": "twitch", "channel_name": "jynxzi", "channel_display_name": "Jynxzi", "channel_id": "411377640", "avatar_url": "https://static-cdn.jtvnw.net/.../300x300.png", "channel_country": "US", "stream_language": "en", "partnership_status": "partner", "channel_type": "Male", "total_subs": 88130, "min_income_from_subs_in_$": 132391, "max_income_from_subs_in_$": 220370, "paid_subs": 67506, "gifted_subs": 20624, "prime_subs": 38051, "tier_1_subs": 50019, "tier_2_subs": 36, "tier_3_subs": 24 } ], "meta": { "current_page": 1, "per_page": 100, "to": 100 } }
Supported filters: lang, partner, country, type, vtuber=all. Default window is the last 30 days; the maximum is 365 days.
Supports business_contacts=true — 1 extra credit per channel with an email or socials, see business contacts.
Top by bits TWITCH
A ranked list of Twitch channels by total bits, with cheer activity and estimated income. Sorted by total bits by default. Same credit tiers — 5 (light) / 10 (segment) per page.
| Filter | Filter tier | Cost / page |
|---|---|---|
| No filter / Language / Partnership | Light | 5 |
| Country / Gender / VTubers | Segment | 10 |
RESPONSEJSON{ "data": [ { "platform": "twitch", "channel_name": "stankrat_", "channel_display_name": "StankRat_", "channel_id": "159143377", "avatar_url": "https://static-cdn.jtvnw.net/.../300x300.png", "channel_country": "US", "stream_language": "en", "partnership_status": "partner", "channel_type": "Male", "total_bits": 3002509, "cheer_messages": 6594, "cheer_chatters": 576, "income_from_bits_in_$": 30025.09, "bits_per_cheered_message": 455.3, "bits_per_cheered_chatter": 5212.7 } ], "meta": { "current_page": 1, "per_page": 100, "to": 100 } }
Bits are tracked mostly while the channel is online and are not verified by Twitch streamers, so numbers may differ from the originals. Estimated income uses 1 bit = 1 US cent. Supported filters: lang, partner, country, type, vtuber=all.
Supports business_contacts=true — 1 extra credit per channel with an email or socials, see business contacts.
Business contacts
Add business_contacts=true to a channel list request and every row gains the channel’s business email and social accounts — the ways a creator asks to be reached about sponsorships and partnerships. One request returns the ranked list, its stats, and the contact details.
Supported on the three channel lists: list of channels, top by subscribers, and top by bits. It is not available on the live channels list.
Dynamic cost
The list itself is charged exactly as it is without the parameter — 5 credits per page for light filters, 10 for segment filters. On top of that, each returned channel that has at least one contact costs 1 credit: an email, an X account, an Instagram, a Discord, or any other attached network. One credit covers everything that channel has, whether that is a single Discord invite or an email plus five socials. Channels with nothing attached are free.
list cost by filter tier + 1 credit per channel with contact data. With 100 rows per page, the surcharge is at most 100 credits per page.
| Request | List cost | Rows with contacts | Total |
|---|---|---|---|
?platform=twitch&time=30-days&business_contacts=true | 5 | 63 | 68 |
?platform=twitch&country=US&business_contacts=true | 10 | 82 | 92 |
?platform=twitch&time=7-days&business_contacts=true (page 1) | 0 | 44 | 44 |
| Any page where no row has an email or a social | 5 | 0 | 5 |
The free request keeps its zero base cost with the parameter attached — you pay only for the rows that carry contacts.
Request & response
REQUESTCURLcurl -X GET https://streamscharts.com/api/v2/channels?platform=twitch&time=30-days&lang=en&business_contacts=true \ -H 'Client-ID: XXXXXXXXXXXX' -H 'Token: YYYYYYYYYYYYYY'
RESPONSEJSON{ "data": [ { "platform": "twitch", "channel_name": "rtainjapan", "channel_display_name": "RTAinJapan", "channel_id": "134850221", "hours_watched": 3370658, "business_email": "[email protected]", "socials": { "x": "https://x.com/rtainjapan", "instagram": "https://instagram.com/rtainjapan", "discord": "https://discord.gg/xxxxxxx", "youtube": "https://youtube.com/@rtainjapan" } }, { "platform": "twitch", "channel_name": "secondchannel", "channel_display_name": "SecondChannel", "channel_id": "98217734", "hours_watched": 1204885, "business_email": null, "socials": { "discord": "https://discord.gg/yyyyyyy" } }, { "platform": "twitch", "channel_name": "thirdchannel", "channel_display_name": "ThirdChannel", "channel_id": "41028855", "hours_watched": 804112, "business_email": null, "socials": {} } ], "meta": { "current_page": 1, "per_page": 100, "to": 100, "business_contacts": { "channels_with_contacts": 63, "channels_with_email": 50, "credits_for_contacts": 63 } }, "filters": { "platform": "twitch", "time": "30-days", "lang": "en", "business_contacts": "true" } }
The third row above carries no contacts at all — it is returned with the same stats as always and adds nothing to the bill. Every stat field the endpoint normally returns is unchanged; the sample is trimmed to the added fields.
| Field | Type | Description |
|---|---|---|
| business_email | string | null | Public business or partnership email. null when none is on record. |
| socials | object | Every social account attached to the channel, keyed by network — x, instagram, discord, youtube, tiktok, facebook, telegram, reddit, steam, threads and others. Only attached networks are present; {} when the channel has none. |
| meta.business_contacts.channels_with_contacts | integer | Rows on this page with an email, a social, or both — the number of charged rows. |
| meta.business_contacts.channels_with_email | integer | Subset of those rows that include an email. |
| meta.business_contacts.credits_for_contacts | integer | Credits charged for contacts on this page — equal to channels_with_contacts. |
Knowing what you spent
Because the surcharge depends on the data, read the amount from the response instead of assuming it: x-credits-charged carries the total for the request (list + contacts); your remaining balance is x-credits-monthly-v2-left plus x-credits-topup-v2-left. The contact part is also in meta.business_contacts.
Narrow the list before asking for contacts. Run the query without business_contacts, confirm the segment is the one you want, then re-request only the pages you intend to work with — you pay per row only on those. Add testing_mode=true to inspect the response shape for free.
These are the contacts creators publish for enquiries. You are responsible for using them in line with the laws that apply to you and to the creator — including GDPR and anti-spam rules — and with the Streams Charts terms.
Free request
The top 100 Twitch channels for the last 7 days draws zero credits — ideal to smoke-test your integration or power a public leaderboard.
| Request | Cost |
|---|---|
Top 100 Twitch channels, time=7-days, page 1 | 0 |
Only page 1 of this exact query is free. Adding filters, changing the time window, or requesting page 2+ moves the request into standard list pricing. business_contacts=true keeps the base cost at zero and charges 1 credit per channel that has contact data.