Video & audio · Coming soon

Twitch Clips & VODs Export

Add Twitch channels and pick clips or VODs. Choose a date range. Each row has title, views, length, game and link. It saves data and links, not video files.

Built and tested. Prices will be shown after release.

Coming soon to the Apify StoreFollow us on Apify

What you get, for example

typeclip
channeltwitch
channelNameTwitch

How it will work: 3 steps

  1. Follow us on ApifyThe tool is built and waits in the queue for the Apify Store. Apify is the cloud platform where our tools run.
  2. Paste your input and press StartNo code needed: you fill in a form (the input). It already has a working example. For example: twitch in Channels. Each start is one run.
  3. Download the resultsWhen the run ends, the results are in a table (the dataset). Open Output, press Export and pick Excel or CSV. JSON and the API are there too.

This tool is an Apify Actor: a small program that runs on Apify. You can also run it on a schedule, for example every Monday. New to it? Read how it works, step by step and the 8 words you need first.

What it does

Twitch Clips & VODs Scraper exports the clips or past videos (VODs) of any Twitch channels for any date range, one row per clip or video with title, views, duration, clip creator, game, link and thumbnail, from the official Twitch API with your own free Twitch key.

  • Clips come most-viewed first. Twitch shows only about 1,000 clips for one date range, so for a long range the Actor splits it into smaller time windows (down to one hour). This way a channel with many thousands of clips can be exported.
  • VODs come newest first: past broadcasts, highlights and uploads. You can choose which of the three types you want.

Good for

  • Get the top clips of a streamer for a week, a month or all time.
  • Make a list of a channel's past broadcasts with titles, length and views before Twitch deletes them.
  • Compare clip activity of several channels for the same period (up to 100 channels per run).
  • Schedule a daily run to build a growing archive of fresh clips and VODs.

