Youtube Transcript Scraper avatar

Youtube Transcript Scraper

Pricing

from $4.00 / 1,000 results

Go to Apify Store
Youtube Transcript Scraper

Youtube Transcript Scraper

Lightning-fast transcript extraction with pay-per-result pricing. Extract comprehensive transcript data from YouTube videos using official APIs. Get paragraph-formatted transcript text, timed segments, and metadata with 15 complete fields in just 1-2 seconds per video.

Pricing

from $4.00 / 1,000 results

Rating

5.0

(1)

Developer

Delowar Munna

Delowar Munna

Maintained by Community

Actor stats

6

Bookmarked

42

Total users

11

Monthly active users

an hour ago

Last modified

Share

YouTube Transcript Scraper 📝

Lightning-fast transcript extraction with pay-per-result pricing

Extract comprehensive transcript data from YouTube videos using official APIs. Get paragraph-formatted transcript text, timed segments, and metadata with 26 complete fields in just 1-2 seconds per video.

⭐ Why Choose This Scraper?

  • 💰 Pay Per Result: Only pay for successful transcript extractions
  • Fastest: 1-2 seconds per video (3-4x faster than competitors)
  • 🎯 Most Reliable: 99%+ success rate, never blocked by YouTube
  • 📊 Most Complete: 26 comprehensive fields with paragraph formatting
  • 🚀 No Commitment: No monthly fees, use when you need it
  • 💡 Perfect For: All use cases from occasional to high-volume extraction

📊 High-Volume Users (10,000+ transcripts/month)? Contact us for enterprise pricing and volume discounts!


YouTube Transcript Scraper

🚀 Key Features

  • Lightning Fast: 1-2 seconds per video (330x faster than translation-enabled tools)
  • 📝 Paragraph Formatting: Transcript text formatted with natural paragraph breaks (~40 words each)
  • 🌍 Multi-Language Support: Auto-detects transcript language in 30+ languages
  • 🎯 Manual & Auto Captions: Extracts both human-created and auto-generated transcripts
  • 📊 26 Complete Fields: Comprehensive data with metadata and timed segments
  • 🚀 API-Only Architecture: No browser automation = faster, more reliable, no blocking issues
  • 🎬 Video Metadata: Complete video information (title, channel, duration, views, likes)
  • 🔍 Bulk Discovery: Scrape whole channels or playlists, drop in a seed video to grab its entire channel, or enter search keywords to pull the top matching videos — all auto-expanded into videos, with per-source caps (and date filters for channels/playlists/seeds; keywords return by relevance)
  • 📦 Multiple URL Formats: Supports full URLs, short URLs (youtu.be), and raw video IDs
  • 📄 Subtitle Ready: Timed segments with millisecond precision for SRT/VTT generation
  • 🌐 Formatted Language Display: Shows "English (en)" instead of "en" for better readability

Best for: Content analysis, SEO optimization, accessibility, research, subtitle generation


🎯 At a Glance

FeatureValue
Speed~1-2s per video (API-only, no browser)
Throughput30-60 transcripts/minute (1,800-3,600/hour)
Fields26 complete fields (100% reliability for transcripts)
FormattingParagraph breaks (~40 words each, \n\n separators)
SegmentsTimestamped (millisecond precision)
ArchitectureAPI-only (TikHub + YouTube Data API v3)
Concurrency20 parallel requests (optimized automatically)

💡 Why This Scraper?

Traditional YouTube transcript tools rely on browser automation which is slow and unreliable. YouTube Transcript Scraper uses official APIs for maximum speed and reliability:

MetricYouTube Transcript ScraperTraditional Browser-Based Tools
Architecture✅ API-only (fast, reliable)❌ Browser automation (slow)
Time per video~1-2s~3-8s (browser overhead)
YouTube blocking✅ Never blocked (API access)❌ Often blocked (bot detection)
Fields extracted26 complete fields5-10 fields
Paragraph formatting✅ Built-in (~40 words/para)❌ Raw text only
Language display✅ "English (en)" formatting❌ "en" only
Timestamp precisionMillisecondsSometimes missing
Transcripts per minute30-6010-20 (browser limits)
Reliability99%+ (API-based)70-85% (blocking, errors)

Performance Advantages:

  • No Browser Overhead: Direct API access = 3x faster than browser-based extraction
  • No Blocking: APIs never trigger YouTube's bot detection
  • Complete Data: Full transcript text + structured segments with timestamps
  • High Reliability: 99%+ success rate for videos with transcripts
  • Business Ready: All data needed for content analysis, SEO, accessibility

📋 Input Parameters

FieldKeyTypeDefaultDescription
Video URLs or IDsvideoRefsArray[]Video Input section. Specific videos to scrape — watch URLs, short URLs (youtu.be), or raw 11-char IDs. Only the videos listed here are scraped.
Discovery SourceschannelPlaylistRefsArray[]Channels, Playlists & Discovery section. Channel URLs (/@handle, /channel/UC…, /c/…, /user/…), playlist URLs (…?list=…), seed video URLs/IDs, or search keywords. Channels/playlists expand into their videos; a seed video is resolved to its owning channel and that channel's videos are scraped (not just the seed); a keyword returns the top matching videos from YouTube search (relevance order; date filters don't apply to keywords). To scrape only a specific video, use the Video URLs or IDs input instead.
Transcript languagelanguageString (select)"" (Auto-detect)Optional. Choose a specific caption language (e.g. English, Bengali). Leave on Auto-detect to return each video's original language. If a chosen language isn't available, the scraper auto-detects the video's original transcript as a fallback.
Subtitle formatssubtitleFormatsString (select)"both"Which subtitle strings to include: both (SRT + VTT, default), srt, vtt, or none. Generated locally (no extra cost). The unselected srt/vtt field is set to null (fields always present).
Max videos per sourcemaxVideosPerSourceInteger50For each discovery source (channel, playlist, seed-video-derived channel, or search keyword), cap how many videos to include. Cost guardrail (each video = one paid result).
Published afterstartDateString""Optional YYYY-MM-DD. For channel, playlist, and seed-video expansion, only videos published on/after this date. Does not apply to search keywords.
Published beforeendDateString""Optional YYYY-MM-DD. For channel, playlist, and seed-video expansion, only videos published on/before this date. Does not apply to search keywords.
Max videos (total)maxResultsInteger0Optional. Cap the total number of videos processed this run (after expansion). 0 = no cap.

Important Notes:

  • 📝 Two separate inputs: Use Video URLs or IDs (videoRefs) for specific videos, and Discovery Sources (channelPlaylistRefs) for whole channels, playlists, or a seed video's channel. Fill either or both.
  • 📝 Video Formats: Accepts watch URLs, short URLs (youtu.be), or raw video IDs
  • 📺 Discovery Mode: Drop a channel URL, playlist URL, or seed video into channelPlaylistRefs. Channels/playlists auto-expand into their videos; a seed video is resolved to its channel and that channel is scraped. All expansion uses the free YouTube Data API — no extra charge; you still pay only per transcript. Use maxVideosPerSource + startDate/endDate to control how many and which. ⚠️ A video URL here scrapes its whole channel — for a single video, use Video URLs or IDs instead.
  • 📊 Video metadata always included: Title, channel, description, thumbnail, views, likes, comments, and duration are fetched from the free YouTube Data API on every run — no toggle needed.
  • 🌍 Language Auto-Detection: By default, automatically detects and extracts transcripts in the video's original language
  • 🎯 Optional Language Selection: Pick a specific language from the language dropdown; when set, extraction uses a single (cheaper) API call per video and falls back to auto-detect if that language isn't available
  • Performance: Optimized for speed and reliability with API-only architecture
  • 🎯 Zero Configuration: Works immediately - no setup required

🔧 How It Works

YouTube Transcript Scraper uses a modern API-only architecture for maximum reliability and speed:

Technology Stack

  1. TikHub API (Primary Transcript Extraction)

    • Third-party transcript API (pay-as-you-go)
    • Broad language coverage (manual + auto captions)
    • Fast extraction (~1-2s per video)
    • No browser automation required
  2. YouTube Data API v3 (Video Metadata + Discovery)

    • Official Google API for video information
    • Provides title, channel, duration, views, likes
    • Instant metadata retrieval
    • Also powers Discovery Sources — expanding channels, playlists, and seed videos into their video lists (free); search-keyword sources use TikHub's quota-free YouTube search instead

