YouTube Transcript & Video-Context Extractor
Pricing
from $12.00 / 1,000 video transcribeds
YouTube Transcript & Video-Context Extractor
LLM-ready YouTube transcripts, metadata and chapters for AI agents. Batch by video, playlist or channel. No login, no API key.
Pricing
from $12.00 / 1,000 video transcribeds
Rating
0.0
(0)
Developer
Zeeshan Faizal
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 days ago
Last modified
Categories
Share
YouTube Transcript & Video-Context Extractor — LLM-Ready Transcripts for AI Agents
Extract clean, structured YouTube transcripts, video metadata, and chapters — batch by video, playlist, or channel. Built for AI agents, RAG pipelines, and LLM apps. No login, no YouTube API key, no cookies.
Give it YouTube video URLs (or bare IDs), a playlist, or a channel, and get back agent-ready transcripts as structured JSON, Markdown, SRT subtitles, or plain text — with timestamps, auto-detected chapters, caption language handling, and full video metadata. Pay only for what you extract (pay-per-event), and default to Apify's automatic proxy so you never need to buy your own.
Keywords: youtube transcript, youtube transcript api, video transcript scraper, youtube captions, youtube subtitles, transcript extractor, LLM, RAG, AI agent, video to text, youtube summary input, timestamps, chapters, SRT, playlist transcript, channel transcript.
Why this Actor
- LLM-ready output. Every record includes a joined
textfield and an agent-readymarkdowndocument (H1 title, metadata block, chapters, timestamped or paragraph-segmented body) — drop it straight into a prompt or a vector store. - Batch anything. One video, a list of videos, a whole playlist, or a channel's recent uploads — capped by
maxVideosso you never over-scrape. - Language + translation aware. Prefer a specific caption language, prefer human (manual) captions over auto-generated, and optionally translate via YouTube's own translation tracks.
- Chapters + metadata. Title, channel, duration, publish date, view count, description, thumbnails, available caption languages, and video chapters.
- Robust by design. Two extraction paths (watch-page parse + innertube), per-video error isolation, retries with backoff, and graceful handling of no-caption / private / removed / live videos — one bad video never aborts the run.
- No paid proxy required. Defaults to Apify's automatic datacenter proxy. Switch on residential only if you hit blocks at scale.
Input
Provide at least one source. Everything is optional beyond that.
| Field | Type | Default | Description |
|---|---|---|---|
videoUrls | string[] | – | Video URLs (watch, youtu.be, shorts, embed) or bare 11-char IDs |
playlistUrl | string | – | Playlist URL or ID → expanded to its videos |
channelUrl | string | – | Channel URL (/channel/UC…, /@handle, /c/, /user/) or bare @handle → recent uploads |
startUrls | request[] | – | Advanced: list of { "url": … }; video/playlist/channel auto-detected |
language | string | auto | Preferred caption language code, e.g. en, es, de |
translateTo | string | – | Translate captions into this language (best-effort, uses YouTube translation tracks) |
preferManualCaptions | boolean | true | Prefer human captions over auto-generated |
includeTimestamps | boolean | true | Keep per-segment timestamps (off = paragraph prose) |
includeChapters | boolean | true | Extract chapters when present |
outputFormat | enum | json | json · markdown · srt · text |
maxVideos | integer | 50 | Cap after playlist/channel expansion |
maxConcurrency | integer | 5 | Parallel videos (raise only with residential proxies) |
proxyConfiguration | proxy | Apify auto | Defaults to Apify datacenter proxy; enable RESIDENTIAL if blocked |
Example input
{"videoUrls": ["https://www.youtube.com/watch?v=arj7oStGLkU","PHDbWvnkDL0"],"playlistUrl": "https://www.youtube.com/playlist?list=PLUCPc-R61w-s","language": "en","preferManualCaptions": true,"includeTimestamps": true,"includeChapters": true,"outputFormat": "json","maxVideos": 25}
Output
One dataset record per video. Metadata and flags are always present; the transcript representation follows outputFormat.
json (default) — abridged real record
{"videoId": "arj7oStGLkU","url": "https://www.youtube.com/watch?v=arj7oStGLkU","title": "Inside the Mind of a Master Procrastinator | Tim Urban | TED","channel": "TED","channelUrl": "https://www.youtube.com/channel/UCAuUUnT6oDeKwE6v1NGQxug","durationSeconds": 844,"publishDate": "2016-04-06T09:59:35-07:00","viewCount": 61765891,"availableCaptions": [{ "language": "en", "kind": "manual", "name": "English" },{ "language": "es", "kind": "manual", "name": "Spanish" }],"chapters": [],"transcriptAvailable": true,"isAutoGenerated": false,"language": "en","translatedTo": null,"transcript": [{ "start": 12.645, "dur": 1.37, "text": "So in college," },{ "start": 15.349, "dur": 1.564, "text": "I was a government major," }],"text": "So in college, I was a government major, which means I had to write a lot of papers. ...","markdown": "# Inside the Mind of a Master Procrastinator ..."}
markdown — agent-ready document
# Inside the Mind of a Master Procrastinator | Tim Urban | TED- **Channel:** TED (https://www.youtube.com/channel/UCAuUUnT6oDeKwE6v1NGQxug)- **URL:** https://www.youtube.com/watch?v=arj7oStGLkU- **Duration:** 14:04- **Published:** 2016-04-06- **Views:** 61,765,891- **Transcript:** manual captions (en)## Transcript**[00:12]** So in college,**[00:15]** I was a government major,...
srt returns a standard subtitle string; text returns the full joined transcript. Videos with no captions return a record with transcriptAvailable: false (still with metadata); private/removed/unavailable videos return a row with error and errorMessage.
Pricing (pay-per-event)
You pay per unit of value delivered — nothing for videos that fail:
| Event | Price | When |
|---|---|---|
| Actor start | $0.00005 | Once per run (covers startup) |
| Video transcribed | $0.005 | Per video with a delivered transcript |
| Video metadata (no captions) | $0.002 | Per valid video that has no captions |
Private, removed, age-restricted, or otherwise unavailable videos are never charged. A 1,000-video run of transcribable videos costs about $5. Set a max charge per run in the Console to cap spend — the Actor stops gracefully when it's reached.
Languages, limits & behavior
- Languages: any language YouTube has captions for.
languagepicks the track;preferManualCaptionsprefers human captions; falls back to auto-generated.translateTouses YouTube's translation tracks (best-effort — YouTube rate-limits translation, and the Actor returns the original captions if a translation is unavailable). - Playlists expand up to ~100 videos per page (then capped by
maxVideos). Channels expand to the most recent uploads. UsemaxVideosto control cost. - No captions is not an error — you get metadata and
transcriptAvailable: false. - Live / private / age-restricted / removed videos are handled gracefully as error rows; the run continues.
- Blocks: YouTube rate-limits aggressive extraction from shared IPs. The default Apify proxy works for typical volumes; for large runs or if you see empty transcripts, enable RESIDENTIAL proxy groups and/or lower
maxConcurrency.
Use with AI agents / MCP
This Actor is designed as a tool for LLM agents: point it at a video and feed the markdown or text straight into a prompt, or push transcript segments into a vector database for RAG. It runs headless (plain HTTP, no browser), so it's fast and cheap to call at scale.
Legal & fair use
This Actor reads publicly available caption data and public video metadata for videos you supply. It does not log in, does not bypass access controls, does not download video/audio, and does not access members-only or private content. It respects rate limits with backoff. You are responsible for using extracted transcripts in accordance with YouTube's Terms of Service and applicable copyright law. See LEGAL.md.