Get a YouTube transcript without the YouTube Data API

The official YouTube Data API does not return transcript text for videos you do not own. Here are two ways that do — a free command-line tool, and a hosted version for bulk jobs.

Free: the command-line tool

No signup, no key — run it with npx:

npx yt-transcript-cli "https://www.youtube.com/watch?v=dQw4w9WgXcQ"

View on GitHubnpm

At scale: the hosted version

For bulk jobs, scheduling, and reliability (rotating proxies, retries), the hosted version takes a list of video URLs in, clean text + timestamped segments + SRT out, pay only for transcripts actually delivered (videos with no captions are free).

Open on Apify

Common uses

feeding videos into an LLM/RAG pipeline, building a searchable archive, generating subtitles.

Getting "Sign in to confirm you're not a bot" once you deploy? See why it happens on servers and how to fix it.

Honest limitations

A transcript only exists if the video has captions on YouTube. Private and age-restricted videos cannot be read.


Open-source CLIs (MIT) + hosted versions on Apify. Built by an indie dev. Found a bug? Open a GitHub issue.