YouTube Transcript Scraper: Original Language, SRT, Markdown avatar

YouTube Transcript Scraper: Original Language, SRT, Markdown

Pricing

from $3.00 / 1,000 transcripts

Go to Apify Store
YouTube Transcript Scraper: Original Language, SRT, Markdown

YouTube Transcript Scraper: Original Language, SRT, Markdown

Get YouTube transcripts in the video's original language, not the wrong language of a random caption track. Videos, playlists, channels or search to text, SRT or Markdown. $3 per 1,000.

Pricing

from $3.00 / 1,000 transcripts

Rating

0.0

(0)

Developer

Aquila

Aquila

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

2

Monthly active users

8 hours ago

Last modified

Categories

Share

YouTube Transcript Scraper: Original Language, SRT and Markdown

Any YouTube video, playlist, channel or search to clean text, SRT or Markdown in the original language

Get clean transcripts from any YouTube video, playlist, channel or search, in the language the video is actually spoken in. Each transcript comes as plain text, timestamped text, SRT subtitles and Markdown, together with the title, channel, duration and language.

$3 per 1,000 transcripts. You only pay when a transcript is delivered. Videos without captions are free.

Why this one

The first caption track is often the wrong language; this Actor returns the original language

  • Original language by default. You get the language the video is spoken in, not a random caption track. Human-made captions come first; auto-generated captions are used only when there are none. Dubbed videos are handled too: the original audio track is detected.
  • Every format you need. Plain text, timestamped text, SRT subtitles and Markdown in one run, plus optional raw segments with start times.
  • Any input. Video links or IDs, playlists, whole channels and search terms.
  • $3 per 1,000 transcripts. You pay only for delivered transcripts.
  • Videos without captions are free. They come back clearly marked no_captions and are never charged.

What you can do with it

  • AI and RAG: feed lectures, podcasts and tutorials to ChatGPT, Claude, LangChain or LlamaIndex. Use includeSegments for timestamped chunks.
  • Summaries and newsletters: turn a channel's weekly uploads into notes.
  • Content repurposing and SEO: blog posts, show notes and quotes from your own videos.
  • Subtitles: download ready-to-use .srt files.
  • Research: analyse what is being said across a whole channel or search topic.

How to use

  1. Paste one or more items in Videos, playlists, channels or search terms, one per line:
    • https://www.youtube.com/watch?v=UF8uR6Z6KLc (also youtu.be/…, /shorts/…, /live/…, or just the 11-character ID)
    • https://www.youtube.com/playlist?list=PL…
    • https://www.youtube.com/@TED (also /channel/UC…, /c/…, /user/…)
    • machine learning lecture (any search term)
  2. Set Max videos per playlist, channel or search (default 20).
  3. Optional: type a Language code (en, es, pt, de, ja…) if you want a specific language instead of the original.
  4. Click Start. Results appear in the Output tab and can be exported as JSON, CSV, Excel or HTML.

Input example

{
"sources": [
"https://www.youtube.com/watch?v=5MuIMqhT8DM",
"https://www.youtube.com/@TED",
"python tutorial for beginners"
],
"maxVideosPerSource": 20,
"outputFormats": ["text", "srt", "markdown"]
}

Output example

Illustrative example (values shortened):

{
"videoId": "AbCdEfGh123",
"url": "https://www.youtube.com/watch?v=AbCdEfGh123",
"title": "How Seeds Grow: A Short Introduction",
"channelName": "Example Channel",
"channelId": "UCxxxxxxxxxxxxxxxxxxxxxx",
"duration": "08:42",
"durationSeconds": 522,
"originalLanguage": "en",
"language": "en",
"captionType": "manual",
"availableLanguages": ["en", "en (auto)", "es", "pt"],
"status": "ok",
"charged": true,
"wordCount": 1240,
"text": "Welcome back to the channel. Today we look at how a small seed becomes a tall tree...",
"timestampedText": "[00:00] Welcome back to the channel.\n[00:03] Today we look at how a small seed becomes a tall tree.\n...",
"srt": "1\n00:00:00,000 --> 00:00:03,000\nWelcome back to the channel.\n\n2\n...",
"markdown": "# How Seeds Grow: A Short Introduction\n\n- **Channel:** Example Channel\n...",
"source": "https://www.youtube.com/watch?v=AbCdEfGh123"
}

Status values

statusMeaningCharged
okTranscript deliveredYes
no_captionsThe video has no captions at all (common for music, live streams and some Shorts)No
language_not_availableYou asked for a language the video doesn't have and YouTube refused auto-translation. See availableLanguagesNo
original_language_not_availableOnly captions in other languages exist. Set language to one of availableLanguagesNo
unavailablePrivate, deleted, age-restricted or region-blocked videoNo
errorTemporary failure after several retriesNo

Pricing

Pay-per-event: $0.003 per delivered transcript ($3 per 1,000), plus a tiny start fee of $0.00005 per run. Nothing is charged for videos without captions, unavailable videos or errors. You can cap the cost of any run with the Max total charge option in the run settings; the Actor stops as soon as the cap is reached.

Platform usage (proxies and compute) is included in the price.

Use it from code

Python

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("massa182/youtube-transcript").call(run_input={
"sources": ["https://www.youtube.com/@TED"], "maxVideosPerSource": 10})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item["title"], item.get("language"), item.get("wordCount"))

JavaScript

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });
const run = await client.actor('massa182/youtube-transcript').call({ sources: ['5MuIMqhT8DM'] });
const { items } = await client.dataset(run.defaultDatasetId).listItems();

It also works with Make, Zapier, n8n, LangChain and the Apify MCP server for AI agents.

FAQ

Which language do I get? By default, the language spoken in the video. The Actor reads the original audio track (important for dubbed videos) and the speech-recognition track to find it, then delivers human-made captions in that language, or YouTube's auto-generated captions if there are no human ones.

Can I get another language? Yes, set language. If the video has captions in that language you get them. If not, the Actor tries YouTube's auto-translation, which YouTube often refuses; in that case the item is not charged and availableLanguages lists what exists.

Only human captions? Turn off Use auto-generated captions. Videos with only auto-generated captions will then come back as no_captions and are not charged.

Very long videos? Supported (tested with 12-hour lectures). If a single result is too large for one dataset item (rare, over about 8 MB), the large formats are saved to the run's key-value store and the item contains a link (srtUrl, markdownUrl, ...).

How fast is it? In our tests, 50 videos took about one and a half minutes with the default settings (10 in parallel).

Is it legal? The Actor only reads publicly available captions that anyone can see on YouTube. You are responsible for how you use the data, including copyright and YouTube's terms. Don't use it for personal data you have no legal basis to process.

Support

Found a problem or need a feature? Open an issue in the Issues tab.