YouTube Transcript API & Translator - SRT Subtitles avatar

YouTube Transcript API & Translator - SRT Subtitles

Pricing

$2.99 / 1,000 transcripts

Go to Apify Store
YouTube Transcript API & Translator - SRT Subtitles

YouTube Transcript API & Translator - SRT Subtitles

Turn YouTube videos into text for AI, research or subtitles. Transcript API & translator, no API key, no browser: transcripts and captions by video, playlist, channel or keyword, in bulk, with timestamps, SRT/VTT files and translation to 55 languages that keeps the timings. $2.99 per 1,000.

Pricing

$2.99 / 1,000 transcripts

Rating

0.0

(0)

Developer

Quiet Harvest

Quiet Harvest

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

7 days ago

Last modified

Share

This YouTube transcript API gets the transcript (captions, subtitles) of YouTube videos by URL, playlist, channel or keyword search. No API key, no login, no cookies. Plain text, timed segments, or SRT / VTT files, and it can translate into 55 languages with the timings kept.

$2.99 per 1,000 transcripts. You only pay for transcripts actually returned.

Quick start

Runs as-is with this input (the same input Apify tests daily):

{
"videoUrls": [
"https://www.youtube.com/watch?v=OrElyY7MFVs"
]
}

Main output fields: title, channel, transcript_status, transcript_language, transcript_chars, transcript, url, video_id.

Price: Transcript: $2.99 per 1,000. Pay only for results delivered.

Run it from code and get the results in one call: POST https://api.apify.com/v2/acts/reportable_broth~youtube-transcript-scraper/run-sync-get-dataset-items?token=YOUR_TOKEN with the input above as the JSON body.

What does YouTube Transcript API do?

  • Four ways in. Video URLs, playlists, channels, or keywords. Watch links, Shorts, youtu.be links and bare 11-character IDs all work.
  • Language fallback. If your preferred language isn't there, you get whatever transcript the video has, human-written over auto-generated when there's a choice.
  • Says why when there's nothing. Every row has transcript_status: ok, disabled_by_uploader, no_transcript, video_unavailable, blocked or error.
  • Subtitle files. Ask for srt or vtt and each row carries a file you can save and play.
  • Translate. 55 target languages. Timings stay the same, so you also get translated_srt / translated_vtt. I do the translation myself because YouTube's own auto-translate returned nothing in my tests.

No browser. Each video is a couple of small requests, so big batches stay fast.

What can I use it for?

  • Put video transcripts into an LLM prompt or a RAG index. The transcript field is plain text.
  • Turn a video into a blog post, show notes or a summary.
  • Make SRT subtitles in another language for your own videos.
  • Search what a channel has said about a topic across hundreds of videos.
  • Get a whole course playlist as text to read or study.

How do I use it?

  1. Open this Actor and click Try for free. You need a free Apify account.
  2. Paste video links, or a playlist or channel link, or type keywords.
  3. Click Start.
  4. Wait for the run to finish.
  5. Open the Output tab and download the transcripts as JSON, CSV or Excel.

Examples

A few videos, with SRT files:

{
"videoUrls": [
"https://www.youtube.com/watch?v=OrElyY7MFVs",
"https://youtu.be/dQw4w9WgXcQ"
],
"subtitleFormats": ["srt"]
}

A whole playlist or course, plain text only (for an LLM or RAG index):

{
"playlistUrls": ["https://www.youtube.com/playlist?list=PLRqwX-V7Uu6ZiZxtDDRCi6uhfTH4FilpH"],
"maxVideosPerSource": 500,
"includeSegments": false
}

Korean videos on a topic, translated to English:

{
"keywords": ["메이크업"],
"languages": ["ko", "en"],
"translateTo": "en",
"skipShorts": true,
"maxVideosPerSource": 30
}

Input

