YouTube Captions Downloader - Transcript & Subtitles Scraper avatar

YouTube Captions Downloader - Transcript & Subtitles Scraper

Pricing

from $5.00 / 1,000 transcripts

Go to Apify Store
YouTube Captions Downloader - Transcript & Subtitles Scraper

YouTube Captions Downloader - Transcript & Subtitles Scraper

Download the captions and transcript of any YouTube video, or subtitles for a whole list: timestamped caption segments and full text in your language, manual or auto-generated, with title, channel, duration and views. Shorts and live links work. $5 per 1,000 videos; no captions or failures are free.

Pricing

from $5.00 / 1,000 transcripts

Rating

0.0

(0)

Developer

Tenfold Fleet

Tenfold Fleet

Maintained by Community

Actor stats

0

Bookmarked

4

Total users

0

Monthly active users

a day ago

Last modified

Share

What does YouTube Captions Downloader do?

YouTube Captions Downloader downloads the transcript (captions / subtitles) of any YouTube video in bulk. Give it video URLs or IDs and it returns timestamped caption segments and the full transcript text, plus the video's title, channel, duration, view count and description.

It works with every link form: youtube.com/watch?v=, youtu.be/, YouTube Shorts, embeds, live-stream recordings and bare 11-character video IDs. Pick your preferred languages (e.g. en, es, de), choose whether auto-generated captions are allowed, and get clean JSON you can feed straight into an LLM, a RAG pipeline or a spreadsheet.

It is a fast YouTube transcript API that runs on plain HTTP requests (no browser), so it's cheap and quick: $5 per 1,000 transcripts, and you only pay when a non-empty transcript is returned.

Why use a YouTube transcript scraper?

  • 🤖 AI and LLM workflows: summarize videos, answer questions about them, or build a RAG knowledge base from a channel's back catalogue.
  • ✍️ Content repurposing: turn videos into blog posts, newsletters, show notes and social threads.
  • 🔎 Research and monitoring: search what creators, competitors or brands actually say on camera.
  • 🎓 Education and accessibility: get readable text and subtitles for lectures and tutorials.
  • 📈 SEO and marketing: mine video transcripts for keywords and topics.

Runs on the Apify platform, so you get an API, scheduling, webhooks and integrations with Make, Zapier, n8n, LangChain and LlamaIndex. It also works as an MCP tool for AI agents through the Apify MCP server.

What data can it extract?

FieldExample
inputthe URL or ID exactly as you entered it
videoId, urldQw4w9WgXcQ, https://www.youtube.com/watch?v=dQw4w9WgXcQ
title, channel, channelIdvideo title and channel name / ID
durationSec, viewCount213, 1821858729
descriptionthe video description
language, languageNameen, English
isAutoGeneratedtrue for YouTube's speech-recognition captions
availableLanguagesevery caption track on the video: [{ "languageCode": "de-DE", "name": "German (Germany)", "isAutoGenerated": false }]
segments[{ "start": 18.64, "dur": 3.24, "text": "We're no strangers to love" }] (seconds)
fullTextthe whole transcript as one string
segmentCountnumber of caption segments
errorwhy a video failed (no captions, private, removed...), otherwise null

How to get the transcript of a YouTube video

  1. Click Try for free.
  2. Paste one or more YouTube links or video IDs into YouTube video URLs or IDs (one per line).
  3. Set Preferred languages (default en). If a video has no captions in those languages, you get its original-language transcript.
  4. Click Start, then download the results as JSON, CSV, Excel or HTML, or read them through the API.

Call it from the API

curl -X POST "https://api.apify.com/v2/acts/tenfoldfleet~youtube-transcript-scraper/run-sync-get-dataset-items" \
-H "Authorization: Bearer $APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"videos": ["https://www.youtube.com/watch?v=dQw4w9WgXcQ"], "languages": ["en"], "outputFormat": "text"}'

Python (pip install "apify-client>=3"):

from apify_client import ApifyClient
client = ApifyClient("<APIFY_TOKEN>")
run = client.actor("tenfoldfleet/youtube-transcript-scraper").call(run_input={"videos": ["https://youtu.be/jNQXAC9IVRw"]})
for video in client.dataset(run.default_dataset_id).iterate_items():
print(video["title"], video.get("language"), video.get("error") or (video.get("fullText") or "")[:300])

On apify-client 2.x, call() returns a dict: use run["defaultDatasetId"] instead.

How much does it cost?

You pay $0.005 per transcript ($5 per 1,000 videos). Videos without captions, private or removed videos, invalid links and any other failures are free: they appear in the dataset with an error field and are never charged. Apify's free plan includes monthly credit, so you can try it on hundreds of videos at no cost. Set a maximum cost per run and the Actor stops before it goes over that amount.

Input

{
"videos": [
"https://www.youtube.com/watch?v=dQw4w9WgXcQ",
"https://youtu.be/jNQXAC9IVRw",
"https://www.youtube.com/shorts/aqz-KE-bpKQ",
"kJQP7kiw5Fk"
],
"languages": ["en", "es"],
"includeAutoGenerated": true,
"outputFormat": "both"
}
  • outputFormat: both (segments + full text), segments or text.
  • languages: leave empty to always get the video's original language.
  • strictLanguage: set to true to get a free error item instead of another language's transcript when none of your languages exists.

Output

One item per video. You can download the dataset as JSON, CSV, Excel, XML or HTML.

