Twitch Channel Stream Schedule Scraper
Pricing
Pay per event
Twitch Channel Stream Schedule Scraper
Export public Twitch stream schedules for creator campaigns, partnership planning, and channel availability monitoring.
Pricing
Pay per event
Rating
0.0
(0)
Developer
Stas Persiianenko
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 days ago
Last modified
Categories
Share
Export upcoming public Twitch schedule segments for creator campaigns, partnership planning, and channel availability monitoring.
What does it do?
This actor reads the public schedule exposed by Twitch for each channel you provide. It creates one dataset row for each visible schedule segment.
Use it to turn a list of creators or esports channels into structured schedule data. No Twitch account, user cookie, or personal credential is required.
Who is it for?
- ๐ฏ Creator agencies planning sponsorship timing.
- ๐ Partnership teams checking public creator availability.
- ๐ฎ Esports operators tracking programming windows.
- ๐ Automation teams that need repeatable schedule exports.
Why use it?
Public schedule pages are useful but hard to compare across many channels. This scraper standardizes the data into UTC timestamps and stable segment IDs.
It intentionally focuses on schedule monitoring rather than profiles, streams, clips, chat, or follower data.
Data you receive
| Field | Description |
|---|---|
channelLogin | Twitch channel login |
channelName | Public display name |
segmentId | Public schedule segment identifier |
title | Segment title when available |
startAt | Start timestamp in UTC |
endAt | End timestamp in UTC when supplied |
durationMinutes | Calculated duration when an end time exists |
isCancelled | Public cancellation flag |
sourceUrl | Canonical public schedule URL |
Start in three steps
- Add channel logins or public Twitch channel URLs.
- Set a maximum segment count per channel.
- Run the actor and export the default dataset as JSON, CSV, Excel, or through the API.
Input: channel logins
Use channelLogins for clean channel identifiers such as riotgames, hasanabi, or criticalrole.
{"channelLogins":["riotgames","hasanabi"],"maxSegmentsPerChannel":20}
Input: channel URLs
You can also provide public channel or schedule URLs. Both forms resolve to the channel login.
{"channelUrls":[{"url":"https://www.twitch.tv/riotgames/schedule"}],"maxSegmentsPerChannel":30}
Input limits
maxSegmentsPerChannel caps exported public segments for every channel. Start with 20 while validating a workflow, then increase it for planning exports.
The actor de-duplicates channel inputs before requesting Twitch.
Output example
{"channelLogin":"hasanabi","channelName":"HasanAbi","title":"news + reacts + gaming later","startAt":"2026-07-06T18:00:00.000Z","endAt":"2026-07-07T06:00:00.000Z","durationMinutes":720,"isCancelled":false,"timezone":"UTC"}
Empty schedules
A public channel may have no planned segments. That is a valid result: the run succeeds and emits no row for that channel.
A missing channel is logged and skipped so it does not stop the remaining inputs.
Timezone behavior
All timestamps are normalized to UTC. This avoids local timezone ambiguity when comparing creators in different regions.
Use startAt and endAt in your downstream system to render a local timezone if needed.
Cancellation behavior
The actor preserves Twitch's public isCancelled value. Keep cancelled rows in a monitoring workflow to identify changes between schedule exports.
End times and duration
Some public Twitch schedule segments do not include an end time. In that case, endAt and durationMinutes are null; the actor does not invent a duration.
Pricing
How much does it cost to scrape Twitch stream schedules?
Each run has a $0.005 start charge plus one charge for every exported schedule segment. Per-segment pricing follows your Apify plan tier:
| Apify plan tier | Per exported segment | Estimated 20-segment run* |
|---|---|---|
| Free | $0.00012420 | $0.00748 |
| Bronze | $0.00010800 | $0.00716 |
| Silver | $0.00008424 | $0.00668 |
| Gold | $0.00006480 | $0.00630 |
| Platinum | $0.00004320 | $0.00586 |
| Diamond | $0.00003024 | $0.00560 |
*Estimate = the $0.005 start charge plus 20 exported segments. A Free-plan run that exports 20 segments is therefore about $0.00748. Empty public schedules produce no per-segment charges, though the run start charge still applies.
For predictable cost, use the segment limit and export only the channels relevant to your campaign or monitoring list. The live Apify pricing panel is authoritative if platform pricing changes.
Integrations
- ๐ Send the dataset to Google Sheets for an editorial calendar.
- ๐ Compare exports on a schedule and alert when a title, time, or cancellation state changes.
- ๐งฉ Join schedule rows with your creator CRM using
channelLogin. - ๐ Convert
startAtandendAtinto calendar events in an internal workflow.
API usage
Use the Apify API to start an export and retrieve its default dataset.
JavaScript API
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('automation-lab/twitch-channel-stream-schedule-scraper').call({ channelLogins: ['riotgames'], maxSegmentsPerChannel: 20 });const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
Python API
from apify_client import ApifyClientclient = ApifyClient('YOUR_APIFY_TOKEN')run = client.actor('automation-lab/twitch-channel-stream-schedule-scraper').call(run_input={'channelLogins':['riotgames'], 'maxSegmentsPerChannel':20})print(client.dataset(run['defaultDatasetId']).list_items().items)
cURL API
$curl -X POST 'https://api.apify.com/v2/acts/automation-lab~twitch-channel-stream-schedule-scraper/runs?token=YOUR_APIFY_TOKEN' -H 'content-type: application/json' -d '{"channelLogins":["riotgames"],"maxSegmentsPerChannel":20}'
MCP
Use this actor from Claude Code or Claude Desktop through Apify MCP. Add it to Claude Code with:
$claude mcp add apify --transport http https://mcp.apify.com/?tools=automation-lab/twitch-channel-stream-schedule-scraper
For a desktop MCP configuration, use:
{"mcpServers":{"apify":{"url":"https://mcp.apify.com/?tools=automation-lab/twitch-channel-stream-schedule-scraper"}}}
Example prompts: โExport the next public Twitch schedule segments for Riot Games and HasanAbi.โ Or: โCompare the upcoming schedule availability for these creator channels and return cancelled segments.โ
The MCP workflow is useful for quick campaign availability checks without manually downloading a dataset.
Legality
Only collect public schedule information for lawful, authorized business purposes. Follow Twitch terms, applicable privacy law, and agreements you have with creators.
Data source and access
The actor accesses public schedule data exposed by Twitch's web experience. It does not use a Twitch user login, private channel data, or a creator account.
Only submit channels and use exported information in ways permitted by applicable law, Twitch terms, and your agreements with creators.
Reliability notes
Public schedule availability can change at any time. Twitch may return no schedule for a valid channel, and it may omit end times or titles.
The actor skips individual unavailable channels and continues with the rest of the list. Review logs for skipped inputs.
Tips for monitoring
Use the same channel list on a regular schedule. Save a previous dataset and compare segmentId, startAt, title, and isCancelled to detect change.
For campaign operations, start with a small list of confirmed channels rather than scraping unrelated profiles.
Troubleshooting: no rows
First open the channel's public /schedule page in a browser. If it shows no schedule, the actor has nothing public to export.
A successful run with zero rows is not an error for an empty public schedule.
Troubleshooting: invalid channel
Provide a Twitch login, a channel URL, or a /schedule URL. Do not provide video, clip, directory, or chat URLs.
The actor ignores malformed or missing channel inputs and logs the skipped value.
FAQ: do I need Twitch credentials?
No. This actor is designed for anonymous access to public schedules only.
FAQ: can it scrape streams or clips?
No. Use a dedicated Twitch stream or video actor for those workflows. This schedule-focused actor deliberately keeps the output contract narrow.
FAQ: why is recurrence unknown?
Twitch's public unauthenticated schedule response does not expose a recurrence-rule field. The actor reports recurrenceState: "unknown" rather than guessing.
Related scrapers
For broader public Twitch channel, stream, game, or clip collection, see Twitch Scraper.
Use this actor when the buyer needs planned availability, not general Twitch discovery.
Privacy and compliance
The output is limited to public channel schedule information. Do not use it to infer private activity, target protected groups, or violate creator agreements.
Always verify your intended use and retention rules before connecting the data to a CRM or outreach process.
Support
When reporting an issue, include one sample channel login, the run ID, and whether the public /schedule page showed a segment at the time of the run. This makes schedule changes easier to diagnose.
Change detection fields
Store segmentId as your primary row key. A changed startAt, endAt, title, or cancellation flag for the same ID signals a schedule update.
Treat a missing row carefully: creators can remove a future segment, or Twitch can temporarily expose no public schedule.
Operational example
A partnership team can run this actor every morning for a curated creator list. Filter rows by the next seven days, map timestamps to the campaign timezone, then notify the producer when a planned segment moves or is cancelled.