Why API-Only Architecture?

Traditional browser-based scrapers face many challenges:

  • ❌ YouTube bot detection and blocking
  • ❌ Slow page loading and rendering
  • ❌ High resource usage (Chrome instances)
  • ❌ Frequent 429 rate limit errors
  • ❌ Complex proxy management

Our API-only approach eliminates all these issues:

  • No Blocking: APIs use official access methods
  • 3x Faster: No browser overhead
  • Lower Costs: No proxy or browser infrastructure needed
  • 99%+ Reliability: Direct API access
  • Scalable: Handle high-volume requests easily

📤 Output Schema

Comprehensive Transcript Data: 26 Complete Fields

#FieldTypeDescription
1typeString (const: "video")Record type for filtering
2videoIdStringYouTube video ID (11 characters)
3PageURLStringFull YouTube watch URL
4titleStringVideo title
5descriptionString or nullVideo description
6thumbnailUrlString or nullHighest-resolution video thumbnail URL
7channelIdStringChannel ID (UC...)
8channelNameStringChannel title
9channelUrlStringChannel URL (from channel ID)
10transcriptLanguageStringDetected language, display form (e.g., "English (en)")
11transcriptLanguageCodeStringRaw BCP-47 language code (e.g., "en", "bn")
12transcriptTypeEnum: "manual" / "auto"Manual vs auto-generated captions
13transcriptTextStringFull transcript with paragraph formatting (\n\n breaks)
14segmentsArrayTimed segments (startMs, durMs, text)
15srtString or nullSRT subtitles (included by default; controlled by subtitleFormats)
16vttString or nullWebVTT subtitles (included by default; controlled by subtitleFormats)
17availableLanguagesArrayCaption languages available for the video
18hasTranscriptBooleanWhether transcript was successfully extracted
19statusEnum: "success" / "no_transcript" / "error"Extraction outcome
20errorMessageString or nullFailure reason (null on success)
21durationSecNumberVideo duration in seconds
22publishedAtString (ISO 8601)Video publish date
23fetchedAtString (ISO 8601)Timestamp of extraction
24viewCountNumberTotal views
25likeCountNumberTotal likes
26commentCountNumber or nullTotal comments

Segment Structure

Each segment in the segments array contains:

FieldTypeDescription
startMsNumberSegment start time (milliseconds)
durMsNumberSegment duration (milliseconds)
textStringSegment text content

Why These Fields Matter:

  • 📝 Complete Transcript: Paragraph-formatted text + structured segments with precise timestamps
  • 🌍 Language Intelligence: Auto-detection with formatted display ("English (en)")
  • 🎬 Video Context: Title, channel, duration, views, likes for complete picture
  • 📄 Subtitle Generation: Segments with timestamps for SRT/VTT creation
  • 💼 Business-Ready: All data needed for content analysis, SEO, accessibility

📊 Output Examples

Output Table View - English Video

Output Table - English Video

Output Table View - Bengali Video

Output Table - Bengali Video

Example Output - Complete Transcript Data (JSON)

English Video Example:

[{
"type": "video",
"videoId": "eLqveVYFWc4",
"PageURL": "https://www.youtube.com/watch?v=eLqveVYFWc4",
"title": "Example Video Title",
"description": "Example video description...",
"thumbnailUrl": "https://i.ytimg.com/vi/eLqveVYFWc4/maxresdefault.jpg",
"channelId": "UCbo-KbSjJDG6JWQ_MTZ_rNA",
"channelName": "Example Channel",
"channelUrl": "https://www.youtube.com/channel/UCbo-KbSjJDG6JWQ_MTZ_rNA",
"transcriptLanguage": "English (en)",
"transcriptLanguageCode": "en",
"transcriptType": "auto",
"transcriptText": "This is the full transcript text with paragraph formatting...\n\n(Full transcript continues with natural paragraph breaks)",
"segments": [
{
"startMs": 80,
"durMs": 2799,
"text": "First segment text"
},
{
"startMs": 1280,
"durMs": 3280,
"text": "Second segment text"
},
{
"startMs": 2880,
"durMs": 2559,
"text": "Third segment text"
}
],
"srt": "1\n00:00:00,080 --> 00:00:02,879\nFirst segment text\n\n2\n00:00:01,280 --> 00:00:04,560\nSecond segment text\n...",
"vtt": "WEBVTT\n\n00:00:00.080 --> 00:00:02.879\nFirst segment text\n...",
"availableLanguages": ["en"],
"hasTranscript": true,
"status": "success",
"errorMessage": null,
"durationSec": 769,
"publishedAt": "2025-01-20T10:00:00.000Z",
"fetchedAt": "2025-10-28T05:21:51.641Z",
"viewCount": 148755,
"likeCount": 6463,
"commentCount": 512
}]

