John Cole

Jul 06, 2026 • 3 min read

How to Download YouTube Transcripts in Bulk (API + MCP)

Download YouTube transcripts in bulk with a pay-per-video scraper API: SRT, VTT, plain text, 15 languages, and MCP support for AI agents.

How to Download YouTube Transcripts in Bulk (API + MCP)

I kept hitting the same wall: I wanted the transcripts of a few hundred YouTube videos for a RAG project, and every script I wrote worked for about ten videos before the requests started bouncing. Rate limits, IP flags, fragile parsing. So I built the thing I wished existed.

The YouTube Transcript and Subtitles Scraper API downloads YouTube transcripts in bulk: paste one URL or a thousand, and it returns structured transcript data for each video at $0.00001 per video processed.

What it returns

Each video comes back as one structured row:

  • Full transcript with timestamps, plus a clean non-timestamped text field for LLM prompts

  • Language of the caption track it picked, and whether it was human-made or auto-generated

  • Video duration and metadata: title, channel, view count, like count, upload date, tags

  • Optional SRT, VTT, and plain text files alongside the structured fields

  • A success or failure status per video, so one bad URL never kills the batch

It accepts every YouTube URL shape: watch URLs, Shorts, youtu.be links, embed and mobile URLs. One honest limitation: it can only return captions YouTube actually has. Videos with captions disabled come back as error rows.

Run it in three steps

  1. Open the Actor page and click Try for free; you get an Apify account with free monthly credits.

  2. Paste your YouTube URLs into the input (a single string or an array), pick preferred languages if you care, and hit Start.

  3. Export the dataset as JSON, CSV, or Excel, or pull it over the API.

There is also a free discovery mode: set list_only to true and it returns every caption language a video offers, with translation options, before you spend anything.

Use it as a REST API

Every run is callable over HTTP. From Python:

from apify_client import ApifyClient
client = ApifyClient("YOUR_API_TOKEN")
run = client.actor("johnvc/YoutubeTranscripts").call(run_input={
 "youtube_url": ["https://www.youtube.com/watch?v=dQw4w9WgXcQ"],
 "languages": ["en"],
})
for item in client.dataset(run.default_dataset_id).iterate_items():
 print(item["non_timestamped"][:200])

Wire it into Claude with MCP

This is where it gets fun. The Actor runs over MCP, so Claude, Cursor, ChatGPT, Windsurf, VS Code, and Cline can call it as a native tool:

claude mcp add --transport http youtube-transcripts "https://mcp.apify.com/?actors=johnvc/YoutubeTranscripts"

Then ask your agent "get the transcript of this video and summarize the three main arguments" and it fetches the transcript mid-conversation. No scraping code, no copy-paste.

What people build with it

RAG corpora from channel archives, podcast search indexes, content repurposing pipelines that turn talks into blog posts, SEO research on spoken keywords, and study tools that translate lecture subtitles. The Actor ships with 35 runnable example tasks covering MCP setups for every major AI client, bulk workflows, subtitle translation, and transcripts in 15 languages; browse them on the examples page or see the full project on Peerlist.

FAQ about scraping YouTube transcripts

Where does the transcript scraper get its data, and how fresh is it?

It reads the caption tracks YouTube exposes for each video, at request time. If a video has manual captions, auto-generated captions, or translated tracks, you can pick between them; if captions are disabled, that video returns an error row instead of fake data.

How much does the API cost per video?

Pricing is pay per event: $0.00001 per video processed, plus tiny per-run start and result events. A thousand videos costs a few cents. Discovery mode (listing available languages) is free.

Can my AI agent use the scraper through MCP without writing code?

Yes. Add the hosted MCP server to Claude, Cursor, or any MCP client and the transcript tool shows up natively. Nine of the example tasks are step-by-step setup guides for specific clients.

Does the scraper handle YouTube Shorts and non-English videos?

Both. Shorts URLs work exactly like watch URLs, and the languages parameter takes a priority list of ISO codes; there are preconfigured example tasks for 15 languages plus a translate_to option for translated subtitles.

If something breaks, open an issue on the Actor page; issues get answered within a day or two.

Join John on Peerlist!

Join amazing folks like John and thousands of other builders on Peerlist.

peerlist.io/

It’s available... this username is available! 😃

Claim your username before it's too late!

This username is already taken, you’re a little late.😐

0

0

0