YouTube Transcript Scraper - 100% Free avatar

YouTube Transcript Scraper - 100% Free

Pricing

Pay per usage

Go to Apify Store
YouTube Transcript Scraper - 100% Free

YouTube Transcript Scraper - 100% Free

Clean timestamped transcripts from any YouTube video, watch links, youtu.be, Shorts or bare IDs. Reads YouTube's own first-party endpoint, no API key. Completely free, no charge ever.

Pricing

Pay per usage

Rating

0.0

(0)

Developer

omar khandji

omar khandji

Maintained by Community

Actor stats

0

Bookmarked

29

Total users

12

Monthly active users

a day ago

Last modified

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:

  1. It doesn't break. No HTML parsing, no anti-bot to fight.
  2. 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.
  3. 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:

FormExample
Watch URLhttps://www.youtube.com/watch?v=aircAruvnKk
Short linkhttps://youtu.be/dQw4w9WgXcQ
Shortshttps://www.youtube.com/shorts/tPEE9ZwTmy0
Embedhttps://www.youtube.com/embed/aircAruvnKk
Bare IDaircAruvnKk

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 maxTotalChargeUsd and the run can never bill above it.
  • A video without captions is never billed. It is reported in source_errors with code NO_TRANSCRIPT and costs you nothing.
  • Agent-ready. RUN_SUMMARY.json gives 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

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.