Skip to content

Twitch Scraper

Try for free

Scrape Twitch channels, live streams by category or language, top categories, VODs and clips: followers, partner status, socials, panels, emails, viewers, tags and views. No login needed.

🎮 Twitch Scraper

Scrape Twitch channels, live streams, top categories, VODs and clips in seconds. Get follower counts, partner/affiliate status, bios, social and panel links, business emails from bios, live viewers, stream tags, last broadcast and video stats, straight from Twitch's public data. No login, no API key, and $1.50 per 1,000 results.

✨ Why use Twitch Scraper?

  • 🔓 No login or API key: reads Twitch's public data. You don't need a Twitch developer app or OAuth token.
  • ⚡ Fast: plain HTTP with no browser. Profiles load 10 per request, and 1,000 live streams take about 15 seconds.
  • 🧑‍🤝‍🧑 Built for influencer research: followers, partner/affiliate status, language, socials, panel links and emails from bios are all in one row per channel.
  • 📺 Every kind of Twitch data: channels, live streams by category or language, top streams, top categories, channel search, VODs and clips.
  • 🎯 Real filters: languages, stream tags, viewer and follower ranges, broadcaster type, views, duration and dates. Rows you filter out are not charged.
  • 💸 Cheap: one flat price per row, with no start fee.

🎯 Use cases

  • 📣 Influencer marketing: build streamer outreach lists by game, language and follower range, with socials and business emails.
  • 🔍 Micro-influencer discovery: sort a category by fewest viewers and cap followers to find small, growing streamers.
  • 📊 Esports and market research: track top categories, live viewership and channel counts over time with scheduled runs.
  • 🏆 Competitor tracking: monitor rival streamers' followers, last broadcast, VOD views and top clips.
  • 🎬 Content research: find the most viewed or trending clips per channel or category for highlight reels.
  • 🧪 Academic and data journalism: study language, category and viewer patterns on Twitch.

🚀 How to use

  1. Enter Channel names (for example shroud, pokimane) or paste any Twitch URLs: channels, VODs, clips, categories, twitch.tv/directory or a search link.
  2. Optionally add Categories / games (live streams in each), Search channels keywords, or turn on Top live streams / Top categories.
  3. Set Max items per input, which controls streams per category, results per search and VODs/clips per channel.
  4. Turn on VODs or Clips as separate rows if you need full video lists, and add filters.
  5. Click Start and export the results as JSON, CSV, Excel or HTML, or read them through the API.

📥 Input

FieldWhat it does
channelsTwitch usernames or channel links. One profile row each.
startUrlsAny Twitch links: channel, /videos/<id>, clip, /directory/category/<slug>, /directory, /directory/all, /search?term=
categoriesGame/category names or slugs. Returns their live streams.
searchQueriesChannel search keywords
topStreams / topCategoriesMost-watched live streams / categories across Twitch
maxItemsPerInputStreams, search results, VODs or clips per input (default 10)
includeVideos / includeClipsChannel VODs / clips as their own rows
languages, streamTags, minViewers, maxViewers, minFollowers, maxFollowers, broadcasterTypesStream and channel filters
minViews, dateFrom, dateTo, minDurationSeconds, maxDurationSecondsVOD and clip filters
{
  "channels": ["shroud", "pokimane"],
  "categories": ["Just Chatting"],
  "languages": ["en"],
  "maxFollowers": 50000,
  "streamSort": "viewers",
  "maxItemsPerInput": 20,
  "includeVideos": false,
  "includeClips": false
}

📤 Output

Every row has a type: channel, stream, category, video or clip. The Output tab has a table view for each type.

TypeMain fields
channellogin, displayName, url, description, followersCount, isPartner, isAffiliate, broadcasterType, language, isLive, currentViewers, streamTitle, currentGame, streamStartedAt, streamTags, lastBroadcastTitle, lastBroadcastGame, lastBroadcastDate, socialLinks, panelLinks, emails, totalVideos, recentVideos (5), topClips (5), profileImageUrl, bannerImageUrl, createdAt
streamrank, broadcasterLogin, broadcasterDisplayName, broadcasterFollowers, broadcasterType, title, viewersCount, game, language, tags, startedAt, url, previewImageUrl
categoryrank, name, slug, viewersCount, broadcastersCount, followersCount, tags, boxArtUrl, url
videotitle, url, viewCount, durationSeconds, game, broadcastType, language, channelLogin, thumbnailUrl, createdAt, publishedAt
cliptitle, url, slug, viewCount, durationSeconds, game, language, channelLogin, curatorLogin, videoId, videoOffsetSeconds, thumbnailUrl, createdAt

Example rows (made-up sample data in the real format):