FieldDefault
videoUrls[]Video links or IDs. All of them are transcribed
playlistUrls[]Playlist links. Kept in order, paged past 100 videos
channelUrls[]Handles with or without @, or channel URLs. Latest videos
keywords[]Search YouTube and transcribe the results
maxVideosPerSource10Cap per playlist / channel / keyword (max 5000). Doesn't apply to videoUrls
languages["en"]Preferred transcript languages, tried in order (19 options)
includeSegmentstrueTimed lines. Turn off for text only, much smaller dataset
subtitleFormats[]srt, vtt
translateTo""Target language, 55 options. Empty = no translation
skipShortsfalseMost Shorts have captions off, so skipping them raises the hit rate
includeVideoDetailstrueExact publish time, likes, views, description, duration, channel ID, subscribers, available caption languages. One extra request per video
exactCommentCountfalseExact comment count instead of the rounded 4.2K. One extra request per video
proxyConfigurationresidentialKeep residential. YouTube rate-limits repeated requests from one IP
concurrency8Videos fetched at once (max 16)

What data do I get?

One row per video:

{
"video_id": "OrElyY7MFVs",
"url": "https://www.youtube.com/watch?v=OrElyY7MFVs",
"title": "My Evidence-Based Skincare Routine",
"channel": "Ali Abdaal",
"transcript_status": "ok",
"transcript": "All right, so having the perfect skincare routine is actually pretty simple...",
"transcript_chars": 18705,
"transcript_language": "en",
"transcript_is_generated": true,
"transcript_segments": [
{ "start": 0.0, "duration": 0.88, "text": "All right, so having the perfect" }
],
"_source": "url",
"_query": "OrElyY7MFVs"
}

Also included: srt, vtt, translation_status, translated_language, translated_transcript, translated_segments, translated_srt, translated_vtt, available_languages, playlist_id, playlist_title, playlist_index. Video details add channel_id, channel_username, channel_thumbnail, subscriber_count, thumbnail, published_at, published_ts, duration_seconds, view_count, like_count, comment_count_approx, description, hashtags, description_links, keywords, is_short, is_live (and comment_count with exactCommentCount).

Export as JSON, CSV or Excel, or read it through the API.

How much does it cost?

$2.99 per 1,000 transcripts, so $0.00299 each. Rows with a status other than ok are free. Translation, SRT/VTT files and video details don't cost extra. There's no start fee.

  • 100 transcripts cost about $0.30.
  • A 500-video playlist costs at most about $1.50, less if some videos have captions off.
  • 10 videos cost about $0.03.

Apify's free plan comes with a monthly usage credit ($5 at the time of writing), which covers about 1,600 transcripts.

Limits

  • Not every video has a transcript. Uploaders can switch captions off, and most Shorts have them off. In a 131-video keyword sample, 111 had one and the other 20 were all disabled_by_uploader. With skipShorts on, 39 of 39 long-form videos came back.
  • disabled_by_uploader means the captions are off and no tool can get them.
  • A watch?v=...&list=... link in videoUrls counts as that one video, not the whole playlist. Put playlist links in playlistUrls.
  • Public videos only. Private, unlisted and members-only won't work.

Calling it from code

Works from the Apify API (Python, JavaScript), n8n, Make, Zapier, or an AI agent over MCP. The transcript field is plain text, ready to drop into a prompt. On apify-client 3.x, use run.default_dataset_id, not run["defaultDatasetId"].

FAQ

What if a video has no captions?

Then there's no transcript to get. This reads the captions YouTube already has (uploaded or auto-generated). It doesn't listen to the audio. The row comes back with a status like disabled_by_uploader or no_transcript and isn't charged.

Can I get a transcript in a language the video doesn't have?

Yes. Set translateTo. You get the original transcript plus a translated one with the same timings.

Can I do a whole channel or playlist in one run?

Yes. Put the links in channelUrls or playlistUrls and raise maxVideosPerSource (default 10, max 5000).

Why is transcript_is_generated true?

The transcript you got is YouTube's auto-generated captions, not one the uploader wrote. They can have more spelling mistakes and less punctuation.

Other scrapers I made

Found a bug or need a field? Open an issue on the Issues tab.


Only collects publicly available captions. You're responsible for how you use them (YouTube terms, local law).