---
title: List of channels
slug: lists
eyebrow: Lists
nav_group: Lists
nav_label: Lists
nav_order: 130
nav_expanded: true
---

# 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.

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

## Cost by filter {#list-channels}

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](#list-emails).

> [!NEW] 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`.

```curl REQUEST
curl -X GET https://streamscharts.com/api/v2/channels?platform=twitch&time=7-days&type=!female \
  -H 'Client-ID: XXXXXXXXXXXX' -H 'Token: YYYYYYYYYYYYYY'
```

```json RESPONSE
{
  "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 {#list-filters}

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 |

> [!WARNING] Full agency list requires PRO
> The API exposes the five most popular VTuber agencies. To filter across all 200+ agencies, use a [PRO subscription](https://streamscharts.com/pricing).

## Top by subscribers {twitch #list-subs}

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.

```endpoint
GET /api/v2/subscribers
```

| Filter | Filter tier | Cost / page |
| --- | --- | --- |
| No filter / Language / Partnership | Light | 5 |
| Country / Gender / VTubers | Segment | 10 |

```json RESPONSE
{
  "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](#list-emails).

## Top by bits {twitch #list-bits}

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.

```endpoint
GET /api/v2/bits
```

| Filter | Filter tier | Cost / page |
| --- | --- | --- |
| No filter / Language / Partnership | Light | 5 |
| Country / Gender / VTubers | Segment | 10 |

```json RESPONSE
{
  "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 }
}
```

> [!WARNING] 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](#list-emails).

## Business contacts {#list-emails}

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](#list-channels), [top by subscribers](#list-subs), and [top by bits](#list-bits). It is **not** available on the [live channels list](/api/docs/live#live-channels).

```endpoint
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.

> [!INFO] 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.

| 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](#list-free) keeps its zero base cost with the parameter attached — you pay only for the rows that carry contacts.

### Request & response

```curl REQUEST
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'
```

```json RESPONSE
{
  "data": [
    {
      "platform": "twitch",
      "channel_name": "rtainjapan",
      "channel_display_name": "RTAinJapan",
      "channel_id": "134850221",
      "hours_watched": 3370658,
      "business_email": "business@rtainjapan.example",
      "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`.

> [!INFO] 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`](/api/docs/testing) to inspect the response shape for free.

> [!WARNING] 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 {#list-free}

The top 100 Twitch channels for the last 7 days draws **zero credits** — ideal to smoke-test your integration or power a public leaderboard.

```endpoint
GET /api/v2/channels?platform=twitch&time=7-days
```

| Request | Cost |
| --- | --- |
| Top 100 Twitch channels, `time=7-days`, page 1 | 0 |

> [!INFO]
> 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`](#list-emails) keeps the base cost at zero and charges 1 credit per channel that has contact data.