YouTube Transcript Scraper
Pricing
$4.00 / 1,000 transcripts
YouTube Transcript Scraper
Get YouTube video transcripts and captions (manual or auto-generated) with timestamps, plain text and video title/channel. Fast, reliable, pay only for transcripts delivered.
Pricing
$4.00 / 1,000 transcripts
Rating
0.0
(0)
Developer
Streamline Data
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Extract YouTube transcripts and captions from videos, Shorts, whole playlists, channels or search results: creator-uploaded or auto-generated, in any language the video offers, with timestamps and as clean plain text. Built for AI/LLM pipelines, RAG, summarisation, research and content repurposing.
Why this scraper
- Reliable — retries and smart rate handling so runs finish instead of failing halfway.
- Pay only for results — you're charged per transcript delivered. Videos without captions, private videos and invalid links are returned with an error and cost nothing.
- LLM-ready output — full transcript as one
textstring, plus timestampedsegmentsif you need them. - Video metadata included — title, channel name and channel URL in every result.
- Bulk input — paste a playlist or channel URL (or a search query) and get every video's transcript; duplicates are removed automatically.
- Any language — get each video's transcript in your preferred language when available, or its own default; the transcript's language is reported in
languageCode. - Any URL format —
watch?v=,youtu.be/, Shorts, embed, live, mobile and YouTube Music links, or bare video IDs.
Input
| Field | Description |
|---|---|
videos | Video URLs/IDs, playlist URLs, or channel URLs (@handle, /channel/…; add /shorts or /streams for those tabs) |
searchQueries | Get transcripts for the top results of YouTube searches |
maxVideosPerSource | Max videos per playlist, channel or search (default 20) |
languages | Preferred caption languages in order, e.g. ["en", "es"]. Empty = any language |
anyLanguage | If no preferred language exists, return whatever language is available (default true) |
preferManual | Prefer human-made captions over auto-generated (default true) |
outputFormat | both, segments or text |
Output
{"videoId": "8jPQjjsBbIc","url": "https://www.youtube.com/watch?v=8jPQjjsBbIc","title": "How to stay calm when you know you'll be stressed | Daniel Levitin | TED","channelName": "TED","channelUrl": "https://www.youtube.com/@TED","language": "English","languageCode": "en","isGenerated": null,"durationSeconds": 742,"source": "https://www.youtube.com/playlist?list=…","text": "A few years ago, I broke into my own house...","segments": [{"start": 12.08, "duration": 3.52, "text": "A few years ago,"}]}
Videos that fail come back with an error code and a plain-English message — transcripts_disabled, video_unavailable, video_unplayable (e.g. live now), age_restricted, or no_transcript_in_language (with the list of available languages) — and are not charged.
Notes
languageCodeis the language of the returned transcript.isGenerated(auto-generated vs creator captions) is reported when known, otherwisenull.- Exact-language mode (fallback to any language off) checks the video's caption tracks precisely; it is slower and best for smaller batches.
Pricing
Pay per event: one charge per transcript successfully returned. No charge for failures.
Use it via API, Make, Zapier, n8n or as an MCP tool
Call it like any Apify Actor through the Apify API, integrations, or the Apify MCP server for AI agents.
FAQ
Can it translate transcripts? Not currently — it returns the languages YouTube provides for each video.
Does it work on Shorts and livestream replays? Yes, if captions exist. Streams that are live right now have no transcript yet.
A watch URL with &list= — video or playlist? That single video. Paste the playlist?list= URL to get the whole playlist.
Is it legal? It reads publicly available captions. You are responsible for how you use the data.