Twitch Scraper — Channels, Streams, Videos, Clips & Chat avatar

Twitch Scraper — Channels, Streams, Videos, Clips & Chat

Pricing

from $1.50 / 1,000 results

Go to Apify Store
Twitch Scraper — Channels, Streams, Videos, Clips & Chat

Twitch Scraper — Channels, Streams, Videos, Clips & Chat

Scrape public Twitch data without login: channel profiles with followers and live status, live streams by category and language, top streams and categories, channel videos, clips, stream schedules, search and VOD chat replay. Flat rows, date filters, GDPR-minded.

Pricing

from $1.50 / 1,000 results

Rating

0.0

(0)

Developer

Banea Teodor

Banea Teodor

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Categories

Share

Twitch Scraper — Channels, Streams, Videos, Clips, Schedule & Chat

What does Twitch Scraper do?

Twitch Scraper collects public Twitch data — no login, no proxy setup, no API key needed. Pick one mode per run:

ModeYou enterYou get
Channel profileschannel names or URLs (up to 1,000 per run)followers, partner / affiliate, live now (viewers, title, category, tags), last stream, video count, team, images; optional social links, business e-mail and panels
Live streams in categoriescategory names, slugs or URLs (+ optional languages)live streams with viewers, start time, language, tags, preview image and broadcaster followers
Top live streams— (optional languages)the most watched live streams right now — Twitch lists the top 30 per language, so add languages for more
Top categories—the 100 most watched categories with viewers, live channels, followers, box art and tags
Channel videoschannel names or URLspast broadcasts, highlights and uploads with length, views, category, chapters
Clipschannels and/or categories + periodclips with views, duration, clip creator, source video and offset
Searchsearch termschannels (full profile rows), categories or videos
Stream scheduleschannel names or URLsthe next 25 upcoming schedule segments (start, end, title, categories, cancelled)
VOD chat replayvideo IDs or video URLsevery chat message of a past broadcast with its offset, time, text and emotes — authors pseudonymised by default

Every row is flat, has the same keys for its type (missing values are null, never left out), uses ISO 8601 UTC dates, integer counters and absolute image URLs.

Why use this Actor?

  • Nine data types in one Actor — profiles, live directories, videos, clips, schedules, search and chat replay.
  • Fast and cheap — up to 35 channels per request; 1,000 channel profiles take about 2 minutes.
  • More than a first page — Twitch shows visitors 30-100 items per list (other Twitch actors stop at 30 per page); this Actor reads category and channel lists in several orders, languages and types and merges them without duplicates.
  • Privacy-minded defaults — social links, e-mails, panels and chat usernames are off unless you turn them on.
  • Scheduling-friendly — "Started / created after" keeps only new streams, videos and clips; the Actor leaves no storage behind in your account.

How much does it cost?

The Actor is priced per result: $1.50 per 1,000 rows plus $0.005 per run start. Platform usage is included.

Example runRowsPrice
20 channel profiles (the prefilled input)20$0.035
1,000 channel profiles1,000$1.505
1,000 live streams of one category in 11 languages1,000$1.505
300 newest videos of 3 channels300$0.455
2,000 chat messages of one broadcast2,000$3.005
The whole chat of a busy 2.4-hour broadcast (≈ 73,000 messages)73,000≈ $110

Channels, categories or videos that do not exist produce no rows and cost nothing beyond the start fee.

Input

FieldDescriptionExample
modeWhat to scrape (see the table above)."categoryStreams"
channelsChannel names or channel URLs.["examplestreamer", "https://www.twitch.tv/anotherchannel"]
categoriesCategory names as Twitch shows them, slugs or category URLs.["Just Chatting", "valorant"]
searchQueries / searchTargetSearch terms and what to search for (channels, categories, videos).["speedrun"], "channels"
videoIdsVideo IDs or URLs for chat replay.["https://www.twitch.tv/videos/1234567890"]
languagesStream languages (category and top streams). Each language is its own list, so several languages also return more streams.["en", "de"]
sortStreams: most viewers, fewest viewers, most recent. Videos: newest, most viewed."viewers"
videoTypesPast broadcasts, highlights, uploads.["ARCHIVE"]
clipPeriodLast 24 hours, 7 days, 30 days or all time."LAST_WEEK"
startedAfterKeep only streams started, videos created and clips created from this date or period on."2026-10-01" or "7 days"
maxChatMessagesPerVideo, chatFromSeconds, chatToSecondsChat replay limit per video (0 = up to 100,000) and time window.2000, 0, 3600
includeContactInfo, includePanels, includeChatUsernamesOptional personal / long fields (all off by default).false
maxResultsPerTargetRows per channel, category or search term (0 = all Twitch shows).100
maxResultsRows per run (0 = unlimited, capped at 10,000).200

Output

