🎬 YouTube Subtitles & Captions Scraper | $5/1k | SRT & VTT avatar

🎬 YouTube Subtitles & Captions Scraper | $5/1k | SRT & VTT

Pricing

$5.00 / 1,000 subtitles extracteds

Go to Apify Store
🎬 YouTube Subtitles & Captions Scraper | $5/1k | SRT & VTT

🎬 YouTube Subtitles & Captions Scraper | $5/1k | SRT & VTT

Download YouTube subtitles and captions in bulk β€” plain text, SRT or VTT. $5 per 1,000 videos, charged only when subtitles are actually returned.

Pricing

$5.00 / 1,000 subtitles extracteds

Rating

0.0

(0)

Developer

Teco

Teco

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Share

Download YouTube subtitles and captions in bulk β€” as plain text, SRT or VTT files.

Paste a list of YouTube links, pick a language, get the captions back. No login, no API key, no browser automation. $5 per 1,000 videos, and you are charged only when subtitles are actually returned.

What you get

πŸ’° Price$5 per 1,000 videos β€” flat. Failed videos are free.
πŸ“„ FormatsPlain text Β· Timed segments Β· SRT Β· VTT
πŸ”— InputWatch URLs, youtu.be links, Shorts, Live URLs, or bare video IDs
🌍 LanguagesAny language the video has. Human-written captions preferred over auto-generated
πŸ“¦ BulkPaste hundreds of links in one run. Duplicates removed, so no double charging

How this one is different

What usually goes wrongWhat this Actor does
You get one blob of text β€” the timings are goneExports SRT and VTT with real timings, ready to drop into Premiere, DaVinci Resolve, CapCut, or a <track> tag
Videos that fail quietly vanish from the outputEvery input comes back as a row β€” with the reason it failed, plus availableLanguages so your next run can ask for the right code
You pay for videos that returned nothingCharged only when subtitles are actually returned
Datacenter IPs report "no subtitles" for videos that clearly have themResidential proxy by default. Measured on the same 10 videos: 9/10 with residential, 6/10 with datacenter β€” and the missing 3 reported "no subtitles" while having them
API keys, OAuth or browser sessions to set upNone. Paste links and run

Input

{
"videoUrls": [
{ "url": "https://www.youtube.com/watch?v=aircAruvnKk" },
{ "url": "https://youtu.be/dQw4w9WgXcQ" },
{ "url": "https://www.youtube.com/shorts/abc123XYZ99" }
],
"language": "en",
"outputFormat": "srt",
"maxVideos": 500
}
FieldTypeDefaultNotes
videoUrlsarrayβ€”Required. Any mix of URL formats or bare video IDs
languagestringenISO 639-1 code: en, es, de, fr, pt, ja, hi, …
outputFormatstringplainplain Β· segments Β· srt Β· vtt
maxVideosintegerβ€”Spending guard. Stops after N videos
proxyConfigurationobjectResidentialYouTube blocks datacenter IPs β€” keep the default

Output

One row per video.

{
"videoId": "aircAruvnKk",
"url": "https://www.youtube.com/watch?v=aircAruvnKk",
"title": "But what is a neural network?",
"author": "3Blue1Brown",
"durationSeconds": 1120,
"language": "en",
"isAutoGenerated": false,
"availableLanguages": ["en", "es", "ja", "de"],
"characterCount": 18145,
"transcript": "1\n00:00:04,220 --> 00:00:07,900\nThis is a 3...",
"error": null
}

With outputFormat: "segments" you get a segments array instead of transcript:

"segments": [
{ "start": 4.22, "duration": 3.68, "text": "This is a 3" },
{ "start": 7.90, "duration": 2.94, "text": "It's a mess of neurons" }
]

Export the dataset as JSON, CSV, Excel, XML or HTML from the Apify Console, or pull it through the API.

Use cases

  • Subtitle, translate and repurpose video β€” SRT/VTT with real timings, ready for your editor or your translator
  • Feed videos to an LLM β€” plain text output drops straight into ChatGPT, Claude or your own pipeline for summaries, Q&A and topic extraction
  • Content research β€” pull captions across a competitor's videos and search them for terms
  • Dataset building β€” bulk speech text for training, search indexes or RAG
  • Accessibility β€” attach a .vtt track to video on your own site

FAQ

Does it work on Shorts and Live replays? Yes. Watch URLs, youtu.be short links, /shorts/, /live/, /embed/ and bare 11-character video IDs are all accepted.

What if a video has no subtitles? You get a row with error explaining it, and you are not charged for that video.

What if my language isn't available? Same β€” a row with error, plus availableLanguages listing what the video does have, so your next run can ask for the right code.

Auto-generated or human captions? Whichever the video has. When both exist for your language, the human-written track wins, because auto-generated captions carry recognition errors. The isAutoGenerated field tells you which one you got.

Do I need a YouTube API key or an account? No. Nothing to configure beyond the input form.

Why residential proxies? Because datacenter IPs fail silently. YouTube does not block them β€” it returns a perfectly normal response with the caption tracks quietly removed. Measured on the same 10 videos: 9/10 with residential, 6/10 with datacenter, and the 3 missing ones reported "no subtitles" even though they clearly have them. Keep the default unless you enjoy debugging phantom failures.

How much does a run actually cost? $5 per 1,000 videos on the subtitles themselves, plus Apify platform usage (proxy traffic and compute), which is small: a typical 20-minute video moves about 12 KB.

This Actor reads caption tracks that YouTube publishes for public videos. You are responsible for how you use the output β€” check YouTube's Terms of Service and the copyright of the material you process. It does not download video or audio, and does not access private, unlisted or age-restricted content.