YouTube Transcript Scraper - Bulk Captions & Subtitles avatar

YouTube Transcript Scraper - Bulk Captions & Subtitles

Pricing

$5.00 / 1,000 transcript scrapeds

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

YouTube Transcript Scraper - Bulk Captions & Subtitles

Extract YouTube transcripts and captions in bulk - full text, timestamps and SRT, in 100+ languages. No API key, no quota. Paste many URLs at once.

Pricing

$5.00 / 1,000 transcript scrapeds

Rating

0.0

(0)

Developer

Hasnain Nisar

Hasnain Nisar

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Share

YouTube Transcript Scraper – Bulk Captions & Subtitles, No API Key

Extract the full transcript of any YouTube video in seconds — in bulk, in 100+ languages, with timestamps, clean text, and ready-to-use SRT subtitles. No API key. No daily quota. No login. Paste one URL or a thousand and get back clean, structured transcripts you can drop straight into ChatGPT, a blog post, a database, or your own AI pipeline.

⚡ At a glance

What you give itOne or more YouTube video URLs (watch, youtu.be, Shorts, live, embed — or a bare video ID)
What you get backFull plain-text transcript + timestamped segments + optional SRT, plus video metadata
Bulk input✅ Unlimited URLs per run — processed in one go
Languages✅ 100+ — human-made subtitles and auto-generated captions, with optional auto-translation
API key required❌ None — no YouTube Data API, no OAuth, no quota
Output formatsJSON, CSV, Excel, plain text, SRT
Speed~1–3 seconds per video
Best forAI/LLM context, content repurposing, subtitles, SEO, research

What this YouTube Transcript Scraper does

Give it a list of YouTube URLs and it returns a clean, structured transcript for each one — the complete spoken text, plus per-line timestamps, the caption language, and the source video's metadata (title, channel, duration, views, upload date, thumbnail). It reads both human-uploaded subtitles and YouTube's auto-generated captions, and can translate the transcript into another language on the fly.

It works without the YouTube Data API, so you are never subject to the official 10,000-units/day quota. No API key. No OAuth. No sign-in.

Why this scraper beats the rest

Most YouTube transcript tools make you submit videos one at a time, force you to pick the exact caption language up front (and fail if you guess wrong), and hand back a bare list of {start, text} fragments. This actor is built to be the one you keep:

  • 🚀 True bulk mode — pass an array of URLs and scrape them all in a single run. No looping, no one-by-one.
  • 🧠 Smart language fallback — list your preferred languages in order; it returns the first that exists and tells you which it used. If none match, it gracefully falls back to the video's original captions instead of failing.
  • 📝 Three transcript shapes at once — clean paragraph text (perfect for LLMs), timestamped segments, and a ready-to-import SRT subtitle file.
  • 🌍 100+ languages + live translation — pull captions in the original language or auto-translate to any supported language with one field.
  • 🏷️ Rich metadata included — title, channel, duration, views, upload date and thumbnail come with every transcript, so you don't need a second scraper.
  • 📊 Word counts & statswordCount, characterCount, segmentCount out of the box.
  • No API key, no quota, no rate-limit headaches.

Fields returned per video

FieldDescription
videoIdYouTube video ID
urlCanonical video URL
titleVideo title
channelChannel display name
channelUrlChannel page URL
durationDuration in seconds
duration_stringHuman-readable duration (e.g. 12:34)
viewCountLifetime view count
uploadDateUpload date (YYYY-MM-DD)
thumbnailHighest-resolution thumbnail URL
languageLanguage of the returned transcript
sourceLanguageOriginal caption language before translation
isAutoGeneratedtrue if YouTube ASR auto-captions, false if human-made
isTranslatedtrue if the transcript was auto-translated
availableLanguagesAll caption languages available (manual + auto)
textFull plain-text transcript (clean, single string)
transcriptArray of { start, dur, end, text } timestamped segments
srtTranscript as an .srt subtitle string (optional)
wordCount / characterCount / segmentCountTranscript statistics
hasTranscripttrue when captions were found

Input

Pass one or more YouTube URLs in videoUrls. Everything else is optional.

{
"videoUrls": [
"https://www.youtube.com/watch?v=IELMSD2kdmk",
"https://youtu.be/dQw4w9WgXcQ",
"https://www.youtube.com/shorts/abc123XYZ45"
],
"preferredLanguages": ["en", "es"],
"translateTo": "",
"includeTimestamps": true,
"includeSrt": false
}
InputTypeDescription
videoUrlsarrayRequired. Any number of YouTube video URLs or 11-char IDs.
preferredLanguagesarrayOrdered ISO 639-1 codes. First available wins. Default ["en"].
translateTostringOptional. Auto-translate the transcript to this language.
includeTimestampsbooleanInclude the timestamped transcript array. Default true.
includeSrtbooleanAlso return an .srt subtitle string. Default false.
proxyConfigurationobjectApify proxy settings. Default Apify Proxy works for most videos.
cookiesstringOptional Netscape cookies.txt for age/region-restricted videos.

