Twitch Scraper | Streamers, Emails and Clips avatar

Twitch Scraper | Streamers, Emails and Clips

Pricing

from $2.55 / 1,000 streamers

Go to Apify Store
Twitch Scraper | Streamers, Emails and Clips

Twitch Scraper | Streamers, Emails and Clips

Twitch scraper for streamers by username, game or keyword: followers, live viewers, game, business email and X, Instagram, YouTube, TikTok and Discord links, plus clips, videos and top games. Filter by language and followers. 22 streamers in 2 seconds, 38 fields each, no Twitch account needed.

Pricing

from $2.55 / 1,000 streamers

Rating

0.0

(0)

Developer

SilentFlow

SilentFlow

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Features

Limited permissions

Share

Twitch streamers, 38 fields each, from any channel.

From SilentFlow. Creators of Facebook Search Scraper and JD Products Scraper (#1 for โ€œjd scraperโ€ in Apify Store search), with 920,000+ combined lifetime runs.

Every Twitch streamer you need as one clean row: followers, live viewers, the game they play, the business email they publish and their X, Instagram, YouTube, TikTok and Discord links. 300 English Just Chatting streamers in 11 seconds, without a Twitch account.

Why choose this actor?

Opening Twitch About pages one by one to find a streamer's contact email? Stuck with the 30 biggest channels of a game when the streamers you can afford are at position 150? Sorting through Portuguese and Korean streams when your campaign runs in Spain?

  • The business email of each streamer, in its own column. Streamers write their sponsorship contact in their bio or their info panels. Every channel row reads both and puts the first address in email and all of them in emails. In our default run, 10 of the 22 channels came with one; across 300 English Just Chatting streamers, 103 did; among 200 English VALORANT streamers, 57 did. Your outreach starts the same day.
  • Their social links, ready to click. Each row carries every link of the streamer's About page in socialLinks, and puts X, Instagram, YouTube, TikTok and Discord in their own columns. 21 of the 22 channels of the default run and 273 of 300 English Just Chatting streamers had at least one. Reach the creator on the network your campaign runs on.
  • Every live channel of a game, in your language and your audience range, not only the first 30. A category, a search or a top list keeps going until your max results: our run listed 300 English Just Chatting streamers in 11 seconds, the deepest at position 318 of Twitch's list. Add a language and a follower floor: Spanish gave 100 Spanish Fortnite streamers in 4 seconds, all 100 in Spanish, and a minimum of 10,000 followers kept 15 established English chess channels out of 149 read.

Try Twitch Scraper free

Try your first 22 streamers

Paste this input in the Input tab, or keep the prefilled form, and press Start:

{
"channels": ["shroud", "pokimane"],
"categories": ["Just Chatting"],
"maxItems": 20
}

You get the full profiles of shroud and pokimane, then the 20 most watched channels live in Just Chatting at that moment, each with its followers, live viewers, stream title and tags, business email, social links, info panels, 5 recent videos and 5 top clips. That is 22 rows in our run, in 2 seconds: 20 channels live, 10 with a business email, 21 with at least one social link. Swap the channels for your own list, the category for your game, and raise maxItems to go deeper.

The Apify Free plan is enough to try it: no credit card, no Twitch account, no developer key.

How it works

Copy to your AI assistant

Paste this block into Claude, ChatGPT or Cursor to give it full context about this scraper:

You have access to the Twitch Scraper on Apify: silentflow/twitch-scraper
It reads public Twitch data (channels, live streams, clips, videos, top games) without any Twitch account.
Input (no field is required; give at least one channel, search, category or top list):
- channels (array of strings): usernames (shroud, @shroud) or twitch.tv links to a channel, a clip, a video or a category page
- categories (array of strings): game or category names as Twitch shows them (Just Chatting, VALORANT) or twitch.tv/directory/category links; returns the channels live in it, most watched first
- searchQueries (array of strings): keywords; returns the channels Twitch's search matches
- topList (none | streams | games, default none): the most watched live streams of all Twitch, or the most watched games and categories
- maxItems (integer, default 100): max rows per search, category, top list, and per channel for clips or videos; named channels give one profile row each
- language (string): stream language as a code or English name (en, fra, Spanish); keeps matching channels of categories, searches and top streams
- minFollowers (integer, default 0): skip channels with fewer followers (categories, searches, top streams)
- channelData (profile | clips | videos, default profile): what each channel of the channels field returns
- clipPeriod (day | week | month | all, default week): period of clip rows and of the top clips inside profile rows
Output: one flat row per object, dataType tells which.
Channel (dataType "channel", 40 fields): id, login, displayName, url, description, broadcasterType (partner | affiliate | null),
isPartner, isAffiliate, language, team, email, emails[], twitterUrl, instagramUrl, youtubeUrl, tiktokUrl, discordUrl,
socialLinks[{platform, title, url}], followersCount, videosCount, isLive, viewersCount, streamTitle, game, tags[],
startedAt, streamId, lastBroadcastTitle, lastBroadcastGame, lastBroadcastDate, createdAt, profileImageUrl, bannerImageUrl,
panels[{title, description, url, imageUrl}], recentVideos[5 x {id, title, url, type, game, viewCount, durationSeconds, publishedAt}],
topClips[5 x {id, title, url, game, curatorLogin, viewCount, durationSeconds, createdAt}], rank, source, scrapedAt, dataType.
Clip (22 fields): id, slug, url, title, channelLogin, channelDisplayName, curatorLogin, curatorDisplayName, game, language,
viewCount, durationSeconds, isFeatured, createdAt, thumbnailUrl, embedUrl, videoId, videoOffsetSeconds, rank, source, scrapedAt, dataType.
Video (15 fields): id, url, title, type (archive | highlight | upload), channelLogin, channelDisplayName, game, language,
viewCount, durationSeconds, publishedAt, thumbnailUrl, source, scrapedAt, dataType.
Game (12 fields): id, name, slug, url, viewersCount, broadcastersCount, followersCount, boxArtUrl, rank, source, scrapedAt, dataType.
Dates are RFC 3339 UTC. Missing values are null.
Use apify-client for Python or JavaScript, or the Apify MCP server.

How to scrape Twitch streamers

Get the full profile of the channels you follow

Give usernames or links. Each channel comes back as one row with its followers, partner status, live stream if it is live, last broadcast, team, business email, social links, panels, 5 recent videos and 5 top clips. Our run read five channels in under a second.

{
"channels": ["shroud", "pokimane", "xqc", "kaicenat", "ibai"]
}

List every English streamer live in a game

Name the game as Twitch shows it and pick a language. The run returns the channels live in it, most watched first, as many as you ask: 200 English VALORANT streamers in 6 seconds in our run, 57 of them with a business email.

{
"categories": ["VALORANT"],
"language": "en",
"maxItems": 200
}

Build a contact list of established streamers

Set a follower floor to skip the channels too small for your campaign before they are read. Just Chatting with 10,000 followers or more gave 300 streamers in 12 seconds, 128 of them with a business email. Open the Contacts view of the dataset to see email, X, Instagram, YouTube, TikTok and Discord side by side.

{
"categories": ["Just Chatting"],
"minFollowers": 10000,
"maxItems": 300
}

Input parameters

ParameterTypeDefaultWhat it does
channelsarray of stringsnoneUsernames or twitch.tv links. One profile row per channel, or its clips or videos (see channelData).
categoriesarray of stringsnoneGames or categories. Returns the channels live in each, most watched first.
searchQueriesarray of stringsnoneKeywords. Returns the channels Twitch's search matches, in its order.
topListnone, streams, gamesnoneAdds the most watched live streams of Twitch, or the most watched games and categories.
maxItemsinteger100Max rows per search, category, top list, and per channel for clips or videos.
languagestringnoneKeep channels that stream in this language.
minFollowersinteger0Skip channels with fewer followers.
channelDataprofile, clips, videosprofileWhat each channel of channels returns.
clipPeriodday, week, month, allweekPeriod of clip rows and of the top clips of a profile row.

No field is required: the run needs at least one channel, search keyword, category or top list.

Accepted formats

  • Channels: shroud, @shroud, https://www.twitch.tv/shroud, twitch.tv/shroud/videos (any page of the channel), a clip link (https://www.twitch.tv/shroud/clip/... or https://clips.twitch.tv/...), a video link (https://www.twitch.tv/videos/2914038727) and a category link. Entries that are not Twitch, such as an X profile, are skipped and listed in the log.
  • Categories: the name as Twitch shows it (Just Chatting, League of Legends, VALORANT, any case), the link of its directory page (https://www.twitch.tv/directory/category/just-chatting) or the older /directory/game/ link. A name Twitch does not know exactly is matched to the closest category, and the log says which one was read.
  • Language: a two-letter code (fr), a regional code (pt-BR), a three-letter code (fra) or the English name (French). The list offers 32 stream languages.
  • The field names of other Twitch tools also work, so an input you already use runs as is: channelUsernames, searchQuery, gameName, maxResults, and mode with topStreams, topGames or clips.

What data can you extract from Twitch?

Each row is one object, and dataType tells which: channel, clip, video or game. Rows are flat, with nested lists only where a channel has several of something.

Channel rows (40 fields)

GroupFields
Identityid (stable Twitch user id), login, displayName, url (permanent channel page)
Profiledescription (bio), broadcasterType, isPartner, isAffiliate, language, team, createdAt
Contactsemail, emails, twitterUrl, instagramUrl, youtubeUrl, tiktokUrl, discordUrl, socialLinks (3 fields per link: platform, title, url)
AudiencefollowersCount, videosCount
Live streamisLive, viewersCount, streamTitle, game, tags, startedAt, streamId
Last broadcastlastBroadcastTitle, lastBroadcastGame, lastBroadcastDate
MediaprofileImageUrl, bannerImageUrl
Contentpanels (4 fields each: title, description, url, imageUrl), recentVideos (5 videos, 8 fields each), topClips (5 clips, 8 fields each)
Metarank (position in the category, search or top list), source (which input found it), scrapedAt, dataType

Clip rows (22 fields): title, channel, the viewer who clipped it, game, language, views, length in seconds, featured flag, creation date, thumbnail, embed link, the video it was cut from and the second it starts at, rank by views.

Video rows (15 fields): title, type (past broadcast, highlight or upload), channel, game, language, views, length in seconds, publication date, thumbnail.

Game rows (12 fields): name, slug, directory link, live viewers, live channels, followers, box art, rank.

Good to know when you use the data:

  • id and url are stable: use them as keys to merge runs. login can change when a streamer renames the channel; id does not.
  • Live fields describe the moment of the run. A channel that is offline has isLive: false and null viewers, stream title and game; its last broadcast tells you what it streamed last and when.
  • Dates are RFC 3339 in UTC (2026-11-07T00:20:32Z). Missing values are null, never an empty text.
  • Channel, video and clip pages are permanent. Twitch keeps past broadcasts for a limited time that depends on the channel, so an old recentVideos link can stop working; highlights and uploads stay. Image links point to Twitch's image servers and work as long as the streamer keeps that image.
  • email holds addresses the streamer published on their channel. Bios and panels that show the address only inside an image carry no email in the row.

Output example

A real channel row from our run of Just Chatting in English:

{
"id": "51115394",
"login": "midnightsumo",
"displayName": "MidnightSumo",
"url": "https://www.twitch.tv/midnightsumo",
"description": "Streamer Award nominated! I commentate all things sumo on Twitch. I also commentate curated sumo and Japanese food/travel content during the off-season. 30-something Canadian sumo fan, doing their best! Business email: midnightsumo@duck.com",
"broadcasterType": "partner",
"isPartner": true,
"isAffiliate": false,
"language": "en",
"team": "Epilogue Gaming",
"email": "midnightsumo@duck.com",
"emails": ["midnightsumo@duck.com"],
"twitterUrl": null,
"instagramUrl": null,
"youtubeUrl": null,
"tiktokUrl": null,
"discordUrl": "https://discord.gg/MidnightSumo",
"socialLinks": [
{ "platform": "twitch", "title": "Sub to Twitch here (mobile users)", "url": "https://www.twitch.tv/midnightsumo/subscribe" },
{ "platform": "streamlabs", "title": "PayPal Donation Link!", "url": "https://streamlabs.com/midnightsumo/tip" },
{ "platform": "patreon", "title": "MidnightSumo Patreon", "url": "https://www.patreon.com/MidnightSumo" },
{ "platform": "discord", "title": "MidnightSumo Discord", "url": "https://discord.gg/MidnightSumo" },
{ "platform": "bsky", "title": "MidnightSumo BlueSky", "url": "https://bsky.app/profile/midnightsumo.bsky.social" }
],
"followersCount": 185085,
"videosCount": 11,
"isLive": true,
"viewersCount": 767,
"streamTitle": "Hanging w/ Middy and watching YouTube vids! MidnightSumoRadio debuts tomorrow! Audio only moving forward during Grand tournaments! | !jj",
"game": "Just Chatting",
"tags": ["English", "Japan", "Sumo", "Wrestling", "ADHD", "Pokemon", "Japanese", "Food", "NotACat", "AIOptedOut"],
"startedAt": "2026-11-07T00:20:32Z",
"streamId": "322296374363",
"lastBroadcastTitle": "Hanging w/ Middy and watching YouTube vids! MidnightSumoRadio debuts tomorrow! Audio only moving forward during Grand tournaments! | !jj",
"lastBroadcastGame": "Just Chatting",
"lastBroadcastDate": "2026-11-07T00:20:37Z",
"createdAt": "2013-11-04T23:57:01Z",
"profileImageUrl": "https://static-cdn.jtvnw.net/jtv_user_pictures/66806ef2-24ca-4e48-9eff-58130356fe97-profile_image-300x300.png",
"bannerImageUrl": "https://static-cdn.jtvnw.net/jtv_user_pictures/d57c4dfd-c017-4712-a6ea-6794f5de7425-profile_banner-480.png",
"panels": [
{ "title": null, "description": null, "url": null, "imageUrl": "https://panels.twitch.tv/panel-51115394-image-758959c9-c083-446c-ad54-76f8c3cc05cb" },
{ "title": "MidnightSumo Patreon", "description": "If you want to support me further, click on this Yorikitty to find my Patreon page!", "url": "https://www.patreon.com/MidnightSumo", "imageUrl": "https://panels.twitch.tv/panel-51115394-image-d969e056-ba4f-40cd-ba84-b45a3f7645d4" }
],
"recentVideos": [
{ "id": "2921628154", "title": "LIVE opening Grand Sumo ceremony starts at 9:55am Japan time, 4:55pm Pacific! Watching sumo content until it starts! | Tourney is tomorrow!", "url": "https://www.twitch.tv/videos/2921628154", "type": "archive", "game": "Just Chatting", "viewCount": 84, "durationSeconds": 12566, "publishedAt": "2026-11-07T00:20:37Z" },
{ "id": "2919989865", "title": "LAUNCH of the Legend of Zelda Ocarina of Time remake! 12am EST | !jj | Live opening sumo ceremony will be streamed Friday at 4:55pm Pacific!", "url": "https://www.twitch.tv/videos/2919989865", "type": "archive", "game": "The Legend of Zelda: Ocarina of Time", "viewCount": 7036, "durationSeconds": 12219, "publishedAt": "2026-11-05T04:45:13Z" },
{ "id": "2916282260", "title": "LIVE Sumo | All-Japan Student Sumo Championship in Tokyo, Japan! | !streamerawards !jj | Middy will be at the streamer awards in-person!", "url": "https://www.twitch.tv/videos/2916282260", "type": "archive", "game": "Just Chatting", "viewCount": 53509, "durationSeconds": 99227, "publishedAt": "2026-11-01T00:53:52Z" },
{ "id": "2915346704", "title": "LIVE Sumo | Middy is married AND partnered?! | All-Japan Student Sumo Championship in Tokyo, Japan! College sumo major 2-day tourney!", "url": "https://www.twitch.tv/videos/2915346704", "type": "archive", "game": "Just Chatting", "viewCount": 34640, "durationSeconds": 48666, "publishedAt": "2026-10-31T00:57:31Z" },
{ "id": "2900995458", "title": "Live hangout w/Middy! Watching some sumo stable content and Japanese travel/culture content! | Middy leaves for his wedding on Saturday!", "url": "https://www.twitch.tv/videos/2900995458", "type": "archive", "game": "Just Chatting", "viewCount": 13924, "durationSeconds": 16597, "publishedAt": "2026-10-15T00:09:14Z" }
],
"topClips": [
{ "id": "3988062982", "title": "TOSS THE YOK", "url": "https://www.twitch.tv/midnightsumo/clip/CleanFuriousWeaselLeeroyJenkins-ZYsnXAdZjp25faxV", "game": "Just Chatting", "curatorLogin": "justalilmoose", "viewCount": 54, "durationSeconds": 18, "createdAt": "2026-10-31T07:37:24Z" },
{ "id": "2602844602", "title": "High Speed Brutal Slap Down", "url": "https://www.twitch.tv/midnightsumo/clip/YummyRoundChipmunkDatSheffy-3LIrAkpsP4M7bQdH", "game": "Just Chatting", "curatorLogin": "floridawrestling", "viewCount": 31, "durationSeconds": 30, "createdAt": "2026-11-01T02:12:46Z" },
{ "id": "4269722890", "title": "Huge popoff! 2026 All-Japan Student Sumo Championship", "url": "https://www.twitch.tv/midnightsumo/clip/ChillyExcitedNewtMingLee-1aIab0y4ttWAU8ux", "game": "Just Chatting", "curatorLogin": "carocarocola", "viewCount": 30, "durationSeconds": 41, "createdAt": "2026-11-01T04:41:05Z" },
{ "id": "891557680", "title": "W LEP", "url": "https://www.twitch.tv/midnightsumo/clip/MoralObliqueConsoleMcaT-MpEvzJq7cia1_vXw", "game": "Just Chatting", "curatorLogin": "lidzet_", "viewCount": 29, "durationSeconds": 14, "createdAt": "2026-11-01T04:04:57Z" },
{ "id": "3496841189", "title": "LIVE Sumo | Middy is married AND partnered?! | All-Japan Student Sumo Championship in Tokyo, Japan! College sumo major 2-day tourney!", "url": "https://www.twitch.tv/midnightsumo/clip/RepleteOpenCarabeefBabyRage-vI_9qzkpnBhYkTHz", "game": "Just Chatting", "curatorLogin": "struad", "viewCount": 23, "durationSeconds": 30, "createdAt": "2026-10-31T06:55:09Z" }
],
"rank": 20,
"source": "category: Just Chatting",
"scrapedAt": "2026-11-07T03:50:04Z",
"dataType": "channel"
}

Advanced usage

Scout mid-size streamers for a sponsorship in one market

Agencies rarely book the top 10 of a game. Combine a language, a follower floor and a deep max results to reach the channels between position 50 and 500, where sponsorship budgets go further. Every row keeps its rank, so you can see how far down Twitch's list each streamer sits.

{
"categories": ["League of Legends", "Teamfight Tactics"],
"language": "de",
"minFollowers": 5000,
"maxItems": 400
}

Track the most watched games every hour

Schedule this input hourly on Apify and append each run to a sheet or a database: viewersCount and broadcastersCount per game build a viewership history that Twitch itself does not show. Our run ranked the top 100 games and categories in under a second.

{
"topList": "games",
"maxItems": 100
}

Turn a keyword into a creator list

Twitch's channel search finds channels by name. Pair it with a language and a follower floor to drop the inactive and the off-topic accounts: a chess search in English with 10,000 followers or more returned 15 channels in 3 seconds and left 134 smaller or foreign ones out.

{
"searchQueries": ["chess", "speedrun", "asmr"],
"language": "en",
"minFollowers": 10000,
"maxItems": 50
}

Collect a streamer's best clips for a highlight reel

Choose clips for each channel and the period. Each clip row carries its views, length, game, the viewer who clipped it and the second of the broadcast it was cut from. Our run returned Kai Cenat's 100 most viewed clips of the week in 1 second.

{
"channels": ["kaicenat", "https://www.twitch.tv/ibai"],
"channelData": "clips",
"clipPeriod": "month",
"maxItems": 100
}

Audit a streamer before you sign them

Read a creator's last 100 videos to see how often they stream, how long, which games and how many views each broadcast keeps. Our run returned shroud's 100 latest videos in 1 second. Run the profile afterwards for followers, contacts and team.

{
"channels": ["shroud"],
"channelData": "videos",
"maxItems": 100
}

FAQ

What does this Twitch scraper extract? Channels with followers, partner or affiliate status, language, team, bio, business email, social links, info panels, live stream (viewers, game, title, tags, start time), last broadcast, 5 recent videos and 5 top clips. It also returns clips, videos and the most watched games as rows of their own when you ask for them.

Do I need a Twitch account or a developer key? No. The actor reads what Twitch shows to any visitor who is not logged in. You do not register an app, create a token or share an account.

Where does the business email come from? From what the streamer wrote on their own channel: the bio and the text and links of the info panels under the stream. When a streamer shows the address only inside an image, the row has no email. In our runs, 103 of 300 English Just Chatting streamers published one in text, and 128 of 300 Just Chatting streamers with 10,000 followers or more.

How many streamers can I get from one game? As many as are live in it, up to your max results. Our run read 300 English Just Chatting streamers in 11 seconds, the deepest at position 318 of Twitch's list. A small game has fewer live channels, and the run stops when the list ends.

How fresh is the data? Live. Every run reads Twitch at that moment: who is live, how many viewers, which game. Nothing comes from a cache. Run it on a schedule to follow a game or a list of channels over time.

Can I combine filters and inputs? Yes. Filters add up: language es with minFollowers 5000 on a category returns the Spanish-speaking channels with at least 5,000 followers, most watched first. In one run you can mix named channels, keywords, several categories and a top list; a channel found twice comes back once.

Why does a named channel come back without a live stream? Because it is offline at the moment of the run. Its row still has its followers, contacts, last broadcast, recent videos and top clips. Language and follower filters apply to categories, searches and top streams only: the channels you name are always returned.

What if a username or a category does not exist? The run tells you in the log and keeps going with the rest. No empty row is added to your dataset. A category name Twitch does not know exactly is matched to the closest category, and the log names the one it read.

What is Twitch? Twitch is Amazon's live streaming platform, where streamers broadcast games, talk shows, music and events to a live chat. It is the platform brands and agencies scout for gaming creators, next to YouTube Live and Kick.

Are the links permanent? Channel, clip and video pages are, and id never changes. Past broadcasts are deleted by Twitch after a while, so old video links can stop working; highlights and uploads stay. Live fields are a snapshot of the run.

More SilentFlow scrapers

๐Ÿ›’ E-commerce

๐Ÿ’ผ Jobs

๐Ÿ  Real estate

๐Ÿ“ฃ Social media

๐Ÿข Business data

โœˆ๏ธ Travel

๐ŸŽฏ Lead generation

๐Ÿ”Ž SEO

๐ŸŽฌ Video

๐Ÿ“ฐ News

๐Ÿงฐ More tools

Support

Need something this scraper doesn't do yet? We ship features fast.

  • Feature requests go straight to our backlog
  • Enterprise needs? We do custom integrations and high-volume plans
  • Pricing questions? Check the Monetization tab on the actor page

Response time: usually under 24 hours.

This Actor extracts publicly available data from Twitch, as shown to visitors who are not logged in. It does not bypass any login, paywall or CAPTCHA and never uses a Twitch account. Users are responsible for complying with Twitch's terms of service and applicable data protection laws (GDPR, CCPA, and PIPL where relevant). Channel profiles, bios, business emails and social links are personal data: handle them accordingly, contact streamers only for legitimate purposes, keep only what you need, and honor removal and unsubscribe requests. The data returned is informational; verify accuracy for regulated use cases.

Twitch Scraper by SilentFlow: streamers with their business email, social links and live audience, plus clips, videos and top games, in one run.