YouTube Transcript Scraper - 100% Free
Pricing
Pay per usage
YouTube Transcript Scraper - 100% Free
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
12
Total users
7
Monthly active users
4 days 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,"available_languages": ["en", "es-419", "ja"],"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). Every row's available_languages lists every caption track the video actually publishes, so you can see what else was on offer if your preferred one wasn't there.
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:
| Actor |
|---|
| [YouTube Channel Transcripts |
| YouTube Search Scraper - Videos, Views & Channels |
| YouTube Channel Videos Scraper - Views & Velocity |
| [ATS Jobs Search API |
| [Hiring Signals |
| [Career Site Job Listing API |
All input fields
Every field the Start form accepts, so nothing in the schema is undocumented. Most runs only need the fields already covered above — these are the rest, including advanced/bring-your-own-data options.
includeSegments(Include timestamped segments) — Keep the per-line segments with start time and duration. Turn off for a plain-text transcript only.proxyConfiguration(Proxy configuration) — YouTube blocks datacenter IPs, so this Actor routes through a proxy. Leave the default (Apify Proxy) unless you have your own.
Support
Found a bug or have a feature request? Use the Issues tab on this Actor's Apify Store page, or message the author (om_kh) directly through Apify — every report gets a reply.