Youtube Transcript Scraper avatar

Youtube Transcript Scraper

Pricing

from $5.00 / 1,000 results

Go to Apify Store
Youtube Transcript Scraper

Youtube Transcript Scraper

Extract timestamped transcripts and captions from any YouTube video in 20+ languages. Bulk scrape thousands of videos with full metadata — title, views, duration, channel, and publish date included.

Pricing

from $5.00 / 1,000 results

Rating

0.0

(0)

Developer

Scrape Smith

Scrape Smith

Maintained by Community

Actor stats

0

Bookmarked

5

Total users

2

Monthly active users

3 days ago

Last modified

Share

Extract full transcripts, captions, and subtitles from any YouTube video — with metadata, multi-language support, and bulk processing built in.


What This Scraper Does

YouTube Transcript Scraper lets you extract the complete spoken text from any YouTube video as structured, timestamped data. Whether you need transcripts for AI training datasets, content analysis, SEO research, subtitle generation, accessibility tools, or media monitoring — this scraper delivers fast, reliable results at scale.

Each result includes the full timestamped transcript broken into segments, a joined plain-text version of the entire transcript, and rich video metadata including title, channel name, view count, duration, publish date, category, description, and keywords — all in a single run with no extra API calls.


Key Features

  • Bulk processing — feed hundreds or thousands of video URLs or IDs in one run
  • Multi-language support — request transcripts in 20+ languages with automatic fallback
  • Smart language fallback — if your requested language isn't available, falls back to English, then to whatever is available, so you always get something
  • Rich metadata — title, author, channel ID, views, duration, publish date, category, description, and keywords extracted alongside every transcript
  • State migration — if Apify migrates the run to a new server, the scraper resumes exactly where it left off with zero duplicate data
  • Full audit trail — every video ID is recorded with a status field so you know exactly what happened to each one

Use Cases

AI & Machine Learning

  • Build speech-to-text training datasets from YouTube transcripts
  • Create question-answering datasets from educational video content
  • Extract text corpora for NLP model training
  • Build knowledge bases from tutorial and lecture videos
  • Fine-tune LLMs on domain-specific YouTube content

Content & SEO

  • Analyze competitor video scripts and talking points
  • Extract keywords and topics from top-ranking YouTube videos
  • Repurpose video content into blog posts, articles, and newsletters
  • Identify content gaps by analyzing what topics creators cover
  • Index video content for internal search engines

Research & Journalism

  • Monitor what politicians, executives, and public figures say in videos
  • Track brand mentions and sentiment across YouTube content
  • Analyze trends in educational content across channels
  • Archive spoken content from videos for future reference

Accessibility & Localization

  • Generate subtitle files for videos that lack them
  • Build translation pipelines by extracting source transcripts
  • Create searchable archives of video content
  • Make video content accessible for hearing-impaired audiences

Business Intelligence

  • Monitor earnings calls, conference talks, and product announcements
  • Track competitor messaging and product positioning
  • Extract insights from industry conference presentations
  • Analyze customer testimonial and review videos

Input

FieldTypeRequiredDescription
videoIdsarrayYouTube video URLs or IDs
langstringPreferred caption language code. Default: en
minDelayintegerMinimum delay between requests in ms. Default: 300
maxDelayintegerMaximum delay between requests in ms. Default: 800

Accepted URL Formats

https://www.youtube.com/watch?v=jNQXAC9IVRw https://youtu.be/jNQXAC9IVRw https://www.youtube.com/shorts/jNQXAC9IVRw jNQXAC9IVRw

Supported Languages

CodeLanguage
enEnglish
en-USEnglish (United States)
en-GBEnglish (United Kingdom)
zhChinese (Simplified)
zh-HantChinese (Traditional)
ptPortuguese
pt-BRPortuguese (Brazil)
esSpanish
es-ESSpanish (Spain)
deGerman
frFrench
itItalian
ruRussian
trTurkish
jaJapanese
koKorean
hiHindi
idIndonesian
filFilipino
viVietnamese

Output

Each item in the dataset represents one video:

{
"video_id": "jNQXAC9IVRw",
"video_url": "https://www.youtube.com/watch?v=jNQXAC9IVRw",
"title": "Me at the zoo",
"author": "jawed",
"channel_id": "UC4QobU6STFB0P71PMvOGN5A",
"channel_url": "https://www.youtube.com/channel/UC4QobU6STFB0P71PMvOGN5A",
"view_count": 386567321,
"duration_seconds": 19,
"publish_date": "2005-04-23T20:31:52-07:00",
"category": "Film & Animation",
"description": "The first video on YouTube.",
"keywords": ["me at the zoo", "jawed karim", "first youtube video"],
"is_family_safe": true,
"is_private": false,
"transcript_text": "All right so here we are in front of the elephants...",
"segment_count": 12,
"segments": [
{ "start": 1.2, "dur": 2.16, "text": "All right so here we are" },
{ "start": 3.36, "dur": 1.8, "text": "in front of the elephants" }
],
"lang": "en",
"lang_requested": "en",
"lang_fallback": false,
"status": "ok"
}

Status Values

StatusMeaning
okTranscript extracted successfully in requested language
low_qualityTranscript found but very few segments (under 5)
lang_not_foundRequested language unavailable, fell back to another
no_captionsVideo has no caption tracks available
unplayableVideo is private, deleted, or region restricted
errorUnexpected failure — will retry on next run

Language Fallback Logic

  1. Try requested language exactly
  2. If not found and requested language wasn't English, try English
  3. If English also not found, use first available language track
  4. Always records lang_fallback: true and lang used so you know exactly what was returned

Performance

  • Typical throughput: 50 videos per minute
  • State saved every 60 seconds — migrations lose minimal progress

Frequently Asked Questions

Can I scrape transcripts from any YouTube video? Only videos that have captions enabled. Most videos uploaded after 2020 have auto-generated captions in English. Older videos, music videos, and some regional content may have no captions at all — these are returned with status: no_captions.

Does this work with auto-generated captions? Yes. YouTube auto-generated captions are returned the same way as manually uploaded ones. The transcript text may be less accurate for auto-generated captions but is still very usable for most NLP and analysis tasks.

What happens if my requested language isn't available? The scraper falls back automatically — first to English, then to whatever language track is available. The lang_fallback field will be true and lang will tell you exactly which language was used. You never get an empty result just because one language wasn't available.

Can I scrape transcripts in bulk? Yes. There is no hard limit on input size. Feed thousands of video IDs in one run. The scraper processes them sequentially with rate limiting to avoid detection and handles session rotation automatically for long runs.

How do I get video IDs in bulk? Use the YouTube Search Scraper or YouTube Channel Scraper actors to collect video IDs first, then feed them into this actor. You can also paste YouTube URLs directly — the scraper extracts the ID automatically from any YouTube URL format.

What is the segments field? An array of timestamped caption segments, each with start (seconds from beginning), dur (duration in seconds), and text. Use this for subtitle file generation, time-aligned text analysis, or synchronizing text with video.

What is transcript_text? All segments joined into a single plain text string with spaces. Use this for NLP processing, keyword extraction, content indexing, or anywhere you need the full transcript as a readable block of text.

Will this work on private or age-restricted videos? Private videos always return status: unplayable. Age-restricted videos also return unplayable.

Does the scraper resume after Apify migration? Yes. Completed video IDs are saved to Apify KV store every 60 seconds and on every migration event. When the run resumes on a new container it skips all already-completed videos and continues from exactly where it left off.

Can I use this for AI training data? Yes. The structured output with transcript_text and segments is designed for downstream NLP use. Combine it with the metadata fields (title, category, keywords, description) to build richly labelled training datasets.

How many requests does this make per video? Two requests per video — one to the YouTube player API to get the caption track URL and video metadata, and one to fetch the actual transcript XML. Both are lightweight and use your authenticated session.

Is a proxy required? No. This scraper uses authenticated YouTube session cookies which bypass IP-based bot detection. No proxy is needed for normal usage. If you are running extremely high volumes you may want to add additional YouTube accounts to the session pool instead of proxies.

What languages are supported? 20 language codes confirmed from real YouTube caption data: en, en-US, en-GB, zh, zh-Hant, pt, pt-BR, es, es-ES, de, fr, it, ru, tr, ja, ko, hi, id, fil, vi. If the video has captions in a language not in this list, use the JSON input mode and type the language code manually — the scraper will attempt to find it.

Why are some transcripts marked low_quality? Videos with fewer than 5 caption segments — typically very short videos, music videos with minimal speech, or partially captioned content. The transcript data is still pushed and usable, just flagged so you can filter if needed.

Can I extract subtitles for YouTube Shorts? Yes. YouTube Shorts URLs are supported as input and processed identically to regular videos.