Twitch Channel Stream Schedule Scraper avatar

Twitch Channel Stream Schedule Scraper

Pricing

Pay per event

Go to Apify Store
Twitch Channel Stream Schedule Scraper

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

Stas Persiianenko

Maintained by Community

Actor 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

FieldDescription
channelLoginTwitch channel login
channelNamePublic display name
segmentIdPublic schedule segment identifier
titleSegment title when available
startAtStart timestamp in UTC
endAtEnd timestamp in UTC when supplied
durationMinutesCalculated duration when an end time exists
isCancelledPublic cancellation flag
sourceUrlCanonical public schedule URL

Start in three steps

  1. Add channel logins or public Twitch channel URLs.
  2. Set a maximum segment count per channel.
  3. 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 tierPer exported segmentEstimated 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 startAt and endAt into 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 ApifyClient
client = 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.

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.