Twitch Public Streams, Channels, Videos and Clips Scraper
Pricing
from $2.99 / 1,000 streams
Twitch Public Streams, Channels, Videos and Clips Scraper
Extract public Twitch streams, games, channels, videos, clips, and search results through Twitch's anonymous web GraphQL surface with bounded pagination and request pacing.
Pricing
from $2.99 / 1,000 streams
Rating
0.0
(0)
Developer
w3crawler
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
Twitch Public Streams, Channels, Videos and Clips Scraper
This actor extracts public Twitch discovery data through Twitch's anonymous web GraphQL surface. It supports live streams, games/categories, search results, channel profiles, VODs, clips, and public Twitch URLs without a login or developer API key. Every response is bounded by maxResponseBytes; a local fixture mode is available for deterministic runs.
What it collects
- Live streams: title, current viewers, broadcaster, game, language/tags, images, and public URLs.
- Games/categories: names, slugs, viewer counts, tags, box art, and public category URLs.
- Channels: profile/description, follower count, partner/affiliate flags, live snapshot, and public URLs.
- VODs and clips: title, views, duration, timestamps, language, game, broadcaster/curator, thumbnails, and public URLs.
- Minimal four-field diagnostics when validation, GraphQL, blocking, or record extraction prevents public data collection.
Input
Top streams example:
{"mode": "topStreams","language": "EN","maxItems": 10,"pageSize": 10,"maxPages": 1}
Other modes are topGames, search, byChannel, byCategory, topClips, byVideo, byClip, and byUrl. Use channelName, categorySlug, videoId, clipSlug, or twitchUrls as required by the selected mode. Filters include searchType, videoSort, streamType, clipPeriod, minViewersCount, minViewCount, and containsKeyword.
Request pacing and bounds are explicit: maxItems 1–300, pageSize 1–30, maxPages 1–10, minDelayMs 100–5000, and request timeout 10–90 seconds.
Set fixtureFile to an Actor-relative JSON file containing a responses array
of GraphQL response objects to run without network access. The fixture responses
are consumed in request order and are capped at 100 entries. The committed local
input uses this mode.
Example output
{"recordType": "stream","source": "twitch.tv","provenance": "public_twitch_anonymous_graphql","streamId": "123456789","title": "Public stream title","channelName": "example_channel","gameName": "Just Chatting","viewersCount": 12000,"url": "https://www.twitch.tv/example_channel"}
Every normal record has a recordType, public provenance fields, a stable identity where available, a canonical Twitch URL, and scrapedAt. Run status and availability are in OUTPUT; diagnostics contain exactly url, error, errorCode, and scrapedAt.
Storage
- Streams, games, channels, VODs, clips, and minimal diagnostics are written to the default dataset.
- The
OUTPUTkey-value-store record contains mode, public endpoint, requested limit, result count, record types, duration, and final status.
You can download the dataset in various formats such as JSON, HTML, CSV, or Excel.
Cost and limits
Platform runtime depends on the selected pages, result limit, and request delay. The actor uses bounded GraphQL pagination, bounded retries, timeouts, response-size limits, and a minimum delay between public requests. No paid Twitch API plan is used.
Local verification
npm ci --ignore-scripts --no-audit --no-fund --prefer-offlinenpm testnpm run lintnpm run schemaapify run --purge --input-file .actor/input.jsonnpm run validate
The local QA workflow does not use apify push or apify call.
FAQ
Does this require a Twitch account or API key?
No. It is intended for information visible to anonymous public visitors.
Does it scrape chat or subscriber-only data?
No. Chat, private dashboards, subscriber-only content, and authenticated controls are outside scope.
Why can a valid Twitch mode return no records?
Twitch may return no match for the identifier/filter, change its public GraphQL contract, or limit anonymous access. The run summary and error record preserve the result.
Is the viewer count real-time or guaranteed?
No. It reflects the public response at extraction time and may be delayed or unavailable.
Disclaimer
Use this actor only for lawful, respectful access to publicly available information. Follow Twitch's terms, API/site policies, robots guidance, rate limits, and applicable laws. Do not use the output to harass creators, infer private attributes, or make decisions without independent verification.