Twitch & Kick VOD Transcript Scraper - SRT & Text avatar

Twitch & Kick VOD Transcript Scraper - SRT & Text

Pricing

from $9.00 / 1,000 transcript, per minute of videos

Go to Apify Store
Twitch & Kick VOD Transcript Scraper - SRT & Text

Twitch & Kick VOD Transcript Scraper - SRT & Text

Transcribe Twitch and Kick VODs, clips and full broadcasts to text with AI speech recognition. Word-level timestamps, speaker labels for co-streams, SRT and VTT subtitles, 90+ languages, up to 10 hours per recording. Mix Twitch and Kick in one bulk run. No login, no API key, no downloads.

Pricing

from $9.00 / 1,000 transcript, per minute of videos

Rating

5.0

(1)

Developer

deAPI

deAPI

Maintained by Community

Actor stats

1

Bookmarked

1

Total users

1

Monthly active users

6 days ago

Last modified

Share

Get an accurate, timestamped Twitch transcript or Kick transcript from any finished broadcast. Paste one VOD link or a hundred, and the Twitch & Kick VOD Transcript Scraper returns the full text, sentence or word-level timings, speaker labels, and ready-to-use SRT and VTT subtitles. No Twitch or Kick login, no API key, no cookies, nothing to download.

Twitch and Kick publish no captions at all. There is no auto-caption track to scrape, no transcript tab, no subtitle file — which is why a six-hour broadcast is, today, completely opaque to search, to research and to any tool that reads text. This Actor listens to the audio and transcribes it, so a stream becomes something you can read, search, quote and clip from.

Why this one

A handful of tools can now put a Twitch or Kick VOD through speech recognition. What they hand back is a block of text with rough timings. This Actor times the transcript to the word and tells you who was speaking — and both of those are what turn a wall of stream text into something you can actually cut clips from or attribute quotes to. It also takes Twitch and Kick in the same run, so a research batch spanning both platforms is one job and one dataset, not two.

Caption scrapersOther stream transcribersTwitch & Kick VOD Transcript Scraper
Works on Twitch VODs❌ no caption track exists
Works on Kick VODs
Twitch and Kick in one run❌ one platform each✅ mixed freely
Word-level timings✅ every word, with confidence
Speaker labels for co-streams✅ included
Twitch clipsSometimes✅ same run, same rate
Handles a 10-hour broadcastUsually capped well below✅ up to 10 hours, no default cap
Subtitle files, properly splitRaw blocks✅ SRT + VTT, two-line cues
Dead or expired VOD detected before you are charged✅ always

What you get for every recording

  • 📝 Full transcript — clean, punctuated text of everything spoken in the broadcast.
  • ⏱️ Timestamps at the level you choose — one per sentence, one for every single word, or none at all if you just want the text. Sentence timing is in the base price.
  • 🗣️ Speaker labels — who said what, for co-streams, podcasts, watch-alongs, interviews and any broadcast with guests in the call.
  • 🎬 SRT and VTT subtitles — properly split, two lines, readable. Drop them straight into a video editor, a player or your CMS.
  • 🌍 90+ languages — auto-detected, or forced when the audio sits under loud game sound.
  • 🎮 Broadcast metadata — title, channel, stream date, view count, thumbnail, and on Twitch the game or category the stream was listed under.
  • 🔢 Confidence scores — per segment and per word, so you can flag the passages worth a human check.

How to transcribe a Twitch or Kick VOD

  1. Open the Actor and paste one or more links into Twitch or Kick video URLs.
  2. Pick a timestamp level — segment is the default and suits subtitles and reading.
  3. Switch on speaker labels if the broadcast has more than one voice.
  4. Click Start. Results appear row by row; a long broadcast reports its progress as it goes.
  5. Download the dataset as JSON, CSV or Excel, or pull it from the Apify API.
LinkWorks
twitch.tv/videos/1234567890✅ Twitch VOD
m.twitch.tv/videos/1234567890✅ rewritten for you
twitch.tv/channelname/clip/ClipSlug✅ Twitch clip
clips.twitch.tv/ClipSlug✅ resolved for you
kick.com/channelname/videos/<video-id>✅ Kick VOD
kick.com/video/<video-id>✅ resolved for you
twitch.tv/channelname❌ that is a channel page
A stream that is live right now❌ see below

Paste the same recording twice in any two of those forms and it is transcribed — and billed — once. Share links carrying ?t= collapse onto the same recording too.

