Twitch Public Streams, Channels, Videos and Clips Scraper avatar

Twitch Public Streams, Channels, Videos and Clips Scraper

Pricing

from $2.99 / 1,000 streams

Go to Apify Store
Twitch Public Streams, Channels, Videos and Clips Scraper

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

w3crawler

Maintained by Community

Actor 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 OUTPUT key-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-offline
npm test
npm run lint
npm run schema
apify run --purge --input-file .actor/input.json
npm 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.