Lists

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.

GET /api/v2/channels?platform={platform}

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.

FilterFilter tierCost / page
No filter (overall top by platform)Light5
LanguageLight5
Game / categoryLight5
Platform's partnershipLight5
CountrySegment10
Gender (channel type)Segment10
VTubersSegment10
VTubers agenciesSegment10
AgeSegment10
Content typeSegment10
Growing streamersSegment10
Games streamedSegment10
Average / Peak Viewers rangeSegment10
Hours Watched / Airtime rangeSegment10
Total Followers / Followers Gain rangeSegment10

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 free request

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.

REQUESTCURL
curl -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, SOOPfollowers_gain
YouTube, Trovo, NimoTV, Bigo LIVE, Nonolive, SOOP Korea, Mildomlive_views, partnership_status
Kicklive_views
Rumblefollowers_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.

FilterParameterAccepted values
Languagelang={code}ISO 639-1, e.g. en, es
Game / categorygame={slug}e.g. apex-legends
Partnershippartner={value}only_partners (twitch, kick, rumble), only_affiliates (twitch)
Countrycountry={code}ISO 3166 Alpha-2, e.g. US
Gender (channel type)type={value}female, male, organization
VTubersvtuber=alltwitch, youtube
VTuber agencyvtuber_affiliation={value}independent, vshojo, hololive, nijisanji, 774-inc
Ageage={value}over_18, over_21
Content typecategory={value}irl, gaming, esports, sports, music, slots, chess
Games streamedgaming_activity={value}1, 2-5, 6-10, 11-25, 25-1000
Avg Viewers rangeaccv={a}-{b}e.g. 100-1000
Peak Viewers rangepv={a}-{b}numeric range
Hours Watched rangehw={a}-{b}numeric range
Airtime rangeat={a}-{b}numeric range (minutes)
Total Followers rangefollowers={a}-{b}numeric range
Followers Gain rangefg={a}-{b}numeric range

Growing streamers

Use growing_streamers={value} to surface fast-growing channels by Followers Gain, Average Viewers, or Hours Watched:

ValueMeaning
followers_gain_100kBy Followers Gain, total followers < 100K
followers_gain_1mBy Followers Gain, total followers < 1M
followers_gain_100Followers Gain up > 100% vs previous period
fg_per_hour_100Followers Gain per hour up > 100% vs previous period
avg_viewers_100Average Viewers up > 100% vs previous period
avg_viewers_100_1kAverage Viewers up > 100% and gained ≥ 1,000
hours_watched_100Hours Watched up > 100% vs previous period
hours_watched_100_10kHours Watched up > 100% and gained ≥ 10,000
Full agency list requires PRO

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.

GET /api/v2/subscribers
FilterFilter tierCost / page
No filter / Language / PartnershipLight5
Country / Gender / VTubersSegment10
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.

GET /api/v2/bits
FilterFilter tierCost / page
No filter / Language / PartnershipLight5
Country / Gender / VTubersSegment10
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 } }
Methodology note

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.

GET /api/v2/channels?platform={platform}&business_contacts=true

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.

Total cost

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.

RequestList costRows with contactsTotal
?platform=twitch&time=30-days&business_contacts=true56368
?platform=twitch&country=US&business_contacts=true108292
?platform=twitch&time=7-days&business_contacts=true (page 1)04444
Any page where no row has an email or a social505

The free request keeps its zero base cost with the parameter attached — you pay only for the rows that carry contacts.

Request & response

REQUESTCURL
curl -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.

FieldTypeDescription
business_emailstring | nullPublic business or partnership email. null when none is on record.
socialsobjectEvery 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_contactsintegerRows on this page with an email, a social, or both — the number of charged rows.
meta.business_contacts.channels_with_emailintegerSubset of those rows that include an email.
meta.business_contacts.credits_for_contactsintegerCredits 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.

Spend less by filtering first

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.

Use of contact data

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.

GET /api/v2/channels?platform=twitch&time=7-days
RequestCost
Top 100 Twitch channels, time=7-days, page 10

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.