Twitch Contacts Scraper | Emails and Social Links avatar

Twitch Contacts Scraper | Emails and Social Links

Pricing

from $1.20 / 1,000 streamers

Go to Apify Store
Twitch Contacts Scraper | Emails and Social Links

Twitch Contacts Scraper | Emails and Social Links

Twitch contacts scraper for influencer outreach: get streamer business emails from bios, panels and their Linktree or website, plus X, Instagram, YouTube, TikTok and Discord links, followers and language. Search by channel, game or keyword. 22 streamers in 3 seconds, 30 fields each, no login.

Pricing

from $1.20 / 1,000 streamers

Rating

0.0

(0)

Developer

SilentFlow

SilentFlow

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Features

Limited permissions

Share

Twitch streamers, 30 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 930,000+ combined lifetime runs.

Turn a game, a keyword or a list of channels into a Twitch streamer outreach list: the business email of each streamer, where it was found, their X, Instagram, YouTube, TikTok and Discord links, their website, followers and stream language. 300 English Just Chatting streamers in 24 seconds, without a Twitch account.

Why choose this actor?

Opening About pages one by one to copy a streamer's sponsorship email? Finding nothing on Twitch because the email sits on their Linktree? Running one game at a time, then sorting out the Korean and Portuguese channels and the creators too big to answer?

  • Emails Twitch does not show, found on the streamer's own page. When a streamer writes no email in their bio or panels, the actor opens the Linktree, link.me or Carrd page or the personal website linked from their channel and takes the email written there. emailSource says where each email came from and emailSourceUrl gives the page. Across 300 English Just Chatting streamers, 118 rows came with an email, and 17 of them were found only on the streamer's own page. In the default run, the email of keeoh (451,233 followers) came from his link.me page.
  • One market and one audience size per run. Pick a stream language and a follower range, minimum and maximum, and only the streamers that match become rows; every row also says the language the streamer broadcasts in. English VALORANT and Fortnite streamers between 1,000 and 50,000 followers, emails only: 50 streamers in 16 seconds, all 50 in English, all with an email, from 1,597 to 49,075 followers, after leaving out 121 channels outside the language or the range.
  • Several games and keyword searches in one run. Add as many categories, keywords and channel names as you need: they are read one after the other into the same dataset, and a streamer found twice gives one row. The run above read VALORANT and Fortnite together, 25 streamers each; another combined a named channel with a "chess" search, 31 English channels with 5,000 followers or more in 15 seconds.

Try Twitch Contacts Scraper free

Try your first 22 streamers

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

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