{
"input": "https://youtu.be/jNQXAC9IVRw",
"videoId": "jNQXAC9IVRw",
"url": "https://www.youtube.com/watch?v=jNQXAC9IVRw",
"title": "Me at the zoo",
"channel": "jawed",
"channelId": "UC4QobU6STFB0P71PMvOGN5A",
"durationSec": 19,
"viewCount": 438706382,
"language": "en",
"languageName": "English",
"isAutoGenerated": false,
"availableLanguages": [{ "languageCode": "en", "name": "English", "isAutoGenerated": false }, { "languageCode": "de", "name": "German", "isAutoGenerated": false }],
"segmentCount": 6,
"segments": [
{ "start": 1.2, "dur": 2.16, "text": "All right, so here we are, in front of the elephants" }
],
"fullText": "All right, so here we are, in front of the elephants ...",
"error": null
}

Tips

  • Shorts, embeds and live-stream links are accepted as they are. Many Shorts and live recordings have no captions, though; those come back as free error items. Streams that are live right now are skipped for free.
  • Use outputFormat: "text" for LLM prompts: smaller output, faster downloads.
  • Large lists: the Actor handles about 4 videos per second, so the default 1-hour timeout covers roughly 10,000 videos. For bigger lists, raise the run timeout or split the list. If a run times out, resurrect it: videos already in the dataset are skipped, never charged twice.
  • Region variants match automatically: asking for pt also finds pt-BR, and en finds en-GB.
  • Turn Include auto-generated captions off if you only want creator-uploaded subtitles.

Use it with AI agents (MCP)

Give Claude, ChatGPT, Cursor or any MCP client this Actor as a tool through Apify's MCP server: add https://mcp.apify.com?tools=tenfoldfleet/youtube-transcript-scraper as a remote MCP server and sign in with your Apify account. The agent fills in the input, runs the Actor and reads the results itself; you pay the same per-event price as a normal run.

FAQ

Does it work for videos without subtitles?

Only if YouTube has generated automatic captions, which it does for most spoken videos. If a video has no captions at all (music without lyrics, very new uploads, some live streams), you get a free item with an error explaining why.

Can I get the transcript in a specific language?

Yes. List language codes in Preferred languages in order. The Actor picks human-made captions first, then auto-generated ones, and falls back to the original language if none of your languages exist. availableLanguages shows every track the video has.

Can I get every transcript from a channel or playlist?

Not directly yet. Paste the URLs of the individual videos. A channel or playlist URL returns a free error item.

Do I need a YouTube account, API key or cookies?

No. It reads publicly available caption data. No login, no YouTube Data API quota.

Can it scrape private, members-only or age-restricted videos?

No. Those need a signed-in account, so they return a free error item.

The Actor only reads publicly available caption data. You are responsible for how you use the transcripts: respect copyright and YouTube's Terms of Service, and don't republish creators' content without permission.

This Actor is not affiliated with, endorsed or sponsored by YouTube or Google.

More tools from Tenfold Fleet

ActorOutput
ALDI Australia Scraper - AU Products, Unit Prices & Catalogueproduct
Alibaba Image Search - Reverse Lookup of Suppliers by Photomatched product
AliExpress Keyword Scraper - Exact Sold Counts by Search Termproduct
Amazon Product Scraper - Details, Prices & Search by ASINproduct
ATS Jobs Scraper - Greenhouse, Lever, Ashby & 5 Morejob posting
Backlinks Checker - Referring Domains, Anchors & Domain Rankbacklink
Bilibili Scraper - Videos, Comments, Danmaku & Searchvideo or comment
Businesses Without Websites - Local Leads with Phone & Ratinglead
Contact Details Scraper - One Lead Record per Company Websitewebsite with contacts
Google Ads Transparency Center Scraper - Competitor Ads by Sitead
Google AI Overviews Checker - Citations & Domain Trackerkeyword checked
Google Jobs Scraper - Salary, Apply Links & Posting Datesjob listing
Google Keyword Planner Alternative - Ideas, Bids & Volumekeyword idea
Google Maps Extractor - Business Leads, Phones & Websitesplace
Google News Scraper - Articles, Real URLs & Full Textarticle
Google Travel Hotel Rate Tracker - OTA Prices for Every Nightoffer
Google Trends Scraper - Interest, Regions & Related Querieskeyword
Keyword Ideas & Related Keywords - Difficulty, Volume & CPCkeyword idea
Keyword Search Volume, CPC & Difficulty Checker (Bulk)keyword with data
Remote Job Board Scraper - Remote Jobs Aggregator, 7 Sitesunique remote job
SEEK Job Scraper - Australia, NZ, Jobstreet & JobsDBjob listing
SEO Audit Tool - Technical On-Page SEO Checker & Scorepage audit
SEO Competitor Keywords - Domain Ranked Keywords & Keyword Gapkeyword
Shopify Inventory Scraper - SKUs, Variants & In-Stock Statusproduct
Shopify App & Theme Detector - Store Analyzer & Contactsshopify store
Sitemap URL Extractor - All URLs from sitemap.xml & robots.txturl
Technology Detector - Wappalyzer & BuiltWith Alternativewebsite
URL to Markdown - Web Page to LLM-Ready Text for AI Agentspage
Website Traffic Checker - Bulk Domain Traffic Estimatedomain with traffic data
Woolworths Product Scraper - AU Shelf Prices, Specials & GTINsproduct
Workday Jobs Scraper - myworkdayjobs.com API with Salaryjob posting
YouTube Channel Email Scraper - Creator Contact Extractorchannel with email
YouTube Livestream & Channel Scraper - Videos, Likes & Statsvideo
YouTube Comments Scraper - Replies, Likes & Sort by Newestcomment
YouTube Shorts Analytics Scraper - Views, Likes & Hashtagsshort