# Twitch Live Streams Scraper

> See who is live on Twitch now by game, language or channel list: viewers, title, tags and uptime. Official Twitch API with your own free key.

URL: https://cliqtomedia.com/actors/twitch-streams/

Category: Video, audio & streaming · Status: coming soon · Apify profile: https://apify.com/cliqtomedia?fpr=cliqto

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.

## How to use it: 3 steps

1. **Follow us on Apify.** The 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 Start.** No 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 results.** When 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.

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

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

## Data fields

- `status` (string): live = a stream that is live now; api_key_required = free notice row when the Client ID or Secret is missing.
- `rank` (integer): Order in which the stream was saved, 1 = most viewers (Twitch returns streams most-watched first).
- `streamId` (string): Twitch stream id (changes with every broadcast).
- `userId` (string): Twitch channel (broadcaster) id; stable.
- `userLogin` (string): Channel login, as in twitch.tv/<login>.
- `userName` (string): Channel display name.
- `channelUrl` (string): Link to the channel on twitch.tv.
- `gameId` (string): Twitch category id; null when the streamer set no category.
- `gameName` (string): Category name, e.g. Just Chatting; null when none is set.
- `title` (string): Stream title set by the streamer.
- `viewerCount` (integer): Viewers at the time of the request; null if Twitch sent no number (never a made-up 0).
- `language` (string): Stream language: ISO 639-1 code or other.
- `startedAt` (string): When the broadcast started (UTC, ISO 8601).
- `uptimeMinutes` (integer): Minutes live at fetchedAt.
- `tags` (array): Tags the streamer set; empty list when none.
- `isMature` (boolean): Streamer marked the stream as for mature audiences.
- `thumbnailUrl` (string): Live preview image, 1280x720, refreshed by Twitch every few minutes.
- `source` (string): Always twitch-helix (official Twitch Helix API).
- `fetchedAt` (string): When the Actor read this stream (UTC, ISO 8601).
- `message` (string): Explanation on the api_key_required row; null on stream rows.

## Input settings

- `clientId` (string): Client ID of your own Twitch application from dev.twitch.tv/console/apps. Stored encrypted; never written to the dataset, logs or run summary.
- `clientSecret` (string): Client Secret of the same app (Manage → New Secret). Stored encrypted; the short-lived app token made from it is revoked at the end of the run.
- `gameNames` (array): Twitch category names exactly as on twitch.tv/directory, e.g. Just Chatting, Fortnite, League of Legends. Up to 100. Unknown names are listed in the run summary, not guessed. Empty = all categories.
- `languages` (array): Language codes of the stream, e.g. en, es, de, pt, ja, zh, zh-hk (Cantonese), asl (sign language), or other. Empty = any language.
- `userLogins` (array): Channel logins or twitch.tv links to check, up to 500. Only channels that are live right now are returned. Empty = any channel.
- `minViewers` (integer): Keep only streams with at least this many viewers. Paging stops as soon as viewers drop below it, so a high value is fast and cheap.
- `maxStreams` (integer): Stop after this many saved streams, most-watched first. Each saved stream is one paid result.

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

| Task | Input | You get | Key fields | Next step |
|---|---|---|---|---|
| Scout streamers in a game and language | `gameNames`, `languages`, `minViewers` | live stream | `userLogin`, `viewerCount`, `language`, `channelUrl` | export to a sheet or CRM |
| Check which of my channels are live | `userLogins` | live stream | `userLogin`, `viewerCount`, `uptimeMinutes`, `title` | schedule + webhook |
| Watch a category over time | `gameNames`, `maxStreams` | live stream | `rank`, `viewerCount`, `startedAt`, `fetchedAt` | schedule, append to your database |
| Find streams with a theme | `gameNames`, then filter `tags` | live stream | `tags`, `title`, `isMature` | export |

## Tips

- 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



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

## Sample 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
}
```

## Similar tools

- [YouTube Subtitles & Transcript Scraper API](https://cliqtomedia.com/actors/youtube-transcript-scraper/)
- [YouTube Comments Scraper](https://cliqtomedia.com/actors/youtube-comments-scraper/)
- [Apple Podcast Directory & RSS Contacts Scraper](https://cliqtomedia.com/actors/podcast-directory-rss-contacts-scraper/)
- [Audio & Podcast Transcriber (Speech to Text)](https://cliqtomedia.com/actors/audio-video-transcriber/)
- [Social Video Downloader: TikTok, Instagram, X - No Login](https://cliqtomedia.com/actors/social-video-downloader/)
- [YouTube Search Results Scraper — No Login](https://cliqtomedia.com/actors/youtube-search-scraper/)