Not a good fit

  • No video or audio files. Use the url to watch the clip or video on Twitch.
  • No chat messages, follower counts or live streams.
  • Twitch deletes past broadcasts after 7–60 days (it depends on the streamer's account). Old broadcasts are gone and cannot be exported. Highlights and uploads stay.
  • Twitch does not send a game for VODs, so gameName is empty for VOD rows.
  • A free Twitch developer app is required. It takes two minutes to make. With no app keys, you get a single free row that explains the setup.

Who uses it

Content editors

Find the top clips of a streamer for a week or a month.

Streamers

List your past broadcasts with titles, length and views.

Analysts

Compare clip activity of several channels in the same period.

Price

Prices will be shown after release.

Questions

Do I need a Twitch key?

Yes. Make a free app in the Twitch developer console. Paste its Client ID and Secret.

Does it download videos?

No. It gives data and links only. Use the url to watch on Twitch.

Can I get many clips from a big channel?

Yes, up to 10,000 per channel per run. The Actor splits the date range into small windows.

Why is the game empty for VODs?

Twitch does not send a category for videos.

Do I need to pay Twitch?

No. Twitch does not charge for API access. You only need a Twitch login with 2FA switched on and one free app in the developer console.

Is my key safe?

Yes. clientId and clientSecret are secret inputs that Apify encrypts. They do not appear in rows, logs or RUN_SUMMARY. The temporary Twitch token exists only while the run works and is revoked at the end.

Can it download the clip or video files?

No. The Actor returns data and links only. Use url to watch on Twitch.

Can I use the data commercially?

Your use of the data falls under the Twitch developer rules for your own app. They ask for credit to Twitch and set limits on keeping some data. The source and url fields help you give credit. Check the Twitch Developer Agreement for your use.

Details

Step by step on Apify
  1. Open the Input tab.
  2. Paste your Twitch Client ID (clientId) and Twitch Client Secret (clientSecret).
  3. Keep the prefilled Channels (channels) value twitch, Export (type) value Clips and Max items per channel (maxItems) value 10, or type your own channel.
  4. Click Start.
  5. Open the Output tab and check the Clips and VODs table: title, viewCount and url for each clip.
Use cases
TaskInputYou getKey fieldsNext step
Find a streamer's best clips for a periodchannels, type: clips, startedAt, endedAtcliptitle, viewCount, creatorName, urlexport to a sheet, pick clips for a video
Archive a channel's past broadcastschannels, type: vods, vodTypes: ["archive"]VODtitle, durationSec, createdAt, urlschedule weekly before Twitch deletes them
Compare channelsseveral channels, same periodclipchannel, viewCount, createdAtspreadsheet or BI tool
Watch new clips of a channelchannels, startedAt: "1 day"clipid, createdAt, viewCountschedule + webhook to Slack or a database
Tips for better results
  • Clips come most viewed first. Use a short date range for fresh clips.
  • Use the id field to remove repeats between daily runs.
  • Pick the VOD types you want: broadcasts, highlights or uploads.
Limits and good to know
  • Each run pays the apify-actor-start fee once. This includes runs with missing or wrong Twitch keys
  • The channel fee is charged once for each channel that exists on Twitch and is searched, also when it has nothing in your period. Unknown channels are not charged
  • The api_key_required notice row is free. Skipped repeats and items outside your period or VOD types are free
  • If a run ends early, for example because your cost cap was hit, you pay only for rows that reached the Dataset
  • Platform usage (compute, storage) is included in these prices
  • Up to 100 channels and up to 10,000 items per channel in one run
  • In our tests one run saved 10,000 clips in about 100 seconds. Very big runs (many channels × many items) can reach the time limit; the Actor then keeps the saved rows and ends with PARTIAL and TIME_LIMIT. Split such work into several runs
  • Runs time out after 300 seconds by default. Work ends 15 seconds early so the summary is always written. Raising the timeout helps up to 15 minutes of work

For developers

Sample result

One result from a real test run, in JSON. Real values change from run to run. In Excel or CSV each field is a column.

one result · JSON
{
  "status": "ok",
  "id": "CrispyJollyGullHassaanChop-nPlLKGxGRcBj37e4",
  "type": "clip",
  "channel": "twitch",
  "channelName": "Twitch",
  "channelId": "12826",
  "title": "F1 2017 E3 Gameplay!",
  "creatorName": "power_tester",
  "viewCount": 4647095,
  "durationSec": 59.9,
  "createdAt": "2023-07-12T01:07:36.000Z",
  "url": "https://www.twitch.tv/twitch/clip/CrispyJollyGullHassaanChop-nPlLKGxGRcBj37e4",
  "thumbnailUrl": "https://static-cdn.jtvnw.net/twitch-video-assets/twitch-vap-video-assets-prod-us-west-2/28003ace-b7f2-4d69-950c-2aa57e8797f2/landscape/thumb/thumb-0000000000-480x272.jpg",
  "gameId": "0",
  "gameName": null,
  "language": "en",
  "vodId": null,
  "vodOffsetSec": null,
  "isFeatured": false,
  "videoType": null,
  "description": null,
  "publishedAt": null,
  "source": "twitch-helix",
  "fetchedAt": "2026-10-22T05:40:54.605Z",
  "message": null
}
Data fields (25)
FieldTypeMeaning
statusstringok = a clip or VOD; api_key_required = free notice row when the Client ID or Secret is missing.
idstringClip slug (as in clips.twitch.tv/<id>) or video id.
typestringclip or vod.
channelstringChannel login, as in twitch.tv/<login>.
channelNamestringChannel display name.
channelIdstringTwitch channel (broadcaster) id; stable.
titlestringClip or video title.
creatorNamestringClip: the viewer who made the clip. VOD: the channel.
viewCountintegerViews; null when Twitch sent no number.
durationSecnumberLength in seconds: clips with tenths (17.9), VODs whole seconds.
createdAtstringWhen the clip or video was created, ISO 8601 UTC.
urlstringLink to the clip or video on Twitch.
thumbnailUrlstringPreview image; VODs at 1280x720; null while Twitch is still processing a VOD.
gameIdstringClip: Twitch category id. Null for VODs (Twitch gives none).
gameNamestringClip: category name, e.g. Just Chatting.
languagestringTwo-letter language of the broadcast.
vodIdstringClip: the video it was cut from; null when that VOD is gone.
vodOffsetSecintegerClip: where in that video the clip starts, seconds.
isFeaturedbooleanClip: featured by the channel.
videoTypestringVOD: archive (past broadcast), highlight or upload.
descriptionstringVOD description.
publishedAtstringVOD: when it was published, ISO 8601 UTC.
sourcestringAlways twitch-helix (official Twitch API).
fetchedAtstringWhen the Actor read this row, ISO 8601 UTC.
messagestringOnly on the api_key_required row: how to get a free key.
Input settings (8)

The main fields of the input form. With the API you send them as JSON.

SettingName in the APITypeExample value
Twitch Client IDclientIdstring
Twitch Client SecretclientSecretstring
Channelschannelsarray["twitch"]
Exporttypestring"clips"
FromstartedAtstring
ToendedAtstring
VOD typesvodTypesarray["archive", "highlight", "upload"]
Max items per channelmaxItemsinteger10

Start on Apify

Make a free Apify account: you get $5 of free usage every month. Missing a tool? Suggest it. We read every idea, but we do not promise to build it.

Apify links on this page are affiliate links. We may earn a commission. You pay the same price. Affiliate disclosure