Video & audio · Coming soon

Twitch Live Streams Scraper

Find who is live on Twitch right now. Filter by game, language, channel or minimum viewers. Each row is one stream with viewers, title, tags and uptime. You use your own free Twitch key.

Built and tested. Prices will be shown after release.

Coming soon to the Apify StoreFollow us on Apify

What you get, for example

streamId317712016119
userId596247354
userLogine11ysa

How it will work: 3 steps

  1. 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.
  2. Paste your input and press StartNo code needed: you fill in a form (the input). It already has a working example. For example: Just Chatting in Games / categories. Each start is one run.
  3. 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 Live Streams Scraper finds who is live on Twitch right now in a game, a language or a list of channels, and returns one row per stream with viewers, title, tags, uptime and channel link from the official Twitch API, using your own free Twitch key.

Good for

  • Find the biggest live streams in a game, for example all English VALORANT streams with 1,000+ viewers.
  • Build a list of Spanish, German or Japanese streamers who are live now in a category.
  • Check which channels from your own list (up to 500) are live, with viewers and uptime.
  • Run it on a schedule and keep a history of who streams what and when.

Not a good fit

  • Only streams that are live right now. Offline channels, past broadcasts, clips and VODs are not returned.
  • No follower counts, channel bios or chat messages.
  • You need your own Twitch app (free, takes about 2 minutes). Without it the Actor returns one free notice row.
  • At most 10,000 streams per run.

Who uses it

Sponsors

Find big live streams in a game, like English streams with many viewers.

Community managers

List Spanish, German or Japanese streamers who are live now.

Analysts

Run it on a schedule to keep a history of who streams what.

Price

Prices will be shown after release.

Questions

Do I need a Twitch key?

Yes. You make a free app at dev.twitch.tv. Without it you get one free notice row.

Does it show offline channels?

No. It returns streams that are live right now. No clips, VODs or chat.

How many streams can I get?

Up to 10,000 per run. Twitch sends the most watched streams first.

Do viewer counts change?

Yes. Each row shows what Twitch reported at fetchedAt. Run again for new numbers.

Do I need to pay Twitch?

No. The Twitch API is free. You only need a Twitch account with two-factor authentication and a free app at dev.twitch.tv.

Is my key safe?

The key fields are secret inputs, stored encrypted by Apify. The Actor never writes them to the Dataset, the log or the run summary. The access token made from your key lives only during the run and is cancelled at the end.

How fresh is the data?

Each row is what Twitch reported at fetchedAt. Viewer counts and titles change all the time, so run the Actor again (or on a schedule) for new numbers.

Can I get all live streams of a big category?

Up to 10,000 per run. Twitch sends the most-watched streams first, so you always get the top of the list.

Can I use the data commercially?

Twitch's developer agreement covers how you use the data from your own Twitch app. It allows caching Twitch data for up to 24 hours and asks you to credit Twitch. Every row has source and a twitch.tv channelUrl for this. Please read the Twitch Developer Agreement for your case.

Details

Step by step on Apify
  1. Open the Input tab.
  2. Paste your Twitch Client ID (clientId) and Twitch Client Secret (clientSecret).
  3. Keep the prefilled Games / categories (gameNames) value Just Chatting and Max streams (maxStreams) value 20, or type your own game.
  4. Click Start.
  5. Open the Output tab and check the Live streams table: userName, viewerCount and title for each stream.
Use cases
TaskInputYou getKey fieldsNext step
Scout streamers in a game and languagegameNames, languages, minViewerslive streamuserLogin, viewerCount, language, channelUrlexport to a sheet or CRM
Check which of my channels are liveuserLoginslive streamuserLogin, viewerCount, uptimeMinutes, titleschedule + webhook
Watch a category over timegameNames, maxStreamslive streamrank, viewerCount, startedAt, fetchedAtschedule, append to your database
Find streams with a themegameNames, then filter tagslive streamtags, title, isMatureexport
Tips for better results
  • Set a minimum viewer count to skip small streams.
  • Check your own list of up to 500 channels to see who is live.
  • Use fetchedAt and streamId to join data from many runs.
Limits and good to know
  • The start fee (apify-actor-start) is charged by Apify for every run, also for a run without a key, a run where nothing is live and a run with wrong category names. These runs save no paid rows
  • The api_key_required notice row is free
  • Offline channels and unknown categories create no rows and cost nothing beyond the start fee
  • A run that stops early (for example at your maximum cost) charges only the rows it saved
  • Platform usage (compute, storage) is included in these prices
  • Up to 10,000 streams per run; a 10,000-stream run took under a minute in our tests
  • Up to 100 category names, 100 languages and 500 channels per run
  • About 800 Twitch API points per minute for your app. If they run out mid-run, the Actor keeps the saved rows and ends with stopReason: QUOTA_LIMIT

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.

one result · JSON
{
  "status": "live",
  "rank": 3,
  "streamId": "317712016119",
  "userId": "596247354",
  "userLogin": "e11ysa",
  "userName": "E11ysa",
  "channelUrl": "https://www.twitch.tv/e11ysa",
  "gameId": "509658",
  "gameName": "Just Chatting",
  "title": "GOING BLONDE!! !vote",
  "viewerCount": 4674,
  "language": "en",
  "startedAt": "2026-10-22T01:52:06.000Z",
  "uptimeMinutes": 226,
  "tags": ["English", "DropsEnabled"],
  "isMature": false,
  "thumbnailUrl": "https://static-cdn.jtvnw.net/previews-ttv/live_user_e11ysa-1280x720.jpg",
  "source": "twitch-helix",
  "fetchedAt": "2026-10-22T05:38:08.220Z",
  "message": null
}
Data fields (20)
FieldTypeMeaning
statusstringlive = a stream that is live now; api_key_required = free notice row when the Client ID or Secret is missing.
rankintegerOrder in which the stream was saved, 1 = most viewers (Twitch returns streams most-watched first).
streamIdstringTwitch stream id (changes with every broadcast).
userIdstringTwitch channel (broadcaster) id; stable.
userLoginstringChannel login, as in twitch.tv/<login>.
userNamestringChannel display name.
channelUrlstringLink to the channel on twitch.tv.
gameIdstringTwitch category id; null when the streamer set no category.
gameNamestringCategory name, e.g. Just Chatting; null when none is set.
titlestringStream title set by the streamer.
viewerCountintegerViewers at the time of the request; null if Twitch sent no number (never a made-up 0).
languagestringStream language: ISO 639-1 code or other.
startedAtstringWhen the broadcast started (UTC, ISO 8601).
uptimeMinutesintegerMinutes live at fetchedAt.
tagsarrayTags the streamer set; empty list when none.
isMaturebooleanStreamer marked the stream as for mature audiences.
thumbnailUrlstringLive preview image, 1280x720, refreshed by Twitch every few minutes.
sourcestringAlways twitch-helix (official Twitch Helix API).
fetchedAtstringWhen the Actor read this stream (UTC, ISO 8601).
messagestringExplanation on the api_key_required row; null on stream rows.
Input settings (7)

The main fields of the input form. With the API you send them as JSON.

SettingName in the APITypeExample value
Twitch Client IDclientIdstring
Twitch Client SecretclientSecretstring
Games / categoriesgameNamesarray["Just Chatting"]
Stream languageslanguagesarray
ChannelsuserLoginsarray
Min viewersminViewersinteger0
Max streamsmaxStreamsinteger20

Start on Apify

Make a free Apify account: you get $5 of free usage every month. Missing a tool? Suggest it. We read every idea, but we do not promise to build it.

Apify links on this page are affiliate links. We may earn a commission. You pay the same price. Affiliate disclosure