YouTube Channel & Playlist Transcripts (Bulk, RAG Chunks)
Pricing
from $1.40 / 1,000 video transcribeds
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
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
2
Monthly active users
7 days ago
Last modified
Categories
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":
| Option | Good for | The catch |
|---|---|---|
yt-dlp | Free, one channel, on your own machine | You 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 code | Same throttling problem at scale; no channel expansion, no chunking, you supply proxies |
| This Actor | A whole channel/playlist/search in one call, chunked for RAG, callable as an API or MCP tool with no infrastructure | You pay $2 per 1,000 videos |
| Whisper / ASR services | Videos with no captions at all | Far 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 transcriptsegments— raw caption segments withstartandduration(optional)chunks— overlapping text windows withstartSec/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
| Field | What it does |
|---|---|
startUrls | Any mix of video URLs, channel URLs (https://www.youtube.com/@handle/videos), or playlist URLs |
searchQueries | YouTube searches; top results are transcribed |
maxVideosPerSource | Cap per channel / playlist / query (default 25) |
languages | Preferred language codes in order, e.g. ["en", "es"]. Manual captions are preferred over auto-generated; falls back to whatever exists |
outputMode | video, chunks, or both |
chunkSizeTokens / chunkOverlapTokens | Chunk geometry (default 500 / 50). Set size to 0 to skip chunking |
includeSegments | Include raw timestamped segments in video items |
proxyConfiguration | Apify 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.