YouTube Transcript Scraper avatar

YouTube Transcript Scraper

Pricing

$4.00 / 1,000 transcripts

Go to Apify Store
YouTube Transcript Scraper

YouTube Transcript Scraper

Extract the full transcript (captions / subtitles) of any YouTube video as clean, ready-to-use text — with optional timestamps.

Pricing

$4.00 / 1,000 transcripts

Rating

5.0

(4)

Developer

Santhej Kallada

Santhej Kallada

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Categories

Share

YouTube Transcript Scraper — Captions & Subtitles to Text

Extract the full transcript (captions / subtitles) of any YouTube video as clean, ready-to-use text — with optional timestamps. Works with manually-created and auto-generated captions in any language. No API key, no login.

Perfect for feeding videos into LLMs/RAG, summarization, translation, content repurposing, SEO, and research at scale.

Features

  • Accepts video URLs or IDswatch, youtu.be, shorts, and embed links all work.
  • Clean full-text transcript plus rich metadata (title, channel, duration, views, language).
  • Optional timestamped segments (start, dur, text) for subtitle/SRT-style use.
  • Prefer human captions over auto-generated when both exist.
  • Bulk: pass hundreds of videos in one run.
  • Residential proxy support to avoid IP blocks.
  • Fair pricing — you only pay for transcripts actually returned. Videos without captions are returned (so you know) but never charged.

Input

FieldTypeDescription
videosarrayYouTube URLs or 11-char IDs, one per line. Required.
languagestringPreferred caption language code (en, es, fr…). Falls back to best available.
preferManualCaptionsbooleanPrefer human captions over auto-generated. Default true.
includeTimestampsbooleanAlso output a segments array per video. Default false.
proxyConfigurationobjectResidential proxy recommended.

Example input

{
"videos": [
"https://www.youtube.com/watch?v=dQw4w9WgXcQ",
"https://youtu.be/9bZkp7q19f0"
],
"language": "en",
"preferManualCaptions": true,
"includeTimestamps": false
}

Output

One record per video:

{
"video_id": "dQw4w9WgXcQ",
"video_url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
"title": "…",
"channel": "…",
"duration_seconds": 213,
"view_count": 1600000000,
"language": "en",
"is_auto_generated": false,
"has_transcript": true,
"word_count": 410,
"transcript_text": "We're no strangers to love …"
}

With includeTimestamps: true, each record also includes:

"segments": [{ "start": 18.2, "dur": 3.4, "text": "We're no strangers to love" }]

Pricing

Pay-per-event: a tiny start fee plus a flat fee per transcript returned. Videos with no captions are not charged.

Notes

  • Some videos genuinely have no captions — those come back with has_transcript: false and a reason in error.
  • Age-restricted or region-locked videos may be unavailable; the reason is reported per video.