One dataset per run; the row type follows the mode. Example rows (fictitious):

{
"rowType": "channel",
"channelId": "123456789",
"login": "examplestreamer",
"displayName": "ExampleStreamer",
"url": "https://www.twitch.tv/examplestreamer",
"description": "Variety streams every evening.",
"createdAt": "2019-04-01T12:00:00.000Z",
"followers": 125000,
"isPartner": false,
"isAffiliate": true,
"isLive": true,
"viewers": 1520,
"streamTitle": "Ranked grind until diamond",
"streamGame": "Example Game",
"streamStartedAt": "2026-10-22T17:00:00.000Z",
"streamLanguage": "en",
"streamTags": ["English", "Chill"],
"isMature": false,
"language": "en",
"lastStreamAt": "2026-10-22T17:00:00.000Z",
"lastStreamTitle": "Ranked grind until diamond",
"lastStreamGame": "Example Game",
"totalVideos": 340,
"teamName": "Example Team",
"primaryColorHex": "#00ADFF",
"profileImageUrl": "https://static-cdn.jtvnw.net/jtv_user_pictures/example-profile_image-300x300.png",
"bannerImageUrl": "https://static-cdn.jtvnw.net/jtv_user_pictures/example-profile_banner-480.png",
"offlineImageUrl": null,
"socialLinks": [],
"businessEmail": null,
"panels": [],
"searchQuery": null,
"scrapedAt": "2026-10-23T10:00:00.000Z"
}
{
"rowType": "chatMessage",
"messageId": "00000000-0000-4000-8000-000000000001",
"videoId": "1234567890",
"videoOffsetSeconds": 3605,
"createdAt": "2026-10-21T19:43:05.120Z",
"authorId": null,
"authorLogin": "user-1a2b3c4d",
"authorDisplayName": null,
"text": "gg :ExampleEmote:",
"emoteNames": ["ExampleEmote"],
"isSubscriber": true,
"isModerator": false,
"scrapedAt": "2026-10-23T10:00:00.000Z"
}

Stream, video, clip, category and schedule rows are documented field by field in the dataset schema (the Output tab has one table view per row type). Channels, categories or videos that could not be found or read are listed in the run's key-value store under ERRORS.

Tips and tricks

  • What is complete and what is a sample. Twitch shows visitors only the first 100 items of each list (30 for the site-wide top streams). The Actor reads each list in several orders (and languages for streams; video types for videos; periods for clips) and merges them, which typically gives a few hundred streams per category or videos per channel — not a full archive. For more live streams of a big category, add languages. Search returns up to about 1,000 results per term. Search returns what Twitch shows, and the status says when that is fewer than the matches Twitch counts ("Twitch shows 923 of 7,984 matches"). Channel profiles and chat replay are complete; schedules are the next 25 upcoming segments, not the history.
  • Chat replay size and cost. Busy broadcasts have 3.7-8.5 chat messages per second: a busy 2.4-hour broadcast ≈ 73,000 messages (≈ $110 at $1.50 per 1,000), a busy 10-hour one ≈ 133,000 (≈ $200). About 27 new messages are read per request. Use the time window (chatFromSeconds / chatToSeconds) and maxChatMessagesPerVideo to read only the part you need. Twitch deletes past broadcasts after 7-60 days.
  • Stream languages. Twitch files streams under the broadcaster's language; the Actor also drops the few streams whose own language is another one.
  • Followers lists and the live viewer list are not public on Twitch — the Actor returns the counts only.
  • Category names must match Twitch ("Just Chatting"); the slug from the category URL (just-chatting) always works.

Scheduling

Schedule the Actor (for example hourly or daily) with Started / created after set to a period slightly longer than the schedule interval (e.g. "2 days" for a daily run). Rows carry stable IDs (streamId, videoId, clipId, messageId), so downstream tools can de-duplicate the small overlap. The Actor keeps nothing between runs — no named storage is created in your account.

Personal data

Streamers are public figures; their public profile data is returned. Note that a public bio or a video description can itself contain an e-mail address or other contact details even when contact info is off — the text is returned as written. Contact details (social links, business e-mail found in descriptions or panels) and panel texts are only added when you turn them on. Chat authors are replaced by a pseudonym that stays the same within one run ("user-1a2b3c4d") unless you turn on real usernames — names inside the message text (@mentions, the viewer named in subscription and gift notices, gift recipients) get the same pseudonyms; chat colours and badge lists are never output (only whether the author was a subscriber or moderator). Make sure you have a legitimate purpose when you process personal data.

Integrations

Export the dataset as JSON, CSV, Excel or XML, or connect it to Google Sheets, Zapier, Make, Slack, Airbyte or your own code through the Apify API and webhooks. Each run has table views per row type (Channels, Streams, Videos, Clips, Categories, Schedule, Chat).