How fast is it?

Every job pays a fixed setup cost of roughly a minute and a half, then transcribes very fast — about 38× real time. Measured end to end:

RecordingFinished in
4-minute Twitch VOD~1 minute 45
30-minute Twitch VOD~2 minutes 25
1-hour Kick VOD~5 minutes
10-hour broadcast (the ceiling)~17 minutes

Several recordings run in parallel, so a batch of twenty short clips finishes in about the time one of them takes.

Live streams are not supported, and cannot be

A broadcast in progress has no final length, and length is what a transcription job is priced and scheduled from. There is nothing to transcribe until the stream ends and the VOD exists. Paste a channel URL and the Actor tells you so immediately, at no charge, rather than failing halfway through a run.

Twitch and Kick both delete VODs. Retention runs from 7 days to 60 depending on the channel's plan and platform, so a broadcast you want the text of is worth transcribing sooner rather than later. Expired, private, subscriber-only and deleted recordings are all detected before anything is charged.

Pricing

Charged per minute of the recording, rounded up, with a three-minute minimum. Nothing else is metered: platform usage is on us, and subtitles, confidence scores and sentence timestamps are all in the base price.

What you asked forPrice per minute
Plain text, or sentence timestamps$0.010
Word-level timings, or speaker labels, or both$0.017
Broadcast metadata (optional add-on)$0.005 per recording

Word timings and speaker labels sit on the same higher rate, and picking both costs no more than picking one.

RecordingSentence timingWord timing or speakers
A 30-second clip (billed as 3 min)$0.030$0.051
A 20-minute highlight$0.20$0.34
A 1-hour stream$0.60$1.02
A 3-hour stream$1.80$3.06
A 6-hour stream$3.60$6.12

A note on Kick: Kick broadcasts are long. Most VODs on the platform run three to six hours, and very few are under an hour — so budget for a Kick transcript the way you would for a full stream, not for a clip. Twitch VODs and clips span the whole range.

Recordings that fail — expired, private, deleted, region-locked, too long — are never charged. Neither are recordings skipped because a run cost limit or a free-plan allowance was reached. Every one of them still gets a row explaining what happened, so nothing disappears silently from your dataset.

Set maximum cost per run to whatever you are comfortable with. The Actor checks the price of each recording before it starts work and skips anything the remaining budget cannot cover, so a run cannot overshoot the cap you set.

Free plan: one recording per run, 20 minutes maximum, 20 transcribed minutes per calendar month, resetting at 00:00 UTC on the 1st. Any paid Apify plan removes all three limits.

Output example

One row per recording. Fields shown abbreviated:

{
"url": "https://www.twitch.tv/videos/69409460",
"platform": "twitch",
"sourceType": "vod",
"sourceId": "69409460",
"status": "success",
"hasSpeech": true,
"durationSeconds": 241,
"language": "en",
"languageConfidence": 0.978,
"wordCount": 430,
"timestampLevel": "word",
"speakers": ["SPEAKER_00", "SPEAKER_01", "SPEAKER_02", "SPEAKER_03"],
"text": "That fucking hitbox is bullshit. Come on, we just got 30 seconds, just hold it...",
"segments": [
{
"start": 0.95,
"end": 35.31,
"text": "That fucking hitbox is bullshit. Come on, we just got 30 seconds...",
"avg_logprob": -0.247,
"speaker": "SPEAKER_02",
"words": [
{ "word": "That", "start": 2.051, "end": 2.171, "score": -0.2866, "speaker": "SPEAKER_02" }
]
}
],
"srt": "1\n00:00:00,950 --> 00:00:03,525\n[SPEAKER_02] That fucking hitbox\nis bullshit.\n\n...",
"vtt": "WEBVTT\n\n00:00:00.950 --> 00:00:03.525\n[SPEAKER_02] That fucking hitbox\nis bullshit.\n\n...",
"billedMinutes": 5,
"pricingOption": "precision"
}

With broadcast metadata switched on, each row also carries:

{
"metadata": {
"platform": "twitch",
"title": "whats my fkin name",
"channel": "loltyler1",
"categories": ["League of Legends"],
"streamedOn": "2016-05-29",
"viewCount": 135827,
"thumbnail": "https://static-cdn.jtvnw.net/..."
}
}

A very long broadcast produces more text than a single dataset row is allowed to hold. When that happens the heavy fields are written to the run's key-value store and linked as textUrl, srtUrl, vttUrl and segmentsUrl, and the row is flagged oversized: true. Nothing is ever truncated.

What people use this for

Use caseWhy it needs a transcript
Clip miningFind the moment someone said the thing, by searching text instead of scrubbing six hours of timeline. Word-level timings give you the exact cut point.
Stream SEOPublish a searchable text version of a VOD so it can be indexed, quoted and cited. Streams are invisible to search engines today.
RepurposingTurn one broadcast into show notes, a newsletter, chapter markers, shorts scripts and social posts.
Community moderation and safetyReview what was actually said on a broadcast, with timestamps, instead of relying on reports.
Esports and creator researchTrack how a scene talks about a patch, a roster move or a sponsor across many channels.
Sponsorship verificationConfirm a read happened, when, and in what words.
AccessibilityShip real subtitles for VOD re-uploads on platforms that accept SRT.
RAG and AI agentsFeed timestamped, speaker-labelled stream text into a vector store or an LLM pipeline.

Frequently asked questions

Can I get a transcript of a Twitch VOD?

Yes. Paste the VOD link — twitch.tv/videos/1234567890 — and the Twitch & Kick VOD Transcript Scraper returns the full text with timestamps, plus SRT and VTT subtitles. Twitch publishes no caption track, so the audio is transcribed with a speech recognition model rather than copied from anywhere.

Does it work on Kick?

Yes, the same way. Paste kick.com/channelname/videos/<video-id>. Twitch and Kick links can be mixed freely in the same run — most transcript tools cover one platform each, so a cross-platform batch normally means two separate jobs. Bear in mind that Kick VODs are usually whole multi-hour broadcasts.

Can I transcribe a live stream?

No. A broadcast in progress has no final length, and there is no recording to work from until it ends. Wait for the VOD to appear on the channel's Videos tab, then paste that link.

How long a broadcast can it handle?

Up to 10 hours per recording — long enough for almost any single stream — and there is no lower default cap to raise first. Anything longer is rejected up front, at no charge, with a message saying so. Split the broadcast or transcribe the clips instead.

Can I transcribe Twitch clips?

Yes. Both twitch.tv/channelname/clip/ClipSlug and the short clips.twitch.tv/ClipSlug form work, at the same per-minute rate with the three-minute minimum.

Can I transcribe many VODs in bulk?

Yes. Paste as many links as you like into one run; several are transcribed in parallel and each produces its own row. Duplicates are collapsed before anything is charged, so pasting the same VOD in two different link formats bills once.

Can I get SRT or VTT subtitles?

Yes, both, free of charge, on every recording with timing. They are properly split into readable two-line cues rather than dumped as one long block, and speaker labels are included in the cue text when diarization is on.

Can I tell who is speaking on a co-stream?

Yes — switch on Label speakers. Every segment, and every word when word timings are on, carries a SPEAKER_00, SPEAKER_01 … tag, and the row lists all speakers detected. On a four-way Twitch co-stream this separates the voices cleanly. No caption-based tool can do this, because there is no caption track to read speakers from.

What happens if a VOD has no speech?

You get a row with hasSpeech: false and an empty transcript, not an error. Silence, music-only and pure gameplay audio are valid outcomes. The recording is still billed, because the audio was still processed.

Why did a recording fail?

Almost always because it is gone or unreachable: Twitch and Kick delete VODs after a retention window, and the recording may also be private, subscriber-only, deleted or region-locked. Failures are detected before the work starts and are never charged. The reason is in the row's error field.

Which languages are supported?

More than 90, auto-detected by default. Set the language explicitly when a broadcast mixes languages or the speech sits under loud game audio — it noticeably improves accuracy.

Do I need a Twitch or Kick account?

No. No login, no cookies, no API key, no browser extension. Public recordings only.

Can I run this on a schedule or from my own code?

Yes. Every Apify Actor has a REST API, a scheduler, webhooks and official JavaScript and Python clients. A common pattern is a daily run over a channel's newest VODs, writing straight into a search index or a vector store.

Do you have this for other platforms?

Yes — TikTok Transcript Scraper does the same job for TikTok videos, with the same word timings, speaker labels and subtitle output.

The Actor reads publicly available recordings, the same ones any viewer can open. You are responsible for what you do with the output — quoting, publishing and re-using someone's broadcast is subject to copyright and to the platform's terms, exactly as it is if you transcribe it by hand.