[
  {
    "type": "channel",
    "id": "100000001",
    "login": "pixelpioneer",
    "displayName": "PixelPioneer",
    "url": "https://www.twitch.tv/pixelpioneer",
    "description": "Variety streams every weekday. Business: hello@pixelpioneer.example",
    "followersCount": 48210,
    "isPartner": false,
    "isAffiliate": true,
    "broadcasterType": "affiliate",
    "language": "en",
    "isLive": true,
    "currentViewers": 312,
    "streamTitle": "Ranked grind to Diamond !discord",
    "currentGame": "VALORANT",
    "streamStartedAt": "2026-10-15T01:02:11Z",
    "streamTags": ["English", "Competitive"],
    "lastBroadcastTitle": "Ranked grind to Diamond !discord",
    "lastBroadcastGame": "VALORANT",
    "lastBroadcastDate": "2026-10-15T01:02:13.512Z",
    "socialLinks": [{"name": "youtube", "title": "YouTube", "url": "https://youtube.com/@pixelpioneer"}],
    "panelLinks": [{"title": "Discord", "description": null, "linkUrl": "https://discord.gg/example", "imageUrl": "https://panels.twitch.tv/panel-100000001-image-example"}],
    "emails": ["hello@pixelpioneer.example"],
    "totalVideos": 214,
    "recentVideos": [{"id": "2900000001", "title": "Ranked grind", "url": "https://www.twitch.tv/videos/2900000001", "viewCount": 1840, "durationSeconds": 14230, "game": "VALORANT", "broadcastType": "archive", "createdAt": "2026-10-14T00:58:40Z"}],
    "topClips": [{"id": "1234567890", "title": "1v4 clutch", "url": "https://www.twitch.tv/pixelpioneer/clip/ExampleClipSlug-abc123", "viewCount": 25110, "durationSeconds": 28, "game": "VALORANT", "createdAt": "2025-04-02T19:11:05Z"}],
    "profileImageUrl": "https://static-cdn.jtvnw.net/jtv_user_pictures/example-profile_image-300x300.png",
    "createdAt": "2019-03-08T17:20:01Z"
  },
  {
    "type": "stream",
    "id": "320000000001",
    "rank": 1,
    "broadcasterLogin": "pixelpioneer",
    "broadcasterDisplayName": "PixelPioneer",
    "broadcasterFollowers": 48210,
    "broadcasterType": "affiliate",
    "title": "Ranked grind to Diamond !discord",
    "viewersCount": 312,
    "game": "VALORANT",
    "language": "en",
    "tags": ["English", "Competitive"],
    "startedAt": "2026-10-15T01:02:11Z",
    "url": "https://www.twitch.tv/pixelpioneer"
  }
]

💰 Pricing

$1.50 per 1,000 results ($0.0015 per row) for every row type: channel, stream, category, VOD or clip. There is no start fee. Platform usage (compute and proxy) is billed separately and is tiny, because the scraper runs over plain HTTP on 256 MB.

  • 1,000 live streams ≈ $1.50 + about $0.005 usage
  • 100 channel profiles (each with 5 latest VODs and 5 top clips inside) ≈ $0.15
  • Rows removed by filters are never charged. Set a maximum charge on the run and the scraper stops cleanly when it is reached.

❓ FAQ

Is it legal to scrape Twitch? The scraper only reads public data that anyone can see on twitch.tv without logging in. You are responsible for how you use it: follow Twitch's terms and data-protection law (GDPR/CCPA), especially for emails.

Do I need a Twitch account, API key or proxy? No. Datacenter proxies are on by default and work well.

How many results can I get? Top live streams go to 10,000+ in one run. Twitch itself lists about 1,000 clips per channel or category and about 1,000 live streams per category, and the run says so when it reaches that ceiling.

Why is a field empty? Twitch does not have it. For example currentViewers is empty when the channel is offline, panel titles are often images only, and emails is filled only when the bio or panels contain one.

Can I schedule runs or use the API? Yes. Schedule the scraper (for example hourly viewership snapshots) or call it from the API and export the dataset as JSON, CSV or Excel.

Can I get only small streamers? Yes. Set Sort live streams by to Fewest viewers, or use maxFollowers / maxViewers.

⚠️ Limits

  • Chat logs and chat replay are not included.
  • Subscriber counts, revenue and private analytics are not public on Twitch, so they are not included.
  • Clips can be sorted by most viewed or trending only. Twitch has no public "newest clips" order.
  • Twitch lists at most about 1,000 clips per channel/category and about 1,000 live streams per category.
  • Video files are not downloaded. You get URLs, thumbnails and stats.

Related actors

G2
4.7/5
Excellent
Trustpilot

The internet is full of data.
Start owning yours.

Scrape.ly gives you the infrastructure, the tooling, and the team to extract, process, and operationalize web data at any scale. Setup takes minutes. The advantage lasts forever.

No credit card. No setup calls.