
Instagram Reel Scraper
scrape.ly/store/echofield/instagram-reel-scraperSocial mediaVideos
1 monthly user

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.
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.
shroud, pokimane) or paste any Twitch URLs: channels, VODs, clips, categories, twitch.tv/directory or a search link.| Field | What it does |
|---|---|
channels | Twitch usernames or channel links. One profile row each. |
startUrls | Any Twitch links: channel, /videos/<id>, clip, /directory/category/<slug>, /directory, /directory/all, /search?term= |
categories | Game/category names or slugs. Returns their live streams. |
searchQueries | Channel search keywords |
topStreams / topCategories | Most-watched live streams / categories across Twitch |
maxItemsPerInput | Streams, search results, VODs or clips per input (default 10) |
includeVideos / includeClips | Channel VODs / clips as their own rows |
languages, streamTags, minViewers, maxViewers, minFollowers, maxFollowers, broadcasterTypes | Stream and channel filters |
minViews, dateFrom, dateTo, minDurationSeconds, maxDurationSeconds | VOD and clip filters |
{
"channels": ["shroud", "pokimane"],
"categories": ["Just Chatting"],
"languages": ["en"],
"maxFollowers": 50000,
"streamSort": "viewers",
"maxItemsPerInput": 20,
"includeVideos": false,
"includeClips": false
}
Every row has a type: channel, stream, category, video or clip. The Output tab has a table view for each type.
| Type | Main fields |
|---|---|
| channel | login, 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 |
| stream | rank, broadcasterLogin, broadcasterDisplayName, broadcasterFollowers, broadcasterType, title, viewersCount, game, language, tags, startedAt, url, previewImageUrl |
| category | rank, name, slug, viewersCount, broadcastersCount, followersCount, tags, boxArtUrl, url |
| video | title, url, viewCount, durationSeconds, game, broadcastType, language, channelLogin, thumbnailUrl, createdAt, publishedAt |
| clip | title, 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"
}
]
$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.
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.
Every field below can be set in the run form, passed through the API, or saved as a task. Unset fields fall back to the defaults shown.
channelsarrayOptionalChannel names
Twitch usernames, for example shroud or pokimane (links work too). Each channel returns one profile row with followers, partner/affiliate status, bio, social and panel links, emails found in the bio, live status, last broadcast, and its 5 latest VODs and 5 top clips.
startUrlsarrayOptionalTwitch URLs
Any Twitch links: channels (twitch.tv/shroud), VODs (twitch.tv/videos/123), clips (clips.twitch.tv/... or twitch.tv/shroud/clip/...), categories (twitch.tv/directory/category/just-chatting), twitch.tv/directory (top categories), twitch.tv/directory/all (top live streams) and searches (twitch.tv/search?term=valorant).
categoriesarrayOptionalCategories / games
Game or category names or slugs, for example Just Chatting, League of Legends or valorant. Returns the live streams in that category (viewers, title, tags, language, start time, streamer followers).
searchQueriesarrayOptionalSearch channels
Keywords to search Twitch channels by name. Returns matching channel profiles.
topStreamsbooleanOptionaldefault falseTop live streams
Add the most-watched live streams across Twitch (filter them by language or tags below).
topCategoriesbooleanOptionaldefault falseTop categories
Add the most-watched categories right now with viewer and live-channel counts.
maxItemsPerInputintegerOptionaldefault 10Max items per input
How many live streams per category, search results per keyword, top streams or top categories, and (when turned on below) VODs and clips per channel.
maxTotalItemsintegerOptionaldefault 0Max total items
Stop after this many rows across all inputs. 0 means no total limit.
What a channel (from names, links or search) returns.
includeChannelInfobooleanOptionaldefault trueChannel profiles
One row per channel with followers, bio, socials, panels, live status and last broadcast.
includeRecentContentbooleanOptionaldefault trueLatest 5 VODs and top 5 clips inside the profile
Adds recentVideos, topClips and totalVideos to each channel profile row at no extra cost.
includeVideosbooleanOptionaldefault falseVODs as separate rows
Add the channel's videos (past broadcasts, highlights, uploads) as their own rows, up to Max items per input per channel.
videoTypeenumOptionaldefault "all"VOD type
Which videos to return.
videoSortenumOptionaldefault "time"Sort VODs by
Newest or most viewed first.
includeClipsbooleanOptionaldefault falseClips as separate rows
Add the channel's clips as their own rows, up to Max items per input per channel.
includeCategoryClipsbooleanOptionaldefault falseCategory clips
Also return the top clips of each category, besides its live streams.
clipsPeriodenumOptionaldefault "ALL_TIME"Clips period
Time window for clips.
clipsSortenumOptionaldefault "views"Sort clips by
Most viewed or trending clips first.
Narrow down channels, live streams, VODs and clips. Filtered-out rows are not charged.
streamSortenumOptionaldefault "viewers"Sort live streams by
Order of live streams in categories and top streams. 'Fewest viewers' finds small streamers.
languagesarrayOptionalLanguages
Only live streams, VODs and clips in these languages, as codes or names (en, de, es, pt, German).
streamTagsarrayOptionalStream tags
Only live streams with at least one of these tags (for example English, Vtuber, DropsEnabled).
minViewersintegerOptionalMinimum viewers
Only live streams with at least this many viewers.
maxViewersintegerOptionalMaximum viewers
Only live streams with at most this many viewers.
minFollowersintegerOptionalMinimum followers
Only channels and live streams whose streamer has at least this many followers.
maxFollowersintegerOptionalMaximum followers
Only channels and live streams whose streamer has at most this many followers (good for micro-influencers).
broadcasterTypesarrayOptionalBroadcaster type
Only channels and streams of these types. Leave empty for all.
minViewsintegerOptionalMinimum views
Only VODs and clips with at least this many views.
dateFromstringOptionalCreated after
Only VODs and clips created on or after this date (YYYY-MM-DD).
dateTostringOptionalCreated before
Only VODs and clips created on or before this date (YYYY-MM-DD).
minDurationSecondsintegerOptionalMinimum duration (seconds)
Only VODs and clips at least this long.
maxDurationSecondsintegerOptionalMaximum duration (seconds)
Only VODs and clips at most this long.
proxyConfigurationobjectOptionaldefault {"useScrapelyProxy":true,"scrapelyProxyGroups":["DATACENTER…Proxy configuration
Datacenter proxies work for Twitch's public API. Switch to residential only if you see blocks.
Every run writes its results to a dataset. Preview it in the dashboard, then export it or read it through the API.
| Field | Type | Description |
|---|---|---|
| type | string | Row type: channel, stream, category, video or clip |
| id | string | number | Twitch id |
| url | string | null | Twitch page URL |
| login | string | null | |
| displayName | string | null | |
| title | string | null | |
| name | string | null | |
| followersCount | number | null | |
| viewersCount | number | null | |
| viewCount | number | null | |
| durationSeconds | number | null | |
| isLive | boolean | null | |
| isPartner | boolean | null | |
| isAffiliate | boolean | null | |
| socialLinks | array | null | |
| panelLinks | array | null | |
| emails | array | null | |
| tags | array | null | |
| recentVideos | array | null | |
| topClips | array | null |
You pay for the events the actor reports, such as each result or page it produces. Platform usage is included in the event prices.
| Event | Charged when | Price |
|---|---|---|
| Result | One channel, live stream, category, VOD or clip saved to the dataset. | $0.0015 |
Run this actor from your own code. Swap in your API token and the examples work as-is.
import { ScrapelyClient } from 'scrapely-client'
const client = new ScrapelyClient({ token: process.env.SCRAPELY_TOKEN })
// Start the actor and wait for the run to finish.
const run = await client.actor('echofield/twitch-scraper').call({
"channels": [
"shroud",
"pokimane"
],
"maxItemsPerInput": 10,
"proxyConfiguration": {
"useScrapelyProxy": true,
"scrapelyProxyGroups": [
"DATACENTER"
]
}
})
// Read the dataset the run produced.
const { items } = await client.dataset(run.defaultDatasetId).listItems()
console.log(items)Tokens live in your account settings. Keep them server-side: a token carries the full permissions of your account.
Connect the Scrape.ly MCP server once and your agent can run this actor as a tool. Pick your tool:
Fetch scrape.ly/agents.md and run echofield/twitch-scraperPaste into Claude Code, Codex, Cursor or any AI agent. It signs you in once in the browser.
{
"mcpServers": {
"scrapely": {
"url": "https://api.scrape.ly/mcp?tools=actors,runs,storage,docs&actors=echofield/twitch-scraper"
}
}
}No key in the file: your client opens the browser to sign you in the first time it connects.
Inputs the developer prepared for common jobs. Open one to see its input, then copy it to your account to run it as-is or adjust it.
Most-watched live streams in English.
A channel's past broadcasts and clips.
Live streams in one category.
Channels found by search term.
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.