How it will work: 3 steps
- Follow us on ApifyThe tool is built and waits in the queue for the Apify Store. Apify is the cloud platform where our tools run.
- Paste your input and press StartNo code needed: you fill in a form (the input). It already has a working example. For example:
twitchin Channels. Each start is one run. - Download the resultsWhen the run ends, the results are in a table (the dataset). Open Output, press Export and pick Excel or CSV. JSON and the API are there too.
This tool is an Apify Actor: a small program that runs on Apify. You can also run it on a schedule, for example every Monday. New to it? Read how it works, step by step and the 8 words you need first.
What it does
Twitch Follower Count & Channel Stats gets the follower count, bio, partner or affiliate status, last game, stream title, language, tags and creation date for a list of Twitch channels. You paste logins or twitch.tv links, or type a search word, and add your own free Twitch Client ID and Client Secret. You get one clean table row per channel, with numbers as numbers.
- Accepts logins (
shroud), handles (@pokimane) and links (https://www.twitch.tv/twitch). Upper and lower case do not matter. - Rows come in the order of your list. A login that appears twice is looked up once.
- Search rows come in Twitch's search order, with their place in
searchRank. A channel that is already in your list is not saved twice. - A login with no active channel gets a
not_foundrow with your original line. A line that is not a Twitch login gets aninvalid_inputrow. nullmeans "Twitch did not send this value". It is never written as0.- E-mail addresses in a bio are replaced with
[email removed]. The Actor does not collect contacts.
Good for
- You have a list of streamers and need their follower counts and status in a table.
- You know the start of a channel name (for example
minecraftorspeedrun) and want every matching channel with its size. - You want an official, stable data source instead of page scraping.
Not a good fit
- You have no Twitch account with two-factor authentication. You need it to make the free key.
- You need the list of followers, viewer counts of live streams, clips or videos. This Actor gives the follower total and the channel profile only.
- You need e-mails or other contacts of streamers. This Actor does not collect them.
Who uses it
Sponsors
Compare follower counts of streamers before you reach out.
Talent scouts
Build a list of channels in a language or game.
Analysts
Track follower totals of a set of channels over time.
Price
Prices will be shown after release.
Questions
Do I need a Twitch key?
Yes. You make a free Client ID and Client Secret in the Twitch developer console. Two-factor login must be on.
Can I get the list of followers?
No. Twitch gives that list only to the channel owner. You get the follower total.
Does it show if a channel is live?
No. Game and title come from the current or last stream. Use a live streams Actor for that.
Does it return email addresses?
No. Email addresses in bios are replaced with [email removed].
Do I need a Twitch account?
Yes, to make the free key, with two-factor authentication on. The Actor does not log in to your account and does not use cookies.
Does it cost Twitch money?
No. The Twitch API is free. You pay only the Apify price above.
Is personal data included?
Only public channel data that Twitch shows on the channel page. E-mail addresses in bios are removed. No viewer data.
Details
Step by step on Apify
- Get a key (see above).
- Paste your Client ID and Client Secret.
- The Channels field already has
twitch. Add more logins or links, one per line, or type a word into Search channels. - Click Start. One channel takes about 3 seconds.
- Open the Channels view of the dataset, or download it as CSV, Excel or JSON.
Use cases
| Task | Input | Key fields | Next step |
|---|---|---|---|
| Check streamers before a sponsorship | the creators' logins | followers, broadcasterType, gameName, language | Shortlist channels of the right size and language |
| Track follower growth | the same list every week | followers, fetchedAt, userId | Chart the growth in a sheet |
| Find channels by name | searchQuery with the start of a channel name | searchRank, followers, gameName, tags | Build a list of Twitch channels to study |
| Clean a creator list | a list from a sheet or CRM | status, login, url | Remove renamed or banned channels |
| Enrich data for BI or a model | many logins | all fields | Join on userId |
Tips for better results
- Paste logins, @handles or twitch.tv links. Each form works.
- Use search with the start of a channel name to find similar channels.
- Run it weekly on the same list to see growth.
Limits and good to know
Data comes from the Twitch Helix API under your own Twitch app. Please follow the Twitch Developer Agreement. This Actor is not affiliated with or endorsed by Twitch.
- Up to 1,000 lines in
channelsand up to 1,000 search results per run. We tested both at once: 1,991 channels saved in about 218 seconds - The Actor stops looking up channels 15 seconds before the run timeout so it can save the results. It keeps the saved rows and ends as
PARTIALwith reasonTIME_LIMIT. The default timeout of 300 seconds is enough for the maximum input - If your Twitch app runs out of requests and does not get them back within about a minute, the Actor keeps the saved rows and ends as
PARTIALwith reasonQUOTA_LIMIT - If Twitch fails again and again, the run keeps saved rows and ends with reason
SOURCE_ERROR followersis live atfetchedAtand changes all the time- Twitch search matches the start of the channel login (
minecraftfindsminecraft,minecraftliveand similar). It does not search games, stream titles or bios, and finds only channels that streamed in the last 6 months. Twitch decides the order and may stop giving results beforemaxItems - A renamed, banned or deleted channel comes back as
not_found. Look it up by its new login
For developers
Sample result
One result from a real test run, in JSON. Real values change from run to run. In Excel or CSV each field is a column.
{
"status": "complete",
"input": "Shroud",
"matchedBy": "login",
"searchRank": null,
"userId": "37402112",
"login": "shroud",
"displayName": "shroud",
"description": "I'm back baby",
"broadcasterType": "partner",
"followers": 11293693,
"gameId": "771448419",
"gameName": "AION 2",
"language": "en",
"title": "NEW HARDMODE CONTENT GRINDING PHILO STONES AND PVE BOARDS",
"tags": ["English"],
"createdAt": "2012-11-03T15:50:32.000Z",
"profileImageUrl": "https://static-cdn.jtvnw.net/jtv_user_pictures/c754eebf-745b-4e0a-814a-10bcaecaabbc-profile_image-300x300.png",
"url": "https://www.twitch.tv/shroud",
"source": "twitch-helix",
"fetchedAt": "2026-10-22T06:00:53.205Z",
"message": null
}Data fields (21)
| Field | Type | Meaning |
|---|---|---|
status | string | complete = all stats found; partial = saved, but Twitch did not return some fields (see message); not_found = no active channel with this login (small empty-result fee); invalid_input = not a Twitch login (small empty-result fee); api_key_required = free notice when the Client ID or Secret is missing. |
input | string | Your channels entry as typed, or the search query for search results. |
matchedBy | string | login = from your channels list; search = from searchQuery. |
searchRank | integer | 1-based position in Twitch search results (search rows only). |
userId | string | Twitch channel (broadcaster) id; stable even when the login changes. |
login | string | Channel login, as in twitch.tv/<login>. |
displayName | string | Channel display name. |
description | string | Channel bio. E-mail addresses are replaced with [email removed]. |
broadcasterType | string | partner, affiliate or normal. |
followers | integer | Follower total reported by Twitch; null when Twitch sent no number (never a made-up 0). |
gameId | string | Twitch category id of the last or current stream; null when none is set. |
gameName | string | Category name of the last or current stream, e.g. Just Chatting. |
language | string | Broadcast language: ISO 639-1 code or other. |
title | string | Stream title set by the streamer (last or current stream). |
tags | array | Channel tags set by the streamer. |
createdAt | string | When the Twitch account was created (UTC, ISO 8601). |
profileImageUrl | string | Profile picture URL. |
url | string | Link to the channel on twitch.tv. |
source | string | Always twitch-helix: the official Twitch API. |
fetchedAt | string | When this row was fetched (UTC, ISO 8601). |
message | string | Why a row is partial, not found, invalid or a key notice; null for complete rows. |
Input settings (5)
The main fields of the input form. With the API you send them as JSON.
| Setting | Name in the API | Type | Example value |
|---|---|---|---|
| Twitch Client ID | clientId | string | |
| Twitch Client Secret | clientSecret | string | |
| Channels | channels | array | ["twitch"] |
| Search channels | searchQuery | string | |
| Max search results | maxItems | integer | 50 |