Bengali Video Example:

[{
"type": "video",
"videoId": "UmmMLV5BaKQ",
"PageURL": "https://www.youtube.com/watch?v=UmmMLV5BaKQ",
"title": "Breaking: বেরিয়ে আসছে ...বিমানবন্দরে আগুনের গোপন কাহিনী | বিশ্লেষক: আমিরুল মোমেনীন মানিক",
"description": "Bengali video description...",
"thumbnailUrl": "https://i.ytimg.com/vi/UmmMLV5BaKQ/maxresdefault.jpg",
"channelId": "UCWzOfBhVmuRmAd5bzxXP2CA",
"channelName": "Change TV",
"channelUrl": "https://www.youtube.com/channel/UCWzOfBhVmuRmAd5bzxXP2CA",
"transcriptLanguage": "Bengali (bn)",
"transcriptLanguageCode": "bn",
"transcriptType": "auto",
"transcriptText": "আসসালামু আলাইকুম প্রিয় দর্শক আমিরুল মুমিনন মানিক আপনাদের প্রত্যেককে আমন্ত্রণ জানাচ্ছি চেঞ্জ টিভির লাইভ পর্যালোচনায় প্রিয় দর্শক আজ 18ই অক্টোবর 2025 এই মুহূর্তে রাত 8টা বেজে 59 মিনিট আমাদের আলোচনার বিষয় হচ্ছে...\n\n(Full Bengali transcript continues with paragraph formatting)",
"segments": [
{
"startMs": 2560,
"durMs": 4400,
"text": "আসসালামু আলাইকুম প্রিয় দর্শক আমিরুল"
},
{
"startMs": 4960,
"durMs": 5040,
"text": "মুমিনন মানিক আপনাদের প্রত্যেককে আমন্ত্রণ"
},
{
"startMs": 6960,
"durMs": 6960,
"text": "জানাচ্ছি চেঞ্জ টিভির লাইভ পর্যালোচনায়"
}
],
"srt": "1\n00:00:02,560 --> 00:00:06,960\nআসসালামু আলাইকুম প্রিয় দর্শক আমিরুল\n...",
"vtt": "WEBVTT\n\n00:00:02.560 --> 00:00:06.960\nআসসালামু আলাইকুম প্রিয় দর্শক আমিরুল\n...",
"availableLanguages": ["bn"],
"hasTranscript": true,
"status": "success",
"errorMessage": null,
"durationSec": 904,
"publishedAt": "2025-10-18T15:26:57Z",
"fetchedAt": "2025-10-27T12:34:01.574Z",
"viewCount": 913141,
"likeCount": 11498,
"commentCount": 1847
}]

🎬 Quick Start

Example 1: List of YouTube Video URLs

{
"videoRefs": [
"https://www.youtube.com/watch?v=DOtJEwVsJic",
"https://www.youtube.com/watch?v=eLqveVYFWc4",
"https://www.youtube.com/watch?v=gYXaPTDatis",
"https://www.youtube.com/watch?v=ip8FEYOQob0"
]
}

Example 2: Video ID List

{
"videoRefs": [
"dQw4w9WgXcQ",
"jNQXAC9IVRw",
"5oAnKSCP4do"
]
}

Example 3: Mix of Video URLs and IDs

{
"videoRefs": [
"iG9CE55wbtY",
"UyyjU8fzEYU",
"https://youtu.be/jNQXAC9IVRw",
"https://www.youtube.com/watch?v=Cm_Juzt9H2o"
]
}

Example 4: Discovery Sources (channels, playlists, seed videos — auto-expanded)

Put channel URLs, playlist URLs, seed video URLs/IDs, or search keywords in the channelPlaylistRefs (Discovery Sources) input. Channels/playlists expand into their videos; a seed video is resolved to its owning channel and that channel's videos are scraped (not just the seed); a keyword returns the top matching videos from YouTube search. Use maxVideosPerSource and the date range to control scope. Date filters apply to channels, playlists, and seed videos — not to keywords. You can still list specific videos in videoRefs at the same time.

{
"videoRefs": [
"dQw4w9WgXcQ"
],
"channelPlaylistRefs": [
"https://www.youtube.com/@vidIQ",
"https://www.youtube.com/playlist?list=PLBCF2DAC6FFB574DE",
"https://youtu.be/jNQXAC9IVRw",
"ai automation for solopreneurs"
],
"maxVideosPerSource": 10,
"startDate": "2025-01-01"
}

Example 5: Choose Transcript Language & Subtitle Format

Pick a specific caption language and control which subtitle strings are returned. Setting language also uses a single (cheaper) API call per video, falling back to auto-detect if that language isn't available. Set subtitleFormats to srt, vtt, both (default), or none.

{
"videoRefs": [
"https://www.youtube.com/watch?v=eLqveVYFWc4",
"https://youtu.be/jNQXAC9IVRw"
],
"language": "en",
"subtitleFormats": "srt"
}

💪 Performance & Benchmarks

Speed Benchmarks

Video LengthSegmentsProcessing TimeTotal Fields
5 minutes~200~1-2 seconds26
10 minutes~400~1-2 seconds26
15 minutes~600~1-2 seconds26
30 minutes~1200~2-3 seconds26
60 minutes~2400~3-4 seconds26

Throughput Comparison

VideosYouTube Transcript ScraperTraditional Browser Scrapers
10 videos~10-20 seconds~30-60 seconds
50 videos~1-2 minutes~5-8 minutes
100 videos~2-3 minutes~10-15 minutes
500 videos~10-15 minutes~40-70 minutes
1,000 videos~20-30 minutes~80-140 minutes

Why So Fast?

  • ✅ API-only (no browser startup/rendering)
  • ✅ Parallel processing (20 concurrent requests)
  • ✅ No YouTube blocking or retries
  • ✅ Direct API access to transcript data

📚 Use Cases

Content Analysis & Research

  • NLP Analysis: Extract transcripts for sentiment analysis, topic modeling, keyword extraction
  • Market Research: Analyze competitor video content at scale
  • Academic Research: Study video content patterns, themes, and trends
  • Content Summarization: Generate summaries from full transcript text

SEO & Marketing

  • SEO Optimization: Convert video content to text for search engine indexing
  • Content Repurposing: Transform video transcripts into blog posts, articles, social media
  • Keyword Research: Analyze transcript text for keywords and themes
  • Competitive Analysis: Study competitor video strategies through transcript analysis

Accessibility & Subtitles

  • Accessibility: Create text versions of video content for hearing-impaired users
  • Subtitle Generation: Create SRT/VTT subtitle files from transcript segments
  • Caption Management: Extract and manage closed captions for video platforms
  • Multi-Platform: Use transcripts across different platforms and applications

Content Creation

  • Video Editing: Use timestamps to find exact moments in videos
  • Clip Creation: Identify key segments for social media clips
  • Script Analysis: Study successful video scripts and patterns
  • Quality Control: Review video content at scale

❓ FAQ

Q: Do I need to provide API keys? A: No! The actor handles all API integrations automatically. Just provide video URLs.

Q: What if a video doesn't have transcripts? A: The scraper returns a full-shape record with hasTranscript: false, status: "no_transcript", and an errorMessage. (Records without a transcript do not include video metadata.)

Q: What video URL formats are supported? A: All formats:

  • Full URL: https://www.youtube.com/watch?v=dQw4w9WgXcQ
  • Short URL: https://youtu.be/dQw4w9WgXcQ
  • Video ID only: dQw4w9WgXcQ

Q: Can I scrape a whole channel or playlist instead of listing every video? A: Yes — use the Discovery Sources input. Paste a channel URL (/@handle, /channel/UC…, /c/…, /user/…), a playlist URL (…?list=…), a single seed video URL/ID, or plain search keywords, and the actor auto-expands each into videos and scrapes a transcript for each. Seed videos are resolved to their owning channel, so one video from a channel is enough to pull the whole channel; search keywords return the top matching videos from YouTube search. Control scope with Max videos per source and the Published after/before date filters. ⚠️ Search keywords are not affected by the date filters and are always returned in YouTube's relevance order (ordering isn't configurable) — the date filters apply only to channels, playlists, and seed videos. Channel/playlist/seed expansion is free; keyword search uses a small YouTube-search call under the hood (no daily quota limit) — you still only pay per transcript result.

Q: What's the difference between "Video URLs or IDs" and "Discovery Sources"? A: Video URLs or IDs scrapes only the exact videos you list (one transcript each). Discovery Sources expands each entry into many videos — a channel's uploads, a playlist's items, a seed video's whole channel, or a search keyword's top results. ⚠️ A video URL placed in Discovery Sources scrapes its entire channel; to scrape just that one video, put it in Video URLs or IDs instead.

Q: How accurate are the timestamps? A: Timestamps are millisecond-precision and come directly from YouTube's official transcript data, ensuring high accuracy for subtitle generation.

Q: Does it work with live streams or premieres? A: Only after the video is published and transcripts are available. Live streams and ongoing premieres typically don't have transcripts yet.

Q: How much does it cost to run? A: You're billed at the actor's Store price per result. Under the hood, transcript extraction costs ~$0.001/video in TikHub API usage (pay-as-you-go, the same whether you auto-detect or pick a specific language), and YouTube Data API v3 metadata is FREE.

Q: Can I translate the transcripts? A: The actor extracts transcripts in the video's original language. For translation, you can use the transcript data with external translation services.


🛠️ Technologies

Built with modern APIs for maximum performance:

  • TikHub API: Pay-as-you-go transcript extraction (manual + auto captions)
  • YouTube Data API v3: Official Google API for video metadata
  • Crawlee Framework: Enterprise-grade web crawling with queue management
  • Node.js 18+: Fast async processing and API handling

Why These Technologies?

  • API-Only: No browser overhead, 3x faster than traditional scrapers
  • No Blocking: Official APIs never trigger YouTube's bot detection
  • High Reliability: 99%+ success rate with automatic fallbacks
  • Cost-Effective: Optimal balance of speed, quality, and cost
  • Scalable: Handle high-volume requests efficiently

📋 Best Practices

  1. Start Small: Test with 3-5 videos before bulk processing
  2. Check Availability: Not all videos have transcripts (check hasTranscript field)
  3. Language Auto-Detection: Transcripts are extracted in the video's original language
  4. Paragraph Formatting: Automatic paragraph breaks make transcripts more readable
  5. Subtitle Generation: Use segments with timestamps for creating SRT/VTT files
  6. Export Formats: Download as JSON, CSV, or Excel for further analysis
  7. Filter Results: Filter by hasTranscript: true for analysis workflows
  8. Batch Processing: Process videos in batches of 100-500 for optimal performance
  9. Monitor Costs: Track TikHub API usage (pay-as-you-go, ~$0.001 per video)
  10. Backup Data: Save extracted transcripts for future use

📜 Version

v2.5.0 - Production Ready

Current Features:

  • ✅ 26 comprehensive fields per video
  • ✅ Paragraph formatting with natural breaks
  • ✅ Multi-language support (30+ languages)
  • ✅ Millisecond-precision timing
  • ✅ API-only architecture (no browser)
  • ✅ Formatted language display ("English (en)")
  • ✅ Lightning-fast extraction (1-2 seconds per video)
  • ✅ 99%+ reliability with official APIs

🤝 Compliance

  • Intended for legitimate content analysis, SEO, accessibility, and research
  • Extracts only publicly available YouTube transcript data
  • Uses official APIs for data access
  • Designed for content repurposing and business intelligence
  • Respects YouTube's Terms of Service
  • Users responsible for compliance with applicable laws in their jurisdiction

💬 Support

  • Issues: Report via Apify support or GitHub
  • Feature Requests: Contact us with your use case
  • Documentation: Comprehensive examples and guides included

Built with ❤️ for lightning-fast transcript extraction and content analysis