YouTube Transcript Scraper avatar

YouTube Transcript Scraper

Pricing

from $4.00 / 1,000 transcripts

Go to Apify Store
YouTube Transcript Scraper

YouTube Transcript Scraper

Bulk-extract YouTube video transcripts and subtitles. Manual and auto-generated captions, 100+ languages, optional translation, plain text, timestamped segments, and SRT output.

Pricing

from $4.00 / 1,000 transcripts

Rating

0.0

(0)

Developer

Vince Gonzalez

Vince Gonzalez

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

Bulk-extract transcripts and subtitles from YouTube videos. Give it a list of video URLs (or IDs); get back clean, structured transcript data for each one — plain text, timestamped segments, and optional ready-to-use SRT subtitle files.

Built for researchers, AI/ML teams building training corpora, content analysts, translators, and anyone who needs YouTube captions at volume without touching a browser.


What it does

  • Manual and auto-generated captions. Prefers human-uploaded captions; falls back to YouTube's automatic speech recognition when that's all a video has.
  • 100+ languages. Ask for a preferred language; the actor picks the best matching track.
  • On-the-fly translation. When your language isn't available, optionally have YouTube machine-translate an existing track into it.
  • Three output shapes per video: one flat text string, an array of { start, dur, text } segments, and (optionally) a complete .srt.
  • Bulk and resilient. Processes many videos in parallel, retries transient failures on fresh proxy sessions, and never lets one bad video stop the run — videos without captions or that are private/removed come back as clearly labeled rows.

Input

FieldTypeDescription
videoUrlsarray (required)YouTube URLs (watch, youtu.be, shorts, embed, live) or bare 11-character IDs. Duplicates removed automatically.
languagestringPreferred ISO language code (en, es, de, pt, ja, …). Default en.
translatebooleanMachine-translate into language when no native track exists. Default false.
includeSrtbooleanAdd an .srt string to each result. Default false.
concurrencyintegerVideos processed in parallel, 1–20. Default 5.
maxRetriesintegerRetries per video, each on a fresh proxy session. Default 3.
proxyConfigurationobjectApify Proxy recommended — YouTube throttles repeated requests from one address.

Example input

{
"videoUrls": [
"https://www.youtube.com/watch?v=dQw4w9WgXcQ",
"https://youtu.be/jNQXAC9IVRw",
"9bZkp7q19f0"
],
"language": "en",
"includeSrt": true,
"concurrency": 5,
"proxyConfiguration": { "useApifyProxy": true }
}

Output

Each video becomes one dataset row.

{
"videoId": "dQw4w9WgXcQ",
"url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
"title": "Rick Astley - Never Gonna Give You Up (Official Video) (4K Remaster)",
"channel": "Rick Astley",
"lengthSeconds": 213,
"status": "ok",
"language": "en",
"trackKind": "manual",
"translated": false,
"segmentCount": 61,
"text": "We're no strangers to love ...",
"segments": [
{ "start": 18.56, "dur": 3.2, "text": "We're no strangers to love" }
],
"srt": "1\n00:00:18,560 --> 00:00:21,760\nWe're no strangers to love\n\n..."
}

status is one of:

  • ok — transcript extracted.
  • no-captions — video exists but has no captions in any usable form.
  • error — video is private, removed, age-restricted beyond reach, or otherwise unavailable (see the error field).

Filter for status = "ok" to get just the successful transcripts.

Pricing

Pay-per-event: you are charged only for each transcript successfully returned (status = "ok"). Videos with no captions or that fail cost nothing.

Notes & limits

  • Some videos genuinely have no captions — that is a property of the video, not a failure of the actor.
  • Live streams that are still running, private videos, and members-only content cannot be transcribed.
  • Using Apify Proxy (or your own residential proxy) is strongly recommended for any run of more than a handful of videos.
  • This actor reads publicly available caption data. You are responsible for using the output in accordance with YouTube's Terms of Service and applicable copyright law in your jurisdiction.

Running locally (developers)

npm install
npm test # runs src/test-local.js against live YouTube, no Apify runtime needed

The transcript logic lives in src/transcript.js and has no dependency on the Apify SDK, so it is unit-testable with plain Node 18+.


www.f-keys.com | © 2026 F-Keys Creative LLC