Output

Each dataset record:

{
"videoId": "IELMSD2kdmk",
"url": "https://www.youtube.com/watch?v=IELMSD2kdmk",
"title": "Apache Spark in 5 Minutes",
"channel": "Data Engineering",
"duration": 312,
"duration_string": "5:12",
"viewCount": 184320,
"uploadDate": "2023-04-18",
"language": "en",
"isAutoGenerated": true,
"isTranslated": false,
"availableLanguages": { "manual": ["en"], "auto": ["en", "es", "fr", "..."] },
"text": "Apache Spark, an open-source data analytics engine that can process massive datasets...",
"wordCount": 642,
"characterCount": 3789,
"segmentCount": 121,
"transcript": [
{ "start": 0.32, "dur": 4.08, "end": 4.4, "text": "Apache Spark, an open-source data" },
{ "start": 2.48, "dur": 3.84, "end": 6.32, "text": "analytics engine that can process" }
],
"hasTranscript": true
}

Use cases

  • 🤖 Feed videos to AI / LLMs — turn any YouTube video into clean context for ChatGPT, Claude, summarizers, RAG pipelines and embeddings.
  • ✍️ Content repurposing — convert videos into blog posts, newsletters, show notes and social threads.
  • 🎬 Subtitles & captions — export SRT for video editors, accessibility and localization.
  • 🔎 SEO research — mine spoken keywords, topics and phrasing from top-ranking videos.
  • 📚 Academic & market research — analyze interviews, lectures, talks and earnings calls at scale.
  • 📈 Competitor analysis — extract what competitors actually say across their channel.
  • 🌍 Translation & localization — pull and auto-translate transcripts into 100+ languages.
  • 📝 Note-taking & study — searchable text from courses, tutorials and podcasts.

How it works

Under the hood the actor uses yt-dlp — the gold-standard open-source extractor — to read YouTube's caption tracklist the same way a browser does, then fetches the timed-text document and parses it into clean segments. It tries multiple YouTube player clients and automatically retries failed videos on a direct connection (and a residential proxy when available), so you get reliable results without fiddling with settings. No reverse-engineered private APIs, no fragile DOM scraping.

Languages

The actor returns transcripts in whatever languages a video has captions for — typically English plus YouTube's auto-generated set. With translateTo, you can auto-translate any transcript into 100+ languages, including English, Spanish, Portuguese, French, German, Italian, Japanese, Korean, Chinese (Simplified & Traditional), Russian, Arabic, Hindi, Dutch, Polish, Turkish, Vietnamese, Indonesian, Thai and many more.

Pricing

Pay only for what you use. The actor is small and fast (~1–3 seconds per video) and runs on minimal memory, so large batches stay cheap. See the Pricing tab for current rates and start with the free trial.

FAQ

Do I need a YouTube Data API key? No. This actor works with no API key, no OAuth and no daily quota.

Can I scrape many videos at once? Yes — that's the point. Put as many URLs as you want in videoUrls and they're all processed in one run.

What if a video doesn't have my preferred language? List several languages in preferredLanguages; the first available one is used. If none exist, the actor falls back to the video's original captions and reports the language in the language field.

Does it work with auto-generated captions? Yes. It uses human-made subtitles when available and falls back to YouTube's auto-generated captions. The isAutoGenerated flag tells you which.

Can it translate transcripts? Yes. Set translateTo to any supported language code and the transcript is auto-translated via YouTube's caption translation.

Does it support YouTube Shorts and live streams? Yes — Shorts (/shorts/), live (/live/), youtu.be short links and /embed/ URLs are all supported, as are bare 11-character video IDs.

What output formats can I export? JSON, CSV and Excel from the dataset, plus clean plain text and .srt subtitle strings inside each record.

Why is a video returning no transcript? Some videos genuinely have captions disabled, or are private, age-gated or music videos with no caption track. The record will include hasTranscript: false and an explanatory error. For age/region-restricted videos, supply a cookies.txt.

Is this legal? The actor extracts only publicly available captions. You are responsible for using the data in compliance with YouTube's Terms of Service and your local laws.

  • YouTube Video Info Scraper — full video metadata, stats and tags without an API key.
  • YouTube Channel Scraper — pull a channel's entire video history.
  • YouTube Downloader — get downloadable MP4 / MP3 URLs.

Turn any YouTube video into clean, structured, AI-ready text — in bulk, in any language. 🚀