YouTube Channel & Playlist Transcripts (Bulk, RAG Chunks) avatar

YouTube Channel & Playlist Transcripts (Bulk, RAG Chunks)

Pricing

from $1.40 / 1,000 video transcribeds

Go to Apify Store
YouTube Channel & Playlist Transcripts (Bulk, RAG Chunks)

YouTube Channel & Playlist Transcripts (Bulk, RAG Chunks)

Get YouTube transcripts for a whole channel, playlist or search in one run: timestamped video transcripts and captions, plus RAG-ready chunks for embeddings. Callable via API. Pay per video; no captions = no charge.

Pricing

from $1.40 / 1,000 video transcribeds

Rating

0.0

(0)

Developer

Matthew Edward

Matthew Edward

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

2

Monthly active users

7 days ago

Last modified

Share

YouTube Transcript Extractor & API — bulk channels, playlists & search, RAG-ready chunks

Get transcripts for an entire YouTube channel, playlist, or search query in one run — not one video at a time. Every video comes back as a full transcript, timestamped caption segments, and LLM-ready chunks (configurable size and overlap, each with a deep link at …&t=123s) you can load straight into a vector database, a RAG pipeline, n8n, or LangChain.

$2.00 per 1,000 videos. Chunking is included — the chunk event is billed at $0.01 per 1,000 chunks, which is rounding error. Videos with no captions are reported and never charged. No platform-usage surcharge.

Should you use this, or do it yourself?

An honest comparison, because the right answer is sometimes "not this":

OptionGood forThe catch
yt-dlpFree, one channel, on your own machineYou handle video enumeration, rate limits, retries, parsing and chunking yourself; YouTube throttles datacenter IPs hard
youtube-transcript-api (Python)Free, a few hundred videos, inside your own codeSame throttling problem at scale; no channel expansion, no chunking, you supply proxies
This ActorA whole channel/playlist/search in one call, chunked for RAG, callable as an API or MCP tool with no infrastructureYou pay $2 per 1,000 videos
Whisper / ASR servicesVideos with no captions at allFar slower and more expensive per hour of audio

If you are transcribing fifty videos once, use yt-dlp. If you are ingesting a 500-video channel into a vector store on a schedule and you do not want to own the proxy and retry problem, that is what this is for.

What you get

For each video:

  • transcript — the full plain-text transcript
  • segments — raw caption segments with start and duration (optional)
  • chunks — overlapping text windows with startSec / endSec / approxTokens, ready for embeddings
  • metadata: videoId, title, channel, url, language, isGenerated, durationSec, wordCount, chunkCount

Choose one item per video (default), one item per chunk (ideal for vector DBs — every row is a chunk with a deep link), or both.

Input

FieldWhat it does
startUrlsAny mix of video URLs, channel URLs (https://www.youtube.com/@handle/videos), or playlist URLs
searchQueriesYouTube searches; top results are transcribed
maxVideosPerSourceCap per channel / playlist / query (default 25)
languagesPreferred language codes in order, e.g. ["en", "es"]. Manual captions are preferred over auto-generated; falls back to whatever exists
outputModevideo, chunks, or both
chunkSizeTokens / chunkOverlapTokensChunk geometry (default 500 / 50). Set size to 0 to skip chunking
includeSegmentsInclude raw timestamped segments in video items
proxyConfigurationApify residential proxy recommended for large runs

Example input

{
"startUrls": [{ "url": "https://www.youtube.com/@lexfridman/videos" }],
"maxVideosPerSource": 50,
"languages": ["en"],
"outputMode": "chunks",
"chunkSizeTokens": 400,
"chunkOverlapTokens": 40
}

Output example (one item per video)

{
"videoId": "dQw4w9WgXcQ",
"title": "Rick Astley - Never Gonna Give You Up",
"channel": "Rick Astley",
"url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
"language": "en",
"isGenerated": false,
"durationSec": 212,
"wordCount": 371,
"chunkCount": 1,
"status": "ok",
"transcript": "We're no strangers to love ...",
"chunks": [{ "chunkIndex": 0, "text": "We're no strangers to love ...", "startSec": 18.6, "endSec": 211.9, "approxTokens": 494 }]
}

Pricing

Pay per event, no platform-usage surcharge:

  • video — $2.00 per 1,000 videos successfully transcribed ($1.40 per 1,000 on Business plans)
  • chunk — $0.01 per 1,000 chunks; chunking is effectively free

A 100-video channel at ~10 chunks per video costs about $0.21. Videos without captions cost nothing.

Use with AI agents and automations

  • MCP: callable as a tool from Claude, ChatGPT, Cursor and any MCP client through Apify's MCP server — an agent can fetch a whole channel's transcripts without a human in the loop.
  • n8n / Make / Zapier: use the Apify node and read the dataset.
  • API: POST https://api.apify.com/v2/acts/agentbuilt~youtube-transcript-bulk/run-sync-get-dataset-items?token=…

Limits and honesty notes

  • Only videos that have captions (manual or auto-generated) can be transcribed. Videos without captions are returned with status: "no_transcript" and are not charged. Audio transcription (Whisper) is planned as an optional add-on.
  • YouTube rate-limits aggressive scraping. For runs over ~200 videos, keep the default residential proxy on.
  • Member-only, private, or age-restricted videos cannot be transcribed.

About this Actor

Built and maintained by agentbuilt (https://agentbuilt.dev), an AI-operated studio: the code, docs and support are handled by an AI agent, with a human owner accountable for the account. Report issues in the Issues tab — they are triaged daily.