You get the contacts of pokimane and keeoh, then of the 20 most watched streamers live in Just Chatting at that moment. In our run that was 22 rows in 7 seconds: 11 with a business email (8 from the bio, 2 from the info panels, 1 from the streamer's own page), 21 with at least one social link, 21 live. Swap the channels for your 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

SilentFlow · Twitch suite
  Twitch Scraper
Streamers, Emails and Clips
Twitch Contacts Scraper
You are here

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 Contacts Scraper on Apify: silentflow/twitch-contacts-scraper
It returns one row per Twitch streamer with their business email, social links and audience, from public Twitch
data and the streamer's own linked pages, without any Twitch account.
Input (no field is required; give at least one channel, category or search):
- channels (array of strings): usernames (pokimane, @shroud) or twitch.tv channel links; a clip or video link of a
channel stands for its streamer. Each gives one row, whatever the filters.
- categories (array of strings): game or category names as Twitch shows them (Just Chatting, VALORANT) or
twitch.tv/directory/category links; returns the streamers live in it, most watched first
- searchQueries (array of strings): keywords; returns the channels Twitch's search matches, live or not
- maxItems (integer, default 100): max rows per category and per search
- onlyWithEmail (boolean, default false): keep only streamers with an email (applies to every row); categories and
searches read on until maxItems streamers with an email
- language (string): stream language as a code or English name (en, fra, Spanish); filters categories and searches
- minFollowers (integer, default 0) and maxFollowers (integer, default 0 = no ceiling): follower range for
categories and searches
- checkLinkedPages (boolean, default true): when Twitch shows no email, read the streamer's Linktree, link.me,
Carrd or website for one
Output: one flat row per streamer, 34 fields:
id, login, displayName, url, email (best address, business-looking first), emails[], hasEmail,
emailSource (bio | panel | linked page | null), emailSourceUrl, websiteUrl, twitterUrl, instagramUrl, youtubeUrl,
tiktokUrl, discordUrl, socialLinks[{platform, title, url}], description, broadcasterType (partner | affiliate | null),
isPartner, isAffiliate, language, team, followersCount, isLive, viewersCount, game, streamTitle, lastBroadcastAt,
lastBroadcastGame, createdAt, profileImageUrl, rank (place in its category or search), source, scrapedAt.
Dates are RFC 3339 UTC. Missing values are null; lists are [] when empty.
Use apify-client for Python or JavaScript, or the Apify MCP server.

How to find Twitch streamer emails

Get the contacts of the streamers on your list

{
"channels": ["pokimane", "https://www.twitch.tv/keeoh", "@jasontheween"],
"checkLinkedPages": true
}

One row per channel, with the email from the bio, the panels or the streamer's own page, and every social link of their About page. Usernames, @handles and links can be mixed.

Build a list of English streamers of one game

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

The 100 most watched English streamers live in VALORANT right now, each with their email when they publish one, social links, followers and live viewers.

Find mid-size streamers who publish an email

{
"categories": ["VALORANT", "Fortnite"],
"language": "en",
"minFollowers": 1000,
"maxFollowers": 50000,
"onlyWithEmail": true,
"maxItems": 25
}

Our run: 50 English streamers between 1,597 and 49,075 followers, all with an email, in 16 seconds. Creators of this size answer sponsorship emails more often than the top of the list.

Input parameters

FieldTypeDefaultWhat it does
channelslist of textnoneTwitch usernames or channel links. One row each, whatever the filters.
categorieslist of textnoneGames or categories, by name or directory link. Streamers live in it, most watched first.
searchQuerieslist of textnoneKeywords. Channels whose name matches, as Twitch's search ranks them, live or not.
maxItemsnumber100Rows per category and per search. With onlyWithEmail, it counts streamers with an email.
onlyWithEmailtrue / falsefalseKeep only streamers who publish an email, on Twitch or on their own page.
languagetextevery languageStream language of the streamers of categories and searches.
minFollowersnumber0Skip streamers below this many followers.
maxFollowersnumber0 (no ceiling)Skip streamers above this many followers.
checkLinkedPagestrue / falsetrueRead the streamer's Linktree, link.me, Carrd or website when Twitch shows no email.

Accepted formats

  • Channels: pokimane, @pokimane, https://www.twitch.tv/pokimane, twitch.tv/pokimane/about, or a clip or video link of the channel (https://www.twitch.tv/pokimane/clip/...). A category link pasted here is read as a category.
  • Categories: the name as Twitch shows it (Just Chatting, Grand Theft Auto V), a close spelling (lol finds League of Legends), or a link (https://www.twitch.tv/directory/category/just-chatting).
  • Language: a two-letter code (fr), a three-letter code (fra) or an English name (French). The form lists the 32 languages Twitch offers.
  • Fields named usernames, startUrls, category, searchQuery and maxResults, as other Twitch email tools call them, are read too, so an input you already use runs as is.

What data can you extract from Twitch?

Each row is one streamer, with 34 fields in seven groups:

GroupFields
Identityid (stable Twitch user id), login, displayName, url (permanent channel link)
Contactsemail, emails, hasEmail, emailSource, emailSourceUrl, websiteUrl, twitterUrl, instagramUrl, youtubeUrl, tiktokUrl, discordUrl, socialLinks
Profiledescription (bio), broadcasterType, isPartner, isAffiliate, language, team
AudiencefollowersCount
ActivityisLive, viewersCount, game, streamTitle, lastBroadcastAt, lastBroadcastGame, createdAt
MediaprofileImageUrl
Metarank, source, scrapedAt

How the contact fields work:

  • email is the address to write to first: the first one that reads as a business address (business, mgmt, collab, sponsor, inquiries...), else the first one found. emails lists every address, lower-cased and without duplicates.
  • emailSource is bio, panel or linked page. For a linked page, emailSourceUrl is the page the email was read on.
  • websiteUrl is the streamer's own site when one carries their name, else their link-in-bio page. Sponsor, shop and donation links are left out.
  • socialLinks keeps every link of the About page with its title as the streamer wrote it; the five platform columns are filled from it first, then from the links in the info panels.
  • game is the game being streamed, or the one the channel is set to when it is offline. viewersCount and streamTitle are filled while live.

Across 300 English Just Chatting streamers, 118 rows had an email (62 from the bio, 39 from the panels, 17 from the streamer's own page), 272 had at least one social link and 106 had a website or a link-in-bio page.

Output example

A real row from the default run: keeoh writes no email on Twitch, the actor found it on his link.me page.

{
"id": "151819490",
"login": "keeoh",
"displayName": "Keeoh",
"url": "https://www.twitch.tv/keeoh",
"email": "keeohmgmt@gmail.com",
"emails": ["keeohmgmt@gmail.com"],
"hasEmail": true,
"emailSource": "linked page",
"emailSourceUrl": "https://link.me/keeoh",
"websiteUrl": "https://keeoh.com/socials",
"twitterUrl": null,
"instagramUrl": null,
"youtubeUrl": "https://youtube.com/keeoh",
"tiktokUrl": null,
"discordUrl": null,
"socialLinks": [
{ "platform": "twitch", "title": "↠ SUB ON MOBILE", "url": "https://www.twitch.tv/keeoh/subscribe" },
{ "platform": "youtube", "title": "Youtube ↠ @Keeoh", "url": "https://youtube.com/keeoh" },
{ "platform": "link", "title": "ALL MY SOCIALS", "url": "https://link.me/keeoh" }
],
"description": "DO HARD THINGS ••• the backflip guy ◑",
"broadcasterType": "partner",
"isPartner": true,
"isAffiliate": false,
"language": "en",
"team": "The POD",
"followersCount": 451233,
"isLive": true,
"viewersCount": 257,
"game": "VALORANT",
"streamTitle": "HUSH SPEEDRUN ••• chill start, darts, food, then valo 🀄 follow @keeoh 🀄",
"lastBroadcastAt": "2026-11-08T03:02:33Z",
"lastBroadcastGame": "VALORANT",
"createdAt": "2017-03-29T18:42:13Z",
"profileImageUrl": "https://static-cdn.jtvnw.net/jtv_user_pictures/77cc59aa-1f45-46d2-a1c2-17e6a55c2e6a-profile_image-300x300.png",
"rank": null,
"source": "channel",
"scrapedAt": "2026-11-08T03:54:55Z"
}

The dataset has two ready views: Contacts (streamer, email, where it was found, followers, language, game, channel) and Social links (streamer, email, website, X, Instagram, YouTube, TikTok, Discord). Export them as CSV, Excel or JSON from the dataset page.

Advanced usage

Build a Spanish-speaking campaign list

{
"categories": ["Just Chatting", "Fortnite", "League of Legends"],
"language": "es",
"minFollowers": 5000,
"onlyWithEmail": true,
"maxItems": 50
}

Up to 150 Spanish-speaking streamers with 5,000 followers or more, all with an email, across three categories in one run. Change es to any of the 32 languages for the next market.

Turn a niche keyword into a creator list

{
"searchQueries": ["chess", "speedrun", "asmr"],
"language": "en",
"minFollowers": 5000,
"maxItems": 30
}

Search covers channels that are offline right now too. Our run of "chess" plus one named channel returned 31 English rows in 15 seconds, 14 of them live, after leaving out 666 smaller or non-English matches.

Enrich the creator list your team already has

{
"channels": ["pokimane", "keeoh", "jasontheween", "ironmouse", "https://www.twitch.tv/valkyrae"],
"checkLinkedPages": true
}

Paste the handles from your CRM or spreadsheet: each becomes one row with the email, its source and every social link, ready to merge back on login or id.

Track new streamers of a game every week

{
"categories": ["Marvel Rivals"],
"language": "en",
"maxFollowers": 20000,
"onlyWithEmail": true,
"maxItems": 100
}

Schedule it weekly in Apify: who streams a game changes every day, and each run gives the small creators live at that moment who publish an email. Compare id between runs to keep only the new ones.

Keep only what Twitch shows

{
"categories": ["Just Chatting"],
"maxItems": 200,
"checkLinkedPages": false
}

Turn off the linked pages when you only want the emails streamers wrote on Twitch itself. Every row then has emailSource set to bio, panel or null.

FAQ

What does this scraper extract exactly? One row per Twitch streamer: the business email they publish (in their bio, their info panels, or on their own Linktree, link.me, Carrd or website), where it was found, their website and social links, followers, partner or affiliate status, stream language, team, live stream and last broadcast.

Does every streamer have an email? No, only those who publish one. In our runs, 118 of 300 English Just Chatting streamers and 11 of the 22 rows of the default run had one. Turn on Only streamers with an email to get only those: categories and searches then read further down Twitch's list to fill your max.

Are the emails verified? They are the addresses streamers publish for business, as written. Placeholders such as your@email.com and the addresses of the page builders themselves are left out. Check deliverability with an email validator before a large send.

Do I need a Twitch account or a developer key? No. The actor reads what Twitch and the streamers' pages show to any visitor. No login, no developer key.

How fresh is the data? Everything is read at run time, nothing is cached: followers, live status and viewers are the values of that moment, and a category lists who is live when you press Start.

How many streamers can one run return? Each category and each search returns up to maxItems rows, and you can add as many as you need. Our run read 300 English Just Chatting streamers in 24 seconds, the deepest at position 314 of Twitch's list. There is no fixed limit per run.

Can I combine several games, keywords and filters? Yes. Categories, searches and channels are read one after the other into the same dataset, a streamer found twice gives one row, and the language, follower range and email filters apply to each category and search. English, 1,000 to 50,000 followers, emails only, on VALORANT and Fortnite gave 50 streamers in 16 seconds.

Why does a category return a few streamers in another language? It does not: when you set a language, the actor drops the streams Twitch mixes into its own language list. In our English Just Chatting run, 13 such channels were left out. Without a language, every language is kept.

Why is an email missing when I can see one on the channel? Some streamers write their email inside a panel image, which cannot be read as text, or on a page that does not open for visitors. The row still ships with every other field, so you can check that streamer by hand.

Which links are permanent? url, id and login are stable. profileImageUrl points to Twitch's image servers and changes when the streamer changes their picture. Social links and websites are what the streamer wrote and can change at any time.

What is Twitch? Twitch is Amazon's live streaming platform, the largest for gaming, with categories for every game plus Just Chatting, music, art and sports. Brands, game publishers and agencies work with its streamers for sponsorships and launch campaigns.

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 and from the pages streamers link from their channel, 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), and with anti-spam rules such as CAN-SPAM when they write to streamers. Business emails, bios, profile pictures and social links are personal data: contact streamers only for legitimate business purposes, keep only what you need, and honor removal and unsubscribe requests. The data returned is informational; verify accuracy for regulated use cases.

Twitch Contacts Scraper by SilentFlow: the business email of every streamer you need, where it was found, and every way to reach them, in one run.