YouTube Transcript Scraper - Channels, Playlists, Bulk avatar

YouTube Transcript Scraper - Channels, Playlists, Bulk

Pricing

from $2.13 / 1,000 transcripts

Go to Apify Store
YouTube Transcript Scraper - Channels, Playlists, Bulk

YouTube Transcript Scraper - Channels, Playlists, Bulk

Extract YouTube transcripts in bulk - paste video, channel, or playlist URLs, or search queries. Get plain text, SRT, VTT, or timed segments plus video metadata. Only delivered transcripts are charged. No cookies, no API key.

Pricing

from $2.13 / 1,000 transcripts

Rating

0.0

(0)

Developer

Saulius Saulenas

Saulius Saulenas

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

YouTube Transcript Scraper — Videos, Channels, Playlists & Search

Extract YouTube transcripts in bulk: paste video URLs, channel URLs, playlist URLs, or plain search queries, and get clean transcripts with video metadata — as plain text, timed segments, SRT, or WebVTT.

Built for AI/RAG pipelines, content repurposing, media monitoring, and research. No cookies, no login, no YouTube API key.

Why this scraper

  • Bulk-first — channels, playlists, and search queries expand to their videos automatically. One input handles all formats, mixed freely.
  • Reliable on cloud infrastructure — YouTube aggressively bot-checks datacenter IPs. This actor uses a smart proxy ladder with automatic retries; in our benchmark it extracted 200/200 transcripts from a channel in under 2 minutes.
  • You only pay for delivered transcripts — videos without captions, unavailable videos, and fetch failures are never charged. Diagnostic rows tell you exactly what happened.
  • 4 output formats — plain text for LLMs, timed segments for analysis, SRT/VTT for subtitles.
  • Language control — priority list (e.g. ["de", "en"]), manual-vs-auto-generated preference, strict or fallback matching. Every result shows all available caption languages.

Input

{
"videoUrls": [
"https://www.youtube.com/watch?v=dQw4w9WgXcQ",
"https://youtu.be/jNQXAC9IVRw",
"https://www.youtube.com/@mkbhd",
"https://www.youtube.com/playlist?list=PLFgquLnL59alCl_2TQvOiD5Vgm1hCaGSI",
"machine learning tutorial"
],
"languages": ["en"],
"transcriptFormat": "text",
"maxVideosPerSource": 200
}
FieldDefaultDescription
videoUrlsVideo URLs/IDs, channel URLs (@handle or /channel/UC…), playlist URLs, or search queries
languages["en"]Preferred transcript languages, in priority order
transcriptFormattexttext, segments, srt, or vtt
preferAutoGeneratedfalsePrefer auto-generated (ASR) captions over manual ones
fallbackToAnyLanguagetrueUse the best available track if no preferred language exists
includeFailurestrueEmit uncharged diagnostic rows for videos without transcripts
maxVideosPerSource200Cap per channel/playlist/search
maxResults100000Global cap per run (spend guard)

Output

One dataset item per video:

{
"type": "transcript",
"videoId": "dQw4w9WgXcQ",
"url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
"title": "Rick Astley - Never Gonna Give You Up (Official Video)",
"channelName": "Rick Astley",
"channelId": "UCuAXFkgsw1L7xaCfnd5JJOw",
"lengthSeconds": 213,
"viewCount": 1697651560,
"language": "en",
"languageName": "English",
"isAutoGenerated": false,
"transcriptFormat": "text",
"transcript": "We're no strangers to love. You know the rules and so do I…",
"segmentCount": 61,
"wordCount": 488,
"availableLanguages": ["en", "en (auto)", "de-DE", "ja", "pt-BR", "es-419"],
"sourceInput": "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
"scrapedAt": "2026-08-11T21:35:20.991Z"
}

With transcriptFormat: "segments", transcript is an array of { "text": "…", "start": 1.36, "duration": 1.68 } objects. With srt/vtt it contains a ready-to-save subtitle file.

Videos that can't produce a transcript get a type: "failure" row (free of charge) with an error code such as NO_CAPTIONS, NO_MATCHING_LANGUAGE, or LOGIN_REQUIRED, so your pipeline can handle them explicitly.

Pricing

Pay per event — $2.50 per 1,000 transcripts ($0.0025 per transcript) plus a negligible actor-start fee ($0.00005 per GB of actor memory). Platform usage (compute, proxies, storage) is included — the event price is all you pay.

  • Videos without captions cost $0 — you pay only for transcripts actually delivered.
  • Set Maximum total charge on the run to hard-cap spending; the actor stops cleanly at the cap.
RunYou pay
100-video playlist, 92 have captions$0.23
1,000-video channel backfill~$2.50
20,000-video corpus~$50.00

Use cases

  • AI & RAG pipelines — turn channels into LLM-ready corpora (works great from n8n, Make, LangChain, or the Apify API).
  • Content repurposing — transcripts for blogs, newsletters, and social clips.
  • Media & brand monitoring — schedule runs on channels and search queries.
  • Research — collect interview/lecture transcripts with timestamps for citation.
  • Subtitles — batch-export SRT/VTT for re-upload or translation workflows.

Scheduling & API

Run it on a schedule (e.g. daily on a channel URL) from the Schedules tab, or call it from your code via the Apify API — see the API button on this page for ready-made snippets. Results stream to the dataset as they're extracted, so you can consume partial results while a large run is still going.

Limitations

  • Transcripts come from YouTube caption tracks (manual or auto-generated). Videos with captions disabled can't be transcribed — they're reported as NO_CAPTIONS and not charged.
  • Live streams in progress and age-restricted videos are generally not extractable.
  • Channel expansion returns the channel's regular uploads (newest first), up to maxVideosPerSource.

FAQ

Do I need a YouTube API key or cookies? No. The actor uses YouTube's public endpoints.

What languages are supported? Anything YouTube has captions for. Set languages to your priority list; availableLanguages on every item shows what exists.

Can I get word-level timestamps? Segment-level timestamps (a few seconds each) via segments, srt, or vtt formats.

What happens on a video that's private/deleted? A free failure row with the error code — never a charge.