# Twitch Scraper: Channels, Live Streams, VODs and Clips (`themineworks/twitch-scraper`) Actor

Scrape public Twitch data without a login: channels with followers, partner status, live stream, last broadcast, schedule and social links; live streams by category and language; VODs; clips; top categories. Pay per row.

- **URL**: https://apify.com/themineworks/twitch-scraper.md
- **Developed by:** [The Mine Works](https://apify.com/themineworks) (community)
- **Categories:** Social media, Videos, Lead generation
- **Stats:** 1 total users, 0 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.09 / 1,000 rows

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Twitch Scraper: Channels, Live Streams, VODs and Clips

[![762 live Twitch streams in 9 seconds](https://api.apify.com/v2/key-value-stores/cUXz95yxflDho41nn/records/twitch-scraper-hero.png)](https://console.apify.com/actors/Q6U4KvgKFaM0Pql6z/input?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

From **The Mine Works**, makers of [Threads Scraper](https://apify.com/themineworks/threads-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral) and [B2B Leads Finder](https://apify.com/themineworks/b2b-leads-finder?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral), with over 140,000 runs across 170+ public actors.

### Why choose this actor?

- **Five Twitch jobs in one actor, without a login or API key.** Channels, live streams by category and language, videos (VODs), clips, and the top categories. Our proof run listed **762 live streams in 9.4 seconds**: four categories (Just Chatting, Fortnite, Grand Theft Auto V, League of Legends) in English and Spanish, 359,552 viewers between them. No Twitch account, no OAuth token, no Helix app.
- **Channel rows built for outreach and research.** Followers, partner or affiliate status, live right now (with title, viewers, category and tags), last broadcast, the stream schedule, and every link in the channel's about panels with the social profiles picked out. For 20 big channels in our proof run: 20 of 20 partners, 18 with social links, 7 live at the time, 180,558,874 followers between them, read in one request.
- **You pay only for rows you receive.** One charge per channel, stream, video, clip or category row saved to your dataset, plus a flat start fee per run. Channels and categories that do not exist (our proof runs had one of each, reported as not found), repeats and refused requests are never charged.

[![Run it on Apify](https://api.apify.com/v2/key-value-stores/cUXz95yxflDho41nn/records/button-run.png)](https://console.apify.com/actors/Q6U4KvgKFaM0Pql6z/input?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Part of The Mine Works Social media and video family:** [Threads Scraper](https://apify.com/themineworks/threads-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral), [Reddit Scraper](https://apify.com/themineworks/reddit-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral), [Threads Search Scraper](https://apify.com/themineworks/threads-search-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral), [Instagram Profile Scraper](https://apify.com/themineworks/instagram-profile-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral), [Instagram Followers & Following](https://apify.com/themineworks/instagram-followers-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral), [Reddit Search Scraper](https://apify.com/themineworks/reddit-search-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral).

### Try it in one minute

Paste this input and press Start. It returns 20 channel rows with followers, live status, schedule and social links, in about 3 seconds:

```json
{
  "mode": "channels",
  "channels": ["shroud", "pokimane", "ninja", "xqc", "kaicenat", "ibai", "hasanabi", "tfue", "summit1g", "lirik",
    "sodapoppin", "timthetatman", "nickmercs", "drlupo", "valkyrae", "amouranth", "tarik", "caseoh_", "jynxzi", "zackrawrr"]
}
```

Pick the job with `mode`, then fill the field that mode reads:

- **channels**, **videos** and **clips** read `channels`: a channel name (`shroud`), an `@name`, or a channel link (`https://www.twitch.tv/shroud`, any sub page such as `/videos` or `/about`).
- **streams** reads `categories`: a category name (`Just Chatting`), a slug (`just-chatting`) or a directory link (`https://www.twitch.tv/directory/category/just-chatting`). Leave it empty for live streams across all of Twitch.
- **top_categories** needs nothing else.

Apify's free plan includes $5 of credit every month, which covers about 2,400 results at this actor's price.

#### Copy to your AI assistant

```text
themineworks/twitch-scraper on Apify. Reads public Twitch data without a login: channels (followers, partner or affiliate, live stream with viewers, last broadcast, schedule, about panel links and social links), live streams of categories or of all Twitch (viewers, title, tags, language, start time, broadcaster followers), a channel's videos, a channel's clips, and the top categories by viewers. Call ApifyClient("TOKEN").actor("themineworks/twitch-scraper").call(run_input={"mode": "channels", "channels": ["shroud", "pokimane"]}), then client.dataset(run["defaultDatasetId"]).list_items().items. Required: mode (channels, streams, videos, clips or top_categories). Optional: channels (names or links), categories (names, slugs or directory links; empty for all Twitch), maxResults (default 50, 20 to 100), languages (codes such as en, es), streamSort (viewers_high, viewers_low or recent), tag, videoType (all, archive, highlight, upload), videoSort (time or views), clipPeriod (last_day, last_week, last_month, all_time), clipSort (views or trending). Skip rows that have "_type": "status". Full spec: GET https://api.apify.com/v2/acts/themineworks~twitch-scraper/builds/default (Bearer TOKEN), which returns inputSchema and readme. Token: https://console.apify.com/account/integrations?fpr=ymnoit&utm_source=apify-readme&utm_medium=referral
```

### Key features

- **Five modes**: `channels`, `streams`, `videos`, `clips` and `top_categories`, each with its own row shape, in one actor and one price.
- **Channel rows with 39 fields**: id, name, link, bio, followers, partner or affiliate, created date, images and accent color; live status with stream title, viewers, start time, category and tags; the channel's title, category and language settings; last broadcast; next scheduled stream and the rest of this week's schedule; about panel links and social links (X, Instagram, YouTube, TikTok, Discord, Kick and others). 20 channels per request.
- **Live streams the way the directory shows them**: per category, per language (each language its own list), sorted by most viewers, fewest viewers (small and new streamers) or most recently started, optionally only streams with one tag. Each row has viewers, title, start time, language, tags, mature flag, preview image, and the broadcaster's followers and partner status.
- **Videos and clips**: a channel's past broadcasts, highlights and uploads, newest or most viewed, with length and views; its clips for the last day, week, month or all time, most viewed or trending, with views, length, who clipped it, and a link into the original video at the clip's moment.
- **Top categories**: up to 100 categories by current viewers, with live channel count, followers, tags and box art.
- **What Twitch allows a logged out visitor, stated plainly**: every list (streams, videos, clips, categories) is its first page, up to 100 items per query; Twitch asks for a browser integrity token for any next page, which this actor does not generate. Across all of Twitch (no category), Twitch caps the list at 30 per language.

### How to use it

#### Basic: channel profiles

```json
{
  "mode": "channels",
  "channels": ["shroud", "https://www.twitch.tv/pokimane", "@ninja"]
}
```

One row per channel, 20 channels per request, up to 500 per run. A channel that does not exist gets a free status row.

#### Live streams in a few categories, in two languages

```json
{
  "mode": "streams",
  "categories": ["Just Chatting", "Fortnite", "https://www.twitch.tv/directory/category/grand-theft-auto-v", "League of Legends"],
  "languages": ["en", "es"],
  "maxResults": 100
}
```

This is our proof input: 8 lists (4 categories, 2 languages), 762 live streams in 9.4 seconds. Each category and language pair is its own list of up to 100 streams, most viewers first.

#### Find small streamers to work with

```json
{
  "mode": "streams",
  "categories": ["Fortnite"],
  "languages": ["en"],
  "streamSort": "viewers_low",
  "maxResults": 50
}
```

Fewest viewers first: in our test all 47 English Fortnite streams returned had 0 to 2 viewers. Add `tag` (for example `vtuber`) to narrow the niche, then run `channels` on the names you pick to get their followers and social links.

#### Live streams across all of Twitch

```json
{
  "mode": "streams",
  "categories": [],
  "languages": ["en", "es", "de", "fr", "ja"]
}
```

With no category, Twitch lists at most 30 streams per language: our test returned 147 streams for these 5 languages.

#### A channel's videos and clips

```json
{
  "mode": "videos",
  "channels": ["shroud", "pokimane"],
  "videoType": "archive",
  "videoSort": "views",
  "maxResults": 100
}
```

```json
{
  "mode": "clips",
  "channels": ["shroud", "kaicenat"],
  "clipPeriod": "all_time",
  "clipSort": "views",
  "maxResults": 100
}
```

Up to 100 videos or clips per channel and query. For more of a channel's videos, run each `videoType` (past broadcasts, highlights, uploads) or both sort orders; for more clips, run each `clipPeriod`.

#### Category popularity tracking

```json
{
  "mode": "top_categories",
  "maxResults": 100
}
```

Schedule it every hour in Apify Console (Schedules, then Add schedule) and chart `viewers` and `live_channels` per category over the day.

#### Sponsor and agency prospecting

Run `streams` with `viewers_low` or `viewers_high` in the categories your client cares about, then `channels` on the names you shortlist: each channel row carries followers, partner status, schedule and social links, enough to qualify and contact through public channels.

### Input parameters

| Parameter | Type | Default | What it does |
|---|---|---|---|
| `mode` | string | `channels` | `channels`, `streams`, `videos`, `clips` or `top_categories`. Required. |
| `channels` | array of strings | `["shroud", "pokimane"]` | channels, videos and clips: channel names, @names or channel links. Up to 500 per run. |
| `categories` | array of strings | `["Just Chatting"]` | streams: category names, slugs or directory links; empty for all of Twitch. Up to 500 per run. |
| `maxResults` | integer | `50` | Streams, videos, clips or categories per list, 20 to 100. |
| `languages` | array of strings | none | streams: two letter codes such as `en`, `es`; each language is its own list. |
| `streamSort` | string | `viewers_high` | streams: `viewers_high`, `viewers_low` or `recent`. |
| `tag` | string | none | streams: only streams with this tag, for example `vtuber`. |
| `videoType` | string | `all` | videos: `all`, `archive` (past broadcasts), `highlight` or `upload`. |
| `videoSort` | string | `time` | videos: `time` (newest first) or `views`. |
| `clipPeriod` | string | `last_week` | clips: `last_day`, `last_week`, `last_month` or `all_time`. |
| `clipSort` | string | `views` | clips: `views` or `trending`. |

There is no proxy setting: the actor always reads through Apify's datacenter proxy, which is included in the price.

### What data do you get?

One row per channel, stream, video, clip or category, told apart by `record_type`. Every row says which `source_mode` and `source_input` produced it and its `position` in its list. Rows about a channel share `channel_id`, `login`, `display_name` and `channel_url`.

**Channel rows**: `description`, `followers_count`, `broadcaster_type`, `is_partner`, `is_affiliate`, `created_at`, `profile_image_url`, `banner_image_url`, `offline_image_url`, `primary_color`; live status `is_live`, `stream_id`, `stream_title`, `stream_viewers`, `stream_started_at`, `stream_category`, `stream_tags`; channel settings `title`, `category_name`, `language`, `is_mature`; `last_broadcast_at`, `last_broadcast_title`, `last_broadcast_category`; schedule `next_stream_at`, `next_stream_title`, `next_stream_category`, `schedule_upcoming`; `panel_links` and `social_links`.

**Stream rows**: `stream_id`, `title`, `viewers`, `started_at`, `language`, `tags`, `is_mature`, `stream_type`, `preview_image_url`, `category_id`, `category_name`, `followers_count`, `broadcaster_type`, and `query_language` when you set languages.

**Video rows**: `video_id`, `video_url`, `title`, `created_at`, `published_at`, `length_seconds`, `view_count`, `video_type`, `category_id`, `category_name`, `thumbnail_url`.

**Clip rows**: `clip_id`, `clip_slug`, `clip_url`, `title`, `view_count`, `created_at`, `duration_seconds`, `language`, `thumbnail_url`, `curator_login`, `curator_display_name`, `category_id`, `category_name`, `vod_id`, `vod_offset_seconds`, `vod_url`, `clip_period`, `clip_sort`.

**Category rows**: `category_id`, `category_name`, `category_slug`, `category_url`, `viewers`, `live_channels`, `followers_count`, `box_art_url`, `tags`, `release_date`.

All times are UTC in ISO 8601. In our proof runs every stream, video and clip row had its id, link, title, counts and time filled; 95% of clips named their category and 62% still linked to the video they were cut from (Twitch deletes past broadcasts after a while).

#### Stable fields for automations

These fields were present in every row of their type in the proof runs (762 streams, 20 channels, 200 videos, 200 clips, 99 categories):

| Field | Rows | What it holds |
|---|---|---|
| `record_type` | all | channel, stream, video, clip or category |
| `source_input` | all | The channel, category or list you asked for |
| `login` | channel, stream, video, clip | Channel name as in its link |
| `channel_url` | channel, stream, video, clip | Link to the channel |
| `followers_count` | channel, stream, category | Followers |
| `is_live` | channel | Live at run time |
| `broadcaster_type` | channel, stream | partner, affiliate or none |
| `stream_id` | stream | Live stream id |
| `viewers` | stream, category | Viewers at run time |
| `started_at` | stream | When the stream started |
| `title` | stream, video, clip | Title |
| `video_url` | video | Link to the video |
| `clip_url` | clip | Link to the clip |
| `view_count` | video, clip | Views |
| `category_name` | stream, video, category | Category (game) name |

These names will not change. New fields may be added; existing ones keep their name and meaning.

#### Output examples

Five real rows from the proof runs, with image links left out.

##### Channel, live at the time (shroud)

```json
{
  "record_type": "channel",
  "source_mode": "channels",
  "source_input": "shroud",
  "channel_id": "37402112",
  "login": "shroud",
  "display_name": "shroud",
  "channel_url": "https://www.twitch.tv/shroud",
  "description": "I'm back baby",
  "followers_count": 11293974,
  "broadcaster_type": "partner",
  "created_at": "2012-11-03T15:50:32.878Z",
  "primary_color": "#00ADFF",
  "is_live": true,
  "stream_viewers": 15347,
  "stream_started_at": "2026-10-05T16:32:04.000Z",
  "stream_category": "AION 2",
  "stream_tags": ["English", "DropsEnabled"],
  "title": "NEW DROPS + F2P LAUNCH + LUDRA REMOVED + 2350+ SORC + CHANTER ALT + !AION2 #AION2Global #sponsored",
  "category_name": "AION 2",
  "language": "en",
  "last_broadcast_at": "2026-10-05T16:32:09.230Z",
  "next_stream_at": "2026-10-06T18:00:00.000Z",
  "schedule_upcoming": ["2026-10-05T18:00:00.000Z", "2026-10-06T18:00:00.000Z", "2026-10-08T18:00:00.000Z", "2026-10-09T18:00:00.000Z", "2026-10-10T18:00:00.000Z"],
  "panel_links": ["https://gsght.com/c/cf8z7g", "https://load.gg/shroudLogitech", "https://www.youtube.com/shroud", "https://pally.gg/p/shroud", "https://streamelements.com/shroud/tip", "https://twitter.com/shroud", "https://www.instagram.com/shroud/"],
  "social_links": ["https://www.youtube.com/shroud", "https://twitter.com/shroud", "https://www.instagram.com/shroud/"]
}
```

##### Live stream in a category (Fortnite, Spanish list)

```json
{
  "record_type": "stream",
  "source_mode": "streams",
  "source_input": "Fortnite",
  "position": 1,
  "query_language": "es",
  "stream_id": "317947822563",
  "channel_id": "185913819",
  "login": "recuerd0p",
  "display_name": "Recuerd0p",
  "channel_url": "https://www.twitch.tv/recuerd0p",
  "title": "✅*[!DROPS ACTIVOS]* Jugando en EXCLUSIVA con la SKIN de HALLOWEEN HORROR NIGHTS 🤡🎁 | CODIGO: RECU en tienda de FORTNITE! #epicpartner",
  "viewers": 598,
  "started_at": "2026-10-05T20:17:31.000Z",
  "language": "es",
  "tags": ["Fortnite", "directo", "DirectoJugando", "fortnitegameplay", "Español", "epicpartner", "DropsActivados"],
  "is_mature": false,
  "stream_type": "live",
  "category_id": "33214",
  "category_name": "Fortnite",
  "followers_count": 353181,
  "broadcaster_type": "partner"
}
```

##### Past broadcast (pokimane)

```json
{
  "record_type": "video",
  "source_input": "pokimane",
  "video_id": "2886637167",
  "video_url": "https://www.twitch.tv/videos/2886637167",
  "title": "im sorry",
  "created_at": "2026-09-28T20:32:09.000Z",
  "length_seconds": 373,
  "view_count": 41567,
  "video_type": "archive",
  "category_name": "Just Chatting",
  "login": "pokimane",
  "channel_url": "https://www.twitch.tv/pokimane"
}
```

##### Most viewed clip of all time (shroud)

```json
{
  "record_type": "clip",
  "source_input": "shroud",
  "clip_id": "2358589597",
  "clip_url": "https://www.twitch.tv/shroud/clip/TangentialBillowingJalapenoYee-ccA2oB1pEYh4CHWJ",
  "title": "F Shroud",
  "view_count": 563072,
  "created_at": "2023-06-02T11:41:50.000Z",
  "duration_seconds": 28,
  "curator_login": "pato_bolado",
  "category_name": "Diablo IV",
  "vod_id": "1835200464",
  "vod_offset_seconds": 48930,
  "vod_url": "https://www.twitch.tv/videos/1835200464?t=13h35m30s",
  "clip_period": "all_time",
  "clip_sort": "views"
}
```

##### Top category (Just Chatting)

```json
{
  "record_type": "category",
  "source_mode": "top_categories",
  "position": 1,
  "category_id": "509658",
  "category_name": "Just Chatting",
  "category_slug": "just-chatting",
  "category_url": "https://www.twitch.tv/directory/category/just-chatting",
  "viewers": 434791,
  "live_channels": 5541,
  "followers_count": 53241384,
  "tags": ["IRL"]
}
```

### Pricing

Pay per event: you pay for each row delivered to your dataset (a channel, stream, video, clip or category), plus a flat $0.005 per run, whatever memory you choose. Nothing else is billed: no proxy add-on, no charge per request.

| Event | Free plan | Bronze (Starter) | Silver (Scale) | Gold (Business) and above |
|---|---|---|---|---|
| Row delivered, per 1,000 rows | $1.99 | $1.69 | $1.39 | $1.09 |
| Run start, once per run | $0.005 | $0.005 | $0.005 | $0.005 |

**Never charged:** channels and categories that do not exist, lines that are not channel names or category links, a channel or stream listed twice, requests Twitch refuses, and the status rows that explain a target with no results (for example a category with nobody live in your language). A run that delivers nothing costs only the start fee.

To cap a run's cost, set Maximum cost per run in the run options; the actor stops delivering, and charging, when that budget is used.

### FAQ

#### What does this actor read?

Twitch's GraphQL endpoint (gql.twitch.tv), the one the twitch.tv website itself calls, with the public Client-ID the website sends for a visitor who is not logged in. It reads public channel, stream, video, clip and category data only.

#### Do I need a Twitch account, an API key or an OAuth token?

No. The actor never logs in and needs no Twitch developer app, client secret or token from you. Nothing it does can affect an account of yours.

#### Why at most 100 items per list?

Twitch serves a logged out visitor the first page of every list, up to 100 items, and asks for a browser integrity token for every next page. This actor does not generate integrity tokens, so each list stops at its first page: 100 streams per category and language (30 across all of Twitch), 100 videos or clips per channel and query, 100 categories. To cover more, split the work into more lists: more languages for streams, each video type or sort order for videos, each period for clips.

#### Why are there no social links for some channels?

Twitch keeps a channel's social link block behind the same integrity token, so the actor reads the links the streamer put in their about panels and bio instead, and picks out the social profiles (X, Instagram, YouTube, TikTok, Discord, Kick, Facebook, Reddit and others) into `social_links`. All panel links stay in `panel_links`. In our proof run 18 of 20 big channels had social links this way; a channel without panels or links in its bio has none.

#### How fresh is the data?

Live. Every run reads Twitch at that moment: viewers, live status and follower counts are as of the run. Run on a schedule to track them over time.

#### Do I need my own proxy?

No. Requests go through Apify's datacenter proxy, which is included in the price. In our proof runs Twitch answered every request; it sometimes answers a list with a "service error", and the actor retries those on a new IP (2 of 5 video requests in one test, all recovered).

#### What happens with a channel or category that does not exist?

It gets a free status row (`_type: status`) that says not found, nothing is charged for it, and the other targets still run. A category with nobody live (in your language) gets a no_results status row, also free.

#### Does it include chat messages, subscribers or emails?

No. It returns what Twitch shows publicly on channel, stream, video, clip and category pages. Chat logs, subscriber counts and private contact details are not included; a business email a streamer typed into their bio stays inside `description`, unparsed.

#### Can I schedule it?

Yes. Schedule any input in Apify Console (Schedules, then Add schedule): hourly `top_categories` for category trends, daily `channels` for follower growth, or `streams` with `viewers_low` to find new small streamers in your niche every day.

#### In what formats can I export the data?

From the dataset: JSON, CSV, Excel, XML, HTML table or RSS, from Console or the API. In CSV and Excel the list fields (`tags`, `stream_tags`, `panel_links`, `social_links`, `schedule_upcoming`) are flattened into columns.

#### Can I use it from Claude, ChatGPT or another AI assistant?

Yes, through Apify's MCP server.

- Connector URL: https://mcp.apify.com/?tools=themineworks/twitch-scraper
- Claude: Settings > Connectors > Add custom connector, paste the URL, sign in with Apify.
- ChatGPT: turn on developer mode, add an MCP connector with the URL, sign in with Apify.
- Cursor or VS Code: add it as an HTTP MCP server with that URL.
- Claude Code: `claude mcp add -t http twitch-scraper "https://mcp.apify.com/?tools=themineworks/twitch-scraper"`

#### Is it legal to scrape Twitch?

The actor collects only public data that Twitch shows to anyone without logging in, and it does not log in or bypass any login. You are responsible for how you use the data: check Twitch's terms for your use case and the data protection laws that apply to you, such as GDPR and CCPA, especially when you contact streamers or store data about them.

### Integrations

- **Google Sheets**: send each run's dataset to a sheet with Apify's Google Sheets integration, one row per channel or stream.
- **Make, Zapier and n8n**: start a run and read its dataset with the Apify apps and nodes, for example to add new small streamers in your category to a CRM.
- **Webhooks**: have Apify call your URL when a run finishes, then fetch the dataset.
- **API**: start runs and read results from any language with the Apify API or the Python and JavaScript clients (see "Copy to your AI assistant" above).
- **MCP clients**: Claude, ChatGPT, Cursor, VS Code and Claude Code, through the connector URL in the FAQ.

### More from The Mine Works

**Social media and video**

- [Threads Scraper](https://apify.com/themineworks/threads-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Reddit Scraper](https://apify.com/themineworks/reddit-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Threads Search Scraper](https://apify.com/themineworks/threads-search-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Instagram Profile Scraper](https://apify.com/themineworks/instagram-profile-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Instagram Followers & Following](https://apify.com/themineworks/instagram-followers-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Reddit Search Scraper](https://apify.com/themineworks/reddit-search-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Twitter / X Scraper](https://apify.com/themineworks/twitter-x-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [YouTube Transcript](https://apify.com/themineworks/youtube-transcript-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Xiaohongshu (RED) Scraper](https://apify.com/themineworks/xiaohongshu-explore-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Telegram Channel Scraper](https://apify.com/themineworks/telegram-channel-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Telegram Channel Finder](https://apify.com/themineworks/telegram-channel-finder?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Pinterest Profile Scraper](https://apify.com/themineworks/pinterest-profile-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Leads and business directories**

- [B2B Leads Finder](https://apify.com/themineworks/b2b-leads-finder?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Skip Trace Lookup](https://apify.com/themineworks/skip-trace-lookup?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Google Maps Email Scraper](https://apify.com/themineworks/maps-leads?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [2GIS Places Scraper](https://apify.com/themineworks/2gis-places-search?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Marketing, SEO and reviews**

- [Facebook Ad Library Scraper](https://apify.com/themineworks/meta-ad-library-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Google Ads Transparency Scraper](https://apify.com/themineworks/google-ads-transparency?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Similarweb Scraper](https://apify.com/themineworks/similarweb-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Google News Scraper](https://apify.com/themineworks/google-news?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**LinkedIn**

- [LinkedIn Company Scraper](https://apify.com/themineworks/linkedin-company-details?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [LinkedIn Post Scraper](https://apify.com/themineworks/linkedin-post-search?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [LinkedIn Employees Scraper](https://apify.com/themineworks/linkedin-employees?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [LinkedIn Profile Scraper](https://apify.com/themineworks/linkedin-profile-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Real estate**

- [Zillow Rentals Scraper](https://apify.com/themineworks/zillow-rental-listings?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Zillow Sold Comps Scraper](https://apify.com/themineworks/zillow-recently-sold?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [India Real Estate MCP](https://apify.com/themineworks/india-real-estate-mcp?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Housing.com Scraper](https://apify.com/themineworks/housing-com-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Science, health and government data**

- [Academic Research MCP](https://apify.com/themineworks/academic-research-mcp?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [CourtListener Scraper](https://apify.com/themineworks/courtlistener-court-records?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Socrata Open Data Scraper](https://apify.com/themineworks/socrata-open-data?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [OpenAlex Scraper](https://apify.com/themineworks/openalex-scholarly-works?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Jobs and hiring**

- [Foundit Monster India Jobs](https://apify.com/themineworks/foundit-jobs-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Hirist Jobs Scraper](https://apify.com/themineworks/hirist-jobs-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [India Jobs MCP](https://apify.com/themineworks/india-jobs-mcp?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Naukri Jobs Scraper](https://apify.com/themineworks/naukri-jobs?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Company and business data**

- [Company Domain Finder](https://apify.com/themineworks/company-domain-finder?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [GST Taxpayer Lookup](https://apify.com/themineworks/gst-taxpayer-lookup?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Company KYB Resolver](https://apify.com/themineworks/company-identity-resolver?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [SEC EDGAR Filings Scraper](https://apify.com/themineworks/sec-edgar-filings?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**E-commerce and marketplaces**

- [Ozon.ru Scraper](https://apify.com/themineworks/ozon-product-search?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [⭐ Amazon Reviews Scraper](https://apify.com/themineworks/amazon-reviews?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Amazon Product Scraper](https://apify.com/themineworks/amazon-products?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Etsy Listings Scraper](https://apify.com/themineworks/etsy-search-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Food and local services**

- [NoBroker Scraper](https://apify.com/themineworks/nobroker-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Swiggy Restaurant Scraper](https://apify.com/themineworks/swiggy-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Zomato Scraper](https://apify.com/themineworks/zomato-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Developer and AI tools**

- [Website to Markdown Crawler](https://apify.com/themineworks/rag-crawler?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [GitHub Skill Finder](https://apify.com/themineworks/github-skill-discovery?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [GitHub Repo Scraper](https://apify.com/themineworks/github-repo-intelligence?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [GitHub Trending Scraper](https://apify.com/themineworks/github-trending-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**More tools**

- [G2 Reviews Scraper](https://apify.com/themineworks/g2-reviews-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Naver Blog Scraper](https://apify.com/themineworks/naver-blog-posts-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [WeChat Article Scraper 微信公众号文章](https://apify.com/themineworks/wechat-article-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Taobao Products Scraper 淘宝 天猫](https://apify.com/themineworks/taobao-products-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

### Support

Found a channel, category or list that does not come back right, or a field you need? Open an issue in the Issues tab and include the run link. For new sources or a custom build, email dmineworks@gmail.com.

*Twitch channels with followers, live status, schedule and social links, live streams by category and language, videos, clips and top categories, read without a login and charged only for rows you receive.*

# Actor input Schema

## `mode` (type: `string`):

channels returns one row per channel. streams lists live streams of the categories you name (or of all of Twitch). videos and clips list the VODs or clips of each channel. top_categories lists the categories with the most viewers right now.

## `channels` (type: `array`):

One channel per line: a channel name (shroud), @name, or a channel link (https://www.twitch.tv/shroud, any sub page). Up to 500 per run.

## `categories` (type: `array`):

One category per line: a name (Just Chatting, Fortnite), a slug (just-chatting) or a directory link (https://www.twitch.tv/directory/category/just-chatting). Each category (and each language) is its own list of up to 100 streams. Leave empty to list live streams across all of Twitch, which Twitch limits to 30 per language. Up to 500 per run.

## `maxResults` (type: `integer`):

How many streams, videos, clips or categories to return per list, 20 to 100. Twitch shows a logged out visitor the first 100 of each list; to cover more streams, list several languages (each language is its own list of up to 100).

## `languages` (type: `array`):

Optional. Two letter codes such as en, es, de, ja. Each language is read as its own list of up to maxResults streams. Leave empty for every language together.

## `streamSort` (type: `string`):

streams mode: which streams come first. Fewest viewers first finds small and new streamers.

## `tag` (type: `string`):

Optional. Only streams with this tag, for example vtuber, English or DropsEnabled.

## `videoType` (type: `string`):

videos mode: which kind of video to list.

## `videoSort` (type: `string`):

videos mode: newest first or most viewed first.

## `clipPeriod` (type: `string`):

clips mode: clips created in this period.

## `clipSort` (type: `string`):

clips mode: most viewed or trending first.

## Actor input object example

```json
{
  "mode": "channels",
  "channels": [
    "shroud",
    "pokimane"
  ],
  "categories": [
    "Just Chatting"
  ],
  "maxResults": 50,
  "streamSort": "viewers_high",
  "videoType": "all",
  "videoSort": "time",
  "clipPeriod": "last_week",
  "clipSort": "views"
}
```

# Actor output Schema

## `results` (type: `string`):

No description

## `summary` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "mode": "channels",
    "channels": [
        "shroud",
        "pokimane"
    ],
    "categories": [
        "Just Chatting"
    ],
    "maxResults": 50
};

// Run the Actor and wait for it to finish
const run = await client.actor("themineworks/twitch-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "mode": "channels",
    "channels": [
        "shroud",
        "pokimane",
    ],
    "categories": ["Just Chatting"],
    "maxResults": 50,
}

# Run the Actor and wait for it to finish
run = client.actor("themineworks/twitch-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "mode": "channels",
  "channels": [
    "shroud",
    "pokimane"
  ],
  "categories": [
    "Just Chatting"
  ],
  "maxResults": 50
}' |
apify call themineworks/twitch-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,themineworks/twitch-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/Q6U4KvgKFaM0Pql6z/builds/wEcsjuNRlnccAjIsU/openapi.json
