YouTube Transcript Download avatar

YouTube Transcript Download

Pricing

from $5.00 / 1,000 transcript extracteds

Go to Apify Store
YouTube Transcript Download

YouTube Transcript Download

Download transcripts from YouTube videos in multiple formats. Supports playlists, channels, multiple languages, and batch processing.

Pricing

from $5.00 / 1,000 transcript extracteds

Rating

0.0

(0)

Developer

LurkAPI

LurkAPI

Maintained by Community

Actor stats

2

Bookmarked

4

Total users

2

Monthly active users

a day ago

Last modified

Share

Download transcripts, subtitles, and captions from any YouTube video. Paste a link, get the text.

๐ŸŽฌ What it does

Give it one or more YouTube video links, and it will:

  1. Download the transcript, subtitles, or captions in your preferred language
  2. Format it as plain text, SRT subtitles, VTT, CSV, XML, JSON, or timestamped text
  3. Return video details like the title, view count, channel name, and more

Works with video URLs, short links, playlists, channels, and bare video IDs.

๐Ÿ“‹ How to use it

Add YouTube video URLs in the input. You can add up to 1,000 at a time.

Supported formats:

  • https://www.youtube.com/watch?v=VIDEO_ID
  • https://youtu.be/VIDEO_ID
  • https://www.youtube.com/shorts/VIDEO_ID
  • https://www.youtube.com/live/VIDEO_ID
  • https://www.youtube.com/embed/VIDEO_ID
  • https://www.youtube.com/playlist?list=PLAYLIST_ID
  • https://www.youtube.com/@ChannelName
  • Bare video IDs (e.g. dQw4w9WgXcQ)

Step 2: Choose your options

  • Language: Pick your preferred language from the dropdown (120+ languages available), or pass an ISO 639-1 code (e.g. "en", "es", "fr") when calling via API. Defaults to English. If the requested language is not available, it will fall back to English or auto-generated captions.
  • Output Format: Choose one of: plain, timestamped, srt, vtt, json, csv, xml, or all.
  • Keep Music Markers: Set to true to keep [Music] and similar tags. Off by default.
  • Drop Empty Segments: Removes empty transcript lines after cleanup. On by default.
  • Max Videos Per Channel: When using channel URLs, limits how many videos to process (default: 50). Playlists always process all videos.
  • Channel Date From / Date To: Filter channel videos by publish date. Only videos within the date range are processed. Dates are approximate since YouTube shows relative dates like "2 days ago". Does not apply to playlists.
  • Concurrency: Number of videos to process in parallel (1-10, default 1). Higher values are faster but use more memory. Increase the run memory allocation if using concurrency above 3.

Example input (API)

{
"urls": ["https://www.youtube.com/watch?v=dQw4w9WgXcQ"],
"language": "en",
"outputFormat": "json"
}

Step 3: Run it

Click Start and wait. Each video takes a few seconds.

Step 4: Get your transcripts

Results appear in the Output tab. Each row includes:

FieldDescription
status"Success" or an actionable error message (e.g. "Video is private", "No captions available")
videoIdThe YouTube video ID
titleVideo title
transcriptThe transcript in your chosen format
languageLanguage code of the transcript that was found
isAutoGeneratedWhether the transcript is auto-generated by YouTube
channelNameName of the YouTube channel
viewCountNumber of views
likeCountNumber of likes
durationVideo length in seconds
uploadDateWhen the video was published
thumbnailUrlVideo thumbnail image
availableLanguagesList of all caption tracks available for the video (code, name, auto-generated)

When you choose the all output format, you get additional fields: transcriptTimestamped, transcriptSrt, transcriptVtt, transcriptJson, transcriptCsv, transcriptXml.

Example output

{
"status": "Success",
"videoId": "dQw4w9WgXcQ",
"title": "Rick Astley - Never Gonna Give You Up (Official Video) (4K Remaster)",
"channelName": "Rick Astley",
"language": "en",
"isAutoGenerated": true,
"transcript": "We're no strangers to love You know the rules and so do I...",
"viewCount": 1760088984,
"likeCount": 18920088,
"duration": 213,
"thumbnailUrl": "https://i.ytimg.com/vi/dQw4w9WgXcQ/maxresdefault.jpg",
"availableLanguages": [
{ "code": "en", "name": "English", "isAutoGenerated": true }
]
}

๐Ÿ“„ Output formats

FormatDescriptionExample
plainClean text with paragraph breaks (splits at pauses longer than 2 seconds)Hello world this is a test
timestampedEach line with a timestamp[00:05] Hello world
srtSubRip subtitle format1\n00:00:05,000 --> 00:00:08,000\nHello world
vttWebVTT subtitle formatWEBVTT\n\n00:00:05.000 --> 00:00:08.000\nHello world
jsonStructured JSON array[{"text":"Hello","startMs":5000,"endMs":8000}]
csvComma-separated valuesstart_ms,end_ms,start_formatted,text
xmlXML document<transcript><segment>Hello</segment></transcript>
allAll formats at onceOne field per format

Typical use cases

  • Build subtitle files (srt or vtt) for editing or publishing
  • Prepare clean text for AI/LLM pipelines (plain or json)
  • Create timestamped transcripts for compliance or QA reviews
  • Batch-export transcripts for research and analytics

๐ŸŒ Language support

The Actor tries to find a transcript in your requested language. If it is not available, it falls back in this order:

  1. Requested language (e.g. "es" for Spanish)
  2. English ("en")
  3. Any available language or auto-generated captions
  4. YouTube's internal transcript data

Most YouTube videos have auto-generated English captions available.

๐ŸŒ Proxy settings

By default, the Actor uses Apify's datacenter proxies.

  • Automatic (default): Apify selects the best proxy.
  • Datacenter: Fast and cheap. Works for most videos.
  • Residential: Use if you get frequent blocks or rate limits.
  • Own proxies: Provide your own proxy URLs.
  • No proxy: Disable proxies entirely. No IP rotation if you get blocked.

๐Ÿ’ฐ Pricing

Each successful transcript extraction is one billable event. Approximately $5 per 1,000 transcripts.

Choosing the all output format counts as a single event, not one per format. You are billed per video, not per format.

Failed extractions (private videos, videos without captions) are not charged.

๐Ÿ’ก Good to know

  • Only works with videos that have subtitles, captions, or auto-generated transcripts enabled.
  • Private and age-restricted videos cannot be processed.
  • Playlist and channel URLs are expanded into individual videos automatically.
  • Results are saved as they complete, so partial results are preserved if the run is interrupted or times out.
  • The [Music], [Applause], and similar markers are removed by default. Enable "Keep Music Markers" to keep them.
  • Duplicate video IDs are automatically skipped when processing playlists or multiple URLs.
  • Results are stored in your Apify storage. How long they are kept depends on your Apify plan.

โ“ FAQ

Can I get transcripts from private or age-restricted videos? No. Private and age-restricted videos require a logged-in YouTube account, which this Actor does not use.

What if a video has no captions? The Actor tries auto-generated captions first. If none exist, it returns an error status for that video. You are not charged.

How accurate are auto-generated captions? YouTube's auto-generated captions are generally good for clear English speech. Accuracy varies for other languages, heavy accents, or background noise.

Can I use this with the Apify API? Yes. Pass input as JSON via the API. Use ISO 639-1 language codes (e.g. "en", "es", "fr") in the language field.

Which proxy should I use? Start with the default (Automatic). Switch to Residential if you get frequent blocks or rate limits.

How long are the results stored? Results are stored in your Apify storage. How long they are kept depends on your Apify plan.

๐Ÿ”— Other tools you might like

โš–๏ธ Disclaimer

This tool is intended for personal, research, and educational use. You are responsible for complying with YouTube's Terms of Service and applicable laws in your jurisdiction. The developer is not liable for misuse. Data availability depends on YouTube at run time.

Keywords: youtube transcript, youtube subtitles, youtube captions, transcript download, youtube to text, subtitle extractor