YouTube Transcript API - 100% Free, Unlimited Transcripts
Pricing
Pay per usage
YouTube Transcript API - 100% Free, Unlimited Transcripts
Completely free - no charge per transcript, ever. Clean timestamped transcripts from any YouTube video: watch links, youtu.be, Shorts, embeds or bare IDs. Reads YouTube's own first-party player endpoint - no API key, no cookies. Full text, per-line segments, language, word count.
Pricing
Pay per usage
Rating
0.0
(0)
Developer
omar khandji
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
8 hours ago
Last modified
Categories
Share
YouTube Transcript API — Subtitles & Captions in Any Language
Paste YouTube links, get clean timestamped transcripts. No API key, no cookies, no proxies, nothing that expires.
100% free
This Actor is free. There is no charge per transcript and no charge per run from us — you pay only Apify's own platform usage for the run, exactly as you would for any Actor you wrote yourself.
It is free because it costs us nothing to operate: it reads YouTube's own first-party endpoint, so there is no upstream scraper to pay for. No API key, no cookies, nothing that expires.
Need whole channels or playlists in bulk? YouTube Channel & Playlist Transcripts does that for $0.001 per transcript.
Why this one
Most transcript actors scrape the watch page, which means cookies, consent walls, and a scraper that breaks every time YouTube ships a redesign.
This Actor calls YouTube's own player endpoint — the same first-party API the mobile app uses — and then downloads the caption file YouTube itself serves. Three consequences:
- It doesn't break. No HTML parsing, no anti-bot to fight.
- It's complete. You get every caption language the video publishes, and human-written subtitles are always preferred over auto-generated ones when both exist.
- It's cheap. There is no upstream scraper to pay for, so the price stays low.
What you pass
Any mix of these works, in one list:
| Form | Example |
|---|---|
| Watch URL | https://www.youtube.com/watch?v=aircAruvnKk |
| Short link | https://youtu.be/dQw4w9WgXcQ |
| Shorts | https://www.youtube.com/shorts/tPEE9ZwTmy0 |
| Embed | https://www.youtube.com/embed/aircAruvnKk |
| Bare ID | aircAruvnKk |
Duplicates are removed before anything is fetched, so you are never billed twice for the same video.
Output
One row per video:
{"video_id": "aircAruvnKk","video_url": "https://www.youtube.com/watch?v=aircAruvnKk","title": "But what is a neural network?","channel": "3Blue1Brown","language": "en","is_generated": false,"duration_seconds": 1105.64,"segment_count": 286,"word_count": 3357,"text": "Full transcript as one clean string ...","segments": [{ "start": 12.4, "duration": 3.1, "text": "Let me start with a question." }]}
Set Include timestamped segments to off if you only want text — handy when you are feeding an LLM and paying per token.
Languages
Leave Preferred language empty for English (falling back to the video's default), or pass fr, es, de, pt, ja... If the exact code is missing, the closest regional variant is used (pt matches pt-BR).
Good to know
- Hard cost cap. Set
maxTotalChargeUsdand the run can never bill above it. - A video without captions is never billed. It is reported in
source_errorswith codeNO_TRANSCRIPTand costs you nothing. - Agent-ready.
RUN_SUMMARY.jsongives an LLM agent the counts and total word volume without re-reading the dataset.
Typical uses
- Feed video content into a RAG index or a summarizer
- Build searchable archives of a channel or a conference playlist
- Translate or repurpose long-form video into articles and newsletters
- Analyse what competitors actually say in their videos
Related scrapers
Same data, other sources — all with the same free tier, the same clean schema and the same pay-only-for-what-you-get billing: