The captions of any YouTube video, Short or live stream, or of whole channels, playlists and searches, turned into clean text, timestamped segments, SRT or WebVTT, together with the video metadata. No API key and no login: you only pay for rows that return a transcript.
Quick answer: Transcripts from YouTube videos, Shorts, live streams, channels, playlists and searches as text, timestamped segments, SRT or WebVTT, with language, caption type, word count and video metadata; no API key and you only pay per transcript. Sample of 65 rows in CSV and JSON.
Mix URLs, IDs, channels, playlists and searches in the same run. You choose the output formats: text, segments, timestamped text, SRT and WebVTT.
| Input | Example | What you get |
|---|---|---|
| Video, Short or live stream | https://www.youtube.com/watch?v=… · youtu.be/… · bare ID | One row with its transcript |
| Channel | https://www.youtube.com/@TED (add /shorts or /streams) | The latest videos, with a limit and a date filter |
| Playlist | https://www.youtube.com/playlist?list=… | The playlist videos up to your limit |
| Search | "searchQueries": ["what is an AI agent"] | The top videos for each query |
| Status | Meaning | Charged |
|---|---|---|
| OK | Transcript returned | Yes |
| NO_TRANSCRIPT | The video has no captions | No |
| LANGUAGE_NOT_AVAILABLE | None of your languages exists and fallback is off | No |
| UNAVAILABLE | Private, removed, age-restricted or geo-blocked | No |
| BLOCKED · ERROR | YouTube blocked the request or an unexpected error occurred | No |
| INVALID_INPUT | The input is not a recognisable YouTube URL, ID or query | No |
This is not speech-to-text. The actor reads the captions YouTube already has, uploaded by the creator or auto-generated, and does not translate. If a video has none you get NO_TRANSCRIPT at no cost: in the TED sample the only case is a 90-second music performance.
Six real use cases: who uses them, what you do and which fields you need.
[00:01:23] …) lets the assistant cite the exact minute.Result: a per-channel corpus ready to chunk and embed, linking back to each moment of the video.timestampedText, segments, videoId, urlinputSource, title, text, viewCount, publishedAtpublishedAfter: "7 days" and receive only the new videos with their transcript: launches, messages and prices said out loud.Result: a weekly digest of what they published.channelName, publishedAt, title, textwordCount and durationSeconds help size the work.Result: drafts from what is already recorded.text, wordCount, durationSeconds, keywordssrt, vtt, availableLanguages, transcriptLanguageisAutoGenerated.Result: a corpus labelled by language and caption quality.isAutoGenerated, transcriptLanguage, originalLanguage, wordCountWhat it costs, and how long it takes, to turn hours of video into text.
| Task | Videos | With transcript | Words | Video hours | Auto-generated captions | Run time | Cost |
|---|---|---|---|---|---|---|---|
| TED channel, last 30 days | 25 | 24 | 48,586 | 5.4 | 3 of 24 | 19 s | $0.05 |
| Two Spanish searches | 40 | 40 | 244,885 | 24.8 | 36 of 40 | 31 s | $0.08 |
Runs of the two saved tasks on 16 October 2026, with 256 MB of memory.
TED uploads its own captions in several languages: one talk has 14 tracks. In the Spanish videos found by search almost everything is auto-generated. That is why isAutoGenerated matters: it tells you what quality of text you are working with.
As a rule of thumb, a TED talk of about 12 minutes is some 1,600 words, and an hour of Spanish video some 10,000.
Extracts from runs on 16 October 2026. Public samples download without signing up.
| title | durationSeconds | viewCount | wordCount | languages | isAutoGenerated |
|---|---|---|---|---|---|
| How to Start Any Conversation the Right Way | Chris Fenning |… | 667 | 209366 | 1759 | 5 | false |
| Why We Blew Up Four Dams — and Saved a River | Amy Bowers… | 777 | 81041 | 1477 | 4 | false |
| The Three Words That Saved My Life | Blake Mycoskie | TED | 937 | 120282 | 1703 | 5 | false |
| Why I’m Building Libraries Inside Prisons | Reginald Dwayne… | 749 | 46290 | 1644 | 9 | false |
| How to Clean Up the World’s Dirtiest Industry | Joojin Kim |… | 459 | 99854 | 999 | 6 | false |
| Why the Future is Human … Plus AI | Esther Perel and Sal Khan | 1247 | 99646 | 3592 | 4 | false |
Real rows from the "TED talks from the last 30 days" task. languages is the number of caption tracks in availableLanguages.
| title | durationSeconds | wordCount | transcriptLanguage | isAutoGenerated |
|---|---|---|---|---|
| 10 Herramientas de Inteligencia Artificial para NEGOCIOS | 🤖… | 2097 | 5926 | es | true |
| ¿Se puede crear una empresa solo con IA? | 909 | 2879 | es | true |
| GUÍA COMPLETA: INTELIGENCIA ARTIFICIAL para EMPRENDEDORES |… | 7650 | 23850 | es | true |
| Como implementar Inteligencia artificial en mi empresa 2026 | 874 | 2744 | es | true |
| Los 5 Mejores Negocios Con Inteligencia Artificial (Probados) | 857 | 2378 | es | true |
| Cursos de IA para Negocios 2026 | Cursos de Inteligencia… | 12057 | 26351 | es | true |
Real rows from the "Spanish searches" task. The channel is left out of these rows because many are individual creators; the actor does return it.
timestampedText)[00:00:04] I want to be long-winded and unclear. [00:00:11] It's not a common opening line. [00:00:13] Most people won't tell us when they're going to be long-winded,
Only an excerpt. The samples carry the first words of each transcript in text_excerpt. The full text belongs to its authors and you get it by running the actor.
Paste the input into the actor's JSON tab and press Start. The first two are the saved tasks used to produce the samples.
| Task | Input (JSON) | What it is for |
|---|---|---|
| TED channel, last 30 days | {"urls": ["https://www.youtube.com/@TED"], "publishedAfter": "30 days", "languages": ["en"], "outputFormats": ["text", "timestamped"], "maxVideosPerSource": 40} | A recent channel corpus, with timestamps to cite. |
| Spanish searches | {"searchQueries": ["inteligencia artificial para empresas", "qué es un agente de IA"], "languages": ["es"], "outputFormats": ["text", "segments"], "maxVideosPerSource": 20} | Researching a topic on video. |
| One video as plain text | {"urls": ["https://www.youtube.com/watch?v=jNQXAC9IVRw"], "outputFormats": ["text"]} | The quickest test. |
| A channel's Shorts | {"urls": ["https://www.youtube.com/@TED/shorts"], "maxVideosPerSource": 50} | Short videos with their text. |
| SRT and WebVTT subtitles | {"urls": ["https://www.youtube.com/playlist?list=…"], "languages": ["es", "en"], "outputFormats": ["srt", "vtt"]} | Subtitle files for a whole playlist. |
| Weekly channel monitor | {"urls": ["https://www.youtube.com/@canal-1", "https://www.youtube.com/@canal-2"], "publishedAfter": "7 days", "outputFormats": ["text"]} | Schedule it every Monday: new videos only. |
Control volume with maxVideosPerSource (per channel, playlist or search) and maxVideos (whole run). Languages go in order of preference: the first available one wins.
One row per processed video; text formats appear according to the ones you choose.
| Field | Description |
|---|---|
videoId · url · title · inputSource | Video and the input it came from (URL, channel or search) |
channelName · channelId · channelUrl | Channel |
durationSeconds · viewCount · likeCount · publishedAt | Duration, views, likes and publish date |
isLive · isLiveContent | Live right now / live or past stream |
transcriptStatus | OK, NO_TRANSCRIPT, LANGUAGE_NOT_AVAILABLE, UNAVAILABLE, BLOCKED, ERROR, INVALID_INPUT |
transcriptLanguage · originalLanguage · isAutoGenerated | Returned language, original language and whether captions are auto-generated |
availableLanguages | Every caption track with code, name and whether it is auto-generated |
segmentCount · wordCount | Number of segments and words |
text | Transcript as clean text |
segments | List of segments with start, duration, end and text |
timestampedText | Text with an [hh:mm:ss] mark per line |
srt · vtt | Subtitles in SRT and WebVTT format |
description · keywords · thumbnailUrl | Optional metadata (on by default) |
Run it yourself, receive it on a schedule or commission the project.
No. It returns the captions YouTube already has, from the creator or auto-generated. Videos without captions give a NO_TRANSCRIPT row that is not charged.
Yes. It accepts Shorts and live URLs, channels with the /shorts or /streams tab, playlists and searches, all mixed in one run.
In the first language of your languages list that exists. If none does, you get the default track (or LANGUAGE_NOT_AVAILABLE if you turn fallback off). There is no machine translation; availableLanguages lists every track.
They require a login, which the actor does not use, so they return UNAVAILABLE at no cost, like private, removed or geo-blocked videos.
Yes. Call it through the Apify API or the Apify MCP server; the timestamped text is designed for prompts and for citing the exact moment of the video.
The actor only reads public captions. You are responsible for complying with YouTube's terms, copyright and data protection when using the output. Rastriq is not affiliated with YouTube or Google.
Tell us which channels, playlists or topics you care about and we will send an extract in the schema you would receive.