YouTube Transcript AI: Subtitles, SRT & Speakers
Pricing
from $1.06 / 1,000 transcript, per minute of videos
YouTube Transcript AI: Subtitles, SRT & Speakers
AI YouTube transcription from the audio, so videos with no captions work too. Get a timestamped YouTube transcript with word timings, speaker labels and SRT/VTT subtitles for videos, Shorts and finished livestreams. 90+ languages, about $0.001/min. No login or API key.
Pricing
from $1.06 / 1,000 transcript, per minute of videos
Rating
0.0
(0)
Developer
deAPI
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Transcribe any public YouTube video to text from the audio — even videos with no captions, Shorts and finished livestreams. Get the YouTube transcript with timestamps, speaker labels and SRT/VTT subtitles. Paste one link or a thousand, and YouTube Transcript AI returns the full text, sentence or word-level timings and ready-to-use subtitle files. No YouTube login, no API key, no cookies, nothing to download.
deAPI video tools
- Need what happens on screen instead of what is said? → AI Video Analyzer: Scenes, Events & Timestamps
- Working with TikTok? → TikTok Transcript from Audio: SRT, VTT & Speakers
- Working with Twitch or Kick? → Twitch & Kick VOD Transcriber: SRT, VTT & Speakers
What does YouTube Transcript AI do?
Most YouTube transcript tools copy the caption track. That works until it does not: plenty of videos have no captions at all, auto-captions are switched off, missing for the language spoken, or so rough they are unusable. This Actor does not read captions. It listens to the audio and transcribes it with an AI speech recognition model, so every public video comes back as clean, punctuated text with timings — whether or not YouTube ever captioned it.
It works as a YouTube transcript API: paste video links, get back text, timings, speakers and subtitle files as structured data.
Why transcribe from the audio, not captions?
- Works without captions — the audio is transcribed, not the caption track.
- Word-level timings — every word, with a confidence score.
- Speaker labels — who said what, for podcasts, interviews and panels.
- Shorts and finished livestreams — same run, same rate.
- Up to 10 hours per video — full lectures, streams and conferences.
- SRT and VTT subtitles, properly split — two-line cues, ready for an editor.
- Private or deleted videos detected before you are charged — always.
- Priced at cost — about a tenth of a cent per minute of audio.
| YouTube captions | YouTube Transcript AI | |
|---|---|---|
| Videos with no captions | ❌ nothing to read | ✅ transcribed from the audio |
| Punctuation | Often poor on auto-captions | ✅ full sentences |
| Word-level timings | ❌ | ✅ every word, with confidence |
| Speaker labels | ❌ | ✅ included |
| Subtitle files | Raw caption track | ✅ SRT + VTT, two-line cues |
| Price per 10-minute video | — | $0.0181 |
What data can you get?
| Data | Details |
|---|---|
| 📝 Full transcript | Clean, punctuated text of everything spoken in the video. |
| ⏱️ Timestamps | At the level you choose — one per sentence, one for every single word, or none at all. Sentence timing is in the base price. |
| 🗣️ Speaker labels | SPEAKER_00, SPEAKER_01 … on every segment and word, for podcasts, interviews, panels and webinars. |
| 🎬 SRT and VTT subtitles | Properly split, two lines, readable. Drop them straight into a video editor, a player or your CMS. |
| 🌍 Language | 90+ languages. Set the spoken language for the most reliable result, or leave it on auto-detect. |
| 📺 Video metadata (optional) | Title, channel, description, view count and like count. |
| 🔢 Confidence scores | Per segment and per word, so you can flag the passages worth a human check. |
How to transcribe a YouTube video
- Open the Actor and paste one or more links into YouTube video URLs.
- Pick a timestamp level — segment is the default and suits subtitles and reading.
- Switch on Label speakers if the video has more than one voice.
- Pick the spoken language if you know it. Auto-detect can misidentify the language, which lowers accuracy.
- Click Start. Results appear row by row.
- Download the dataset as JSON, CSV or Excel, or pull it from the Apify API.
A step-by-step walkthrough with code is in the tutorial below.
Which links work
| Link | Works |
|---|---|
youtube.com/watch?v=7qaiNfoMRts | ✅ video |
youtu.be/7qaiNfoMRts | ✅ share link |
youtube.com/shorts/<id> | ✅ Short |
youtube.com/live/<id> | ✅ finished livestream |
m.youtube.com/…, music.youtube.com/watch?v=…, youtube.com/embed/<id> | ✅ rewritten for you |
youtube.com/@channel, youtube.com/playlist?list=… | ❌ paste the individual videos |
| A stream that is live right now | ❌ wait until it ends |
Paste the same video twice in any two of those forms — a share link and a timestamped watch link, say — and it is transcribed, and billed, once.
How fast is YouTube transcription?
A 72-second video is transcribed in under 30 seconds. Long videos go many times faster than real time, so a one-hour lecture takes a few minutes. Several videos run in parallel, so a batch of short videos finishes in about the time one of them takes.
Input
{"videoUrls": ["https://www.youtube.com/watch?v=7qaiNfoMRts"],"timestampLevel": "segment","diarize": false,"language": "en","includeSubtitles": true,"includeMetadata": false,"maxConcurrency": 3}
Output
One row per video, downloadable as JSON, CSV or Excel. This is the real result for the example above, shortened:
{"url": "https://www.youtube.com/watch?v=7qaiNfoMRts","videoId": "7qaiNfoMRts","sourceType": "video","status": "success","hasSpeech": true,"durationSeconds": 72,"language": "en","languageConfidence": 0.9937,"wordCount": 176,"timestampLevel": "segment","text": "Every builder wants powerful AI in their app without queues, GPU bills, or weeks of setup. But today, you either pay premium prices or fight with complex infrastructure...","segments": [{"start": 0,"end": 28.93,"text": "Every builder wants powerful AI in their app without queues, GPU bills, or weeks of setup...","avg_logprob": -0.0544}],"speakers": [],"srt": "1\n00:00:00,000 --> 00:00:02,913\nEvery builder wants powerful AI in their\napp\n\n2\n00:00:02,913 --> 00:00:05,892\nwithout queues, GPU bills, or weeks of\nsetup.\n\n...","vtt": "WEBVTT\n\n00:00:00.000 --> 00:00:02.913\nEvery builder wants powerful AI in their\napp\n\n...","billedMinutes": 2,"pricingOption": "standard"}
With word-level timestamps on, each segment also carries a words list — { "word": "Every", "start": 0.0, "end": 0.32, "score": -0.11 } — and with speaker labels on, every segment and word carries a speaker.
With video metadata switched on, each row also carries:
{"metadata": {"title": "deAPI – Build AI apps with low cost API","channel": "deAPI","description": "deAPI is a low-cost and scalable API for running open-source AI models...","viewCount": 720606,"likeCount": 13}}
A very long video 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.
How much does it cost?
$0.0075 per video + $0.00106 per minute (standard). Word-level timings or speaker labels are $0.01063 per video + $0.00154 per minute.
Charged per transcribed video plus every started minute of it — so a 72-second video bills two minutes. The per-video fee covers the fixed setup every transcription job pays; the per-minute rate covers the audio itself. One price on every Apify plan. 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 for | Per video | Per minute |
|---|---|---|
| Plain text, or sentence timestamps | $0.0075 | $0.00106 |
| Word-level timings, or speaker labels, or both | $0.01063 | $0.00154 |
| Video metadata (optional add-on) | $0.00625 | — |
Word timings and speaker labels sit on the same higher rate, and picking both costs no more than picking one.
| Video | Sentence timing | Word timing or speakers |
|---|---|---|
| A 1-minute Short | $0.00856 | $0.01217 |
| A 3-minute Short | $0.01068 | $0.01525 |
| A 10-minute video | $0.0181 | $0.02603 |
| A 1-hour podcast or lecture | $0.0711 | $0.10303 |
| A 3-hour livestream | $0.1983 | $0.28783 |
| A 10-hour stream (the ceiling) | $0.6435 | $0.93463 |
That is $8.56 per 1,000 one-minute Shorts and about $0.001 per minute on longer videos — the price of the speech recognition itself plus Apify's platform costs and fee, with no markup beyond that.
Videos that fail — private, members-only, deleted, region-locked, still live, longer than 10 hours — are never charged. Neither are videos skipped because a run cost limit or a free-plan allowance was reached. Every one of them still gets a row explaining what happened.
Set maximum cost per run to whatever you are comfortable with. The Actor prices each video before it starts work and skips anything the remaining budget cannot cover, so a run cannot overshoot the cap you set.
Free plan: 3 videos per run, 30 minutes maximum each, 60 transcribed minutes per calendar month, resetting at 00:00 UTC on the 1st. Free-plan transcription also shares a daily capacity across all free users; when it runs out, videos are skipped at no charge until 00:00 UTC. Any paid Apify plan removes every limit.
Use cases
| Use case | Why it needs a transcript |
|---|---|
| Content repurposing | Turn a video into a blog post, newsletter, show notes, quotes and social posts. |
| SEO and chapters | Publish a searchable text version and build chapter markers from the timestamps. |
| Research and monitoring | Track what creators, competitors or politicians actually said, with the timestamp to prove it. |
| Podcasts and interviews | Speaker-labelled transcripts of long conversations, ready to quote. |
| Education | Lecture and tutorial transcripts for notes, search and study guides. |
| Accessibility | Ship real SRT and VTT subtitles for videos that were never captioned. |
| RAG and AI agents | Feed timestamped, speaker-labelled text into a vector store or an LLM pipeline. |
| Clip finding | Search the text for the moment something was said, and cut on the word timings. |
Tutorial: transcribe YouTube videos with the API
A short walkthrough from one video in the Console to a scheduled batch from code.
1. One video in the Console
Open the Actor, keep the prefilled link https://www.youtube.com/watch?v=7qaiNfoMRts, set Spoken language to English and click Start. After about half a minute the Transcripts view shows one row: 72 seconds, 176 words, language en. Open the Subtitles view and copy the srt field into a .srt file — it plays in VLC or YouTube Studio as is.
2. The same run from Python
from apify_client import ApifyClientclient = ApifyClient("<YOUR_APIFY_TOKEN>")run = client.actor("deapi/youtube-transcript-ai").call(run_input={"videoUrls": ["https://www.youtube.com/watch?v=7qaiNfoMRts"],"language": "en","timestampLevel": "segment","includeSubtitles": True,})for row in client.dataset(run["defaultDatasetId"]).iterate_items():if row["status"] != "success":print(row["url"], row["error"])continueprint(row["videoId"], row["durationSeconds"], "s,", row["wordCount"], "words")with open(f'{row["videoId"]}.srt', "w", encoding="utf-8") as srt:srt.write(row["srt"] or "")
3. From JavaScript or cURL
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });const run = await client.actor('deapi/youtube-transcript-ai').call({videoUrls: ['https://www.youtube.com/watch?v=7qaiNfoMRts'],language: 'en',});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items[0].text);
curl -X POST "https://api.apify.com/v2/acts/deapi~youtube-transcript-ai/run-sync-get-dataset-items?token=<YOUR_APIFY_TOKEN>" \-H "Content-Type: application/json" \-d '{"videoUrls": ["https://www.youtube.com/watch?v=7qaiNfoMRts"], "language": "en"}'
4. Speakers and word timings
For a podcast or an interview, set "diarize": true and "timestampLevel": "word". Every word then carries start, end, score and speaker, and the SRT cues are prefixed with [SPEAKER_00]. Both options together cost the same as either one.
5. A whole channel or playlist
This Actor takes video URLs. To transcribe a channel or a playlist, list its videos first with a YouTube scraper (for example streamers/youtube-scraper), then pass the url field of its dataset into YouTube video URLs. Set Videos in parallel to 5–10 for large batches and a maximum cost per run to cap the spend.
6. Keep it running
Save your input as a Task, add a Schedule (for example daily), and attach a webhook or an integration (Make, Zapier, n8n, Google Drive) to send each new transcript where you need it.
YouTube transcript API and integrations
Every Apify Actor has a REST API, a scheduler, webhooks and official JavaScript and Python clients. It also runs from Make, Zapier, n8n and as a tool for AI agents through the Apify MCP server.
FAQ
Does it work on videos without captions?
Yes — that is the point of it. The audio is transcribed with AI speech recognition, so it does not matter whether the video has captions, auto-captions, captions in a different language, or none at all.
Is it better than YouTube's auto-captions?
Usually, yes. You get properly punctuated sentences, word timings with confidence scores, speaker labels and cleanly split subtitle cues. Auto-captions are often poorly punctuated, have no speakers, and are missing on many videos.
How do I convert a YouTube video to text?
Paste the video link into YouTube video URLs and click Start. The text field of the result is the full transcript; export the dataset as JSON, CSV or Excel, or read it from the API.
How do I download a YouTube transcript?
Open the run's Storage tab and export the dataset, or copy the srt / vtt field from the Subtitles view into a .srt or .vtt file. From code, read the dataset items as in the tutorial.
Is there a YouTube transcript API?
Yes — this Actor is one. Call it over the Apify REST API (see the cURL example in the tutorial), from the JavaScript or Python client, or as a tool for AI agents through the Apify MCP server.
Can I generate subtitles for a YouTube video?
Yes. It works as a subtitle generator: every run returns SRT and VTT files built from the audio, ready for YouTube Studio, a video editor or a web player.
Can I get a YouTube Shorts transcript?
Yes. Paste youtube.com/shorts/<id> and it is handled like any other video. A one-minute Short costs $0.00856, a three-minute one $0.01068.
Can I transcribe a livestream?
A finished one, yes — youtube.com/live/<id> works once the stream has ended and the recording is available. A stream that is still live has no final length and is rejected up front, at no charge.
How long a video can it handle?
Up to 10 hours per video. Anything longer — or a livestream that is still running — is rejected before work starts, at no charge, with a message saying so.
Can I transcribe a whole channel or playlist?
Not from the channel or playlist link itself — paste the individual videos. A YouTube scraper can list them for you; see step 5 of the tutorial.
Can I transcribe many videos 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.
Can I get SRT or VTT subtitles?
Yes, both, free of charge, on every video with timing. They are split into readable two-line cues, and speaker labels are included in the cue text when speaker labels are on.
Which languages are supported?
More than 90, auto-detected by default.
How accurate is it?
On clear speech the transcript is close to what a careful human would type, with punctuation and capitalisation. Accuracy drops with heavy music, crosstalk and strong background noise; each segment and word carries a confidence score so you can find the passages worth a second look, and setting the spoken language helps more than anything else.
Should I set the language or leave auto-detect on?
Set it whenever you know it. Auto-detect can misidentify the language, which lowers transcription accuracy, especially on videos that open with music or an intro.
The setting applies to every URL in the run. For videos in different languages, start one run per language, or keep auto-detect and check language and languageConfidence on each row. A confidence below about 0.8 on a video with speech means it is worth re-running with the language set.
What happens if a video has no speech?
You get a row with hasSpeech: false and an empty transcript, not an error. Music videos and silent clips are valid outcomes. The video is still billed, because the audio was still processed.
Why did a video fail?
Almost always because it is unreachable: private, members-only, age-restricted, deleted, region-locked, or still live. Failures are detected before the work starts and are never charged. The reason is in the row's error field.
Do I need a YouTube account or API key?
No. No login, no cookies, no YouTube API key, no browser extension. Public videos only.
Is it legal to transcribe YouTube videos?
The Actor reads publicly available videos, the same ones any viewer can open. You are responsible for what you do with the output — quoting, publishing and re-using someone's video is subject to copyright and to YouTube's terms, exactly as it is if you transcribe it by hand. Please respect YouTube's terms and the rights of the creators.
Support / feedback
Found a bug, hit a video that will not transcribe, or want a feature? Open a ticket in this Actor's Issues tab on its Apify Store page and include the video URL and run ID where you can.