Pass a YouTube URL or video ID. Get back the full transcript — plain text plus timestamped segments. No YouTube API key, no Google Cloud project, no quota. Just a VidProxy API key and one HTTP request.
curl "https://vidproxy.pro/api/transcript?url=https://youtube.com/watch?v=dQw4w9WgXcQ" \
-H "X-API-Key: your_api_key"{
"available": true,
"text": "We're no strangers to love...",
"segments": [
{ "text": "We're no strangers to love", "start": 18.08, "duration": 2.56 },
{ "text": "You know the rules and so do I", "start": 21.24, "duration": 2.44 }
],
"credits_remaining": 487
}const res = await fetch(
`https://vidproxy.pro/api/transcript?url=${encodeURIComponent(videoUrl)}`,
{ headers: { 'X-API-Key': process.env.VIDPROXY_API_KEY } }
);
const { available, text, segments } = await res.json();
if (available) console.log(text);import requests
r = requests.get(
"https://vidproxy.pro/api/transcript",
params={"url": "https://youtube.com/watch?v=dQw4w9WgXcQ"},
headers={"X-API-Key": "your_api_key"}
)
data = r.json()
if data["available"]:
print(data["text"])
Every transcript response includes three things: an available boolean, a text string with the full plain-text transcript, and a segments array with each caption line, its start time in seconds, and its duration.
text, start (seconds from video start), and duration (seconds).
The X-Credits-Remaining response header tells you how many on-demand lookups you have left in the current billing month. Agency plan users see "unlimited".
You can pass either a full YouTube URL or a bare video ID — both work. All standard YouTube URL formats are supported:
?url=https://youtube.com/watch?v=dQw4w9WgXcQ?url=https://youtu.be/dQw4w9WgXcQ?video_id=dQw4w9WgXcQ
If a video has no captions yet, the API returns "available": false — and you are not charged a credit. If YouTube explicitly disabled captions for that video, the response includes "disabled": true. Failed lookups are always free.
VidProxy doesn't use the YouTube Data API. No Google Cloud project, no OAuth setup, no quota headaches. Sign up and get an API key in under a minute.
The YouTube Data API only lets you download captions for videos you own. VidProxy retrieves transcripts from any public YouTube video — channels you don't own, competitors, news sources, anywhere.
One HTTP request returns the transcript in seconds. No polling, no job queue to manage. The response comes back synchronously.
Every response includes the full segment array with start times and durations — ready to feed into RAG systems, video search indexes, or chapter generation tools.
Beyond on-demand lookups, VidProxy can monitor any YouTube channel and push the transcript to your webhook the moment a new video goes live — no polling required.
The free plan includes 10 on-demand transcript lookups per month. No credit card required to sign up and start fetching transcripts today.
There's no single official "YouTube transcript API." The Data API's Captions endpoint only covers videos you own, so every option below is either a scraping library you run yourself or a third-party service that runs one for you. Here's the honest breakdown of all of them.
| Method | Best for | Production-safe | Auto-delivery on new video | Price |
|---|---|---|---|---|
| Do it yourself | ||||
youtube-transcript-api (Python) |
Local scripts, prototyping | ✕ IP gets blocked in cloud | ✕ | Free |
| yt-dlp | One-off subtitle downloads | ✕ Same blocking risk | ✕ | Free |
| Invidious / NewPipeExtractor | Self-hosted apps, Android clients | You maintain it | ✕ | Free (self-hosted) |
| RapidAPI community wrappers | Quick prototypes | Varies | ✕ | Pay-per-call, inconsistent |
| Managed APIs | ||||
| Supadata | Bulk metadata + playlists + transcripts | ✓ | ✕ Pull only | Credit-based |
| VidProxy | Auto-delivery + on-demand lookup | ✓ | ✓ Webhook push | Flat monthly, free tier |
| Official | ||||
| YouTube Data API — Captions endpoint | Captions for videos you uploaded | ✓ | Metadata only | Free, 10,000 units/day |
For a local script or a one-off analysis, the Python youtube-transcript-api package is the fastest way to get a transcript — no signup, no key:
from youtube_transcript_api import YouTubeTranscriptApi
transcript = YouTubeTranscriptApi.get_transcript("dQw4w9WgXcQ")
print(transcript[0]["text"])It works well on a laptop. The catch: YouTube rate-limits and blocks requests from data-center IP ranges, and cloud providers (AWS, GCP, Render, Vercel) live in exactly those ranges. Deploy this to production and it starts failing intermittently within hours or days — see our full breakdown of why it gets blocked and what to do about it.
yt-dlp can also pull subtitles without downloading video, using --write-auto-sub --skip-download:
yt-dlp --write-auto-sub --skip-download --sub-format vtt \
"https://youtube.com/watch?v=dQw4w9WgXcQ"
It's more heavyweight than a JSON API — you get a .vtt file you still need to parse — and it's subject to the same IP-blocking problem in a cloud environment. Both tools are genuinely useful; neither is something you want as a production dependency without a fallback plan.
If you already run infrastructure and want to avoid a third-party vendor entirely, Invidious (a self-hostable YouTube front end) and NewPipeExtractor (the Java/Kotlin library behind the NewPipe Android client) can extract transcript data through their own scraping layers. You trade vendor dependency for maintenance burden — you're now the one keeping the scraper working when YouTube changes its front end.
RapidAPI hosts dozens of community-maintained "YouTube transcript" or "YouTube v3 alternative" listings. They're fine for a five-minute test. Reliability, response format, and pricing vary wildly between listings, most are unmaintained side projects, and none carry an SLA — treat them as a prototype tool, not infrastructure.
Both remove the IP-blocking and maintenance problem entirely — the provider runs the fetch infrastructure so you don't. Supadata is broader and pull-only: you call it per video, and it also covers channel metadata and playlists. VidProxy is narrower and adds one thing neither DIY libraries nor Supadata do — it monitors channels and pushes the transcript to your webhook the moment a new video publishes, so you're not the one polling for new uploads. See the full VidProxy vs Supadata comparison.
The Data API's Captions endpoint only returns captions for videos uploaded to your own channel — there's no way to pull a transcript for content you don't own, and the whole API is capped at 10,000 quota units/day. See VidProxy vs the YouTube Data API and what to do when you hit the quota.
youtube-transcript-api or yt-dlp, free.AI and RAG pipelines. Feed YouTube transcripts directly into your vector database for semantic search, Q&A, or summarization. The on-demand endpoint makes it trivial to add new videos to your knowledge base — one call per video, done.
Competitor and market research. Pull transcripts from competitor channels, industry conferences, or analyst briefings. Pipe them into your LLM of choice to extract insights, track topic trends, or surface mentions of your product.
Content repurposing workflows. Generate blog posts, social captions, newsletters, or show notes from video transcripts automatically. VidProxy delivers the raw text your content pipeline needs.
Podcast and video search. Index transcripts from your own or third-party YouTube channels for full-text or semantic search across your video library.
Education and research. Retrieve transcripts from lecture recordings, documentaries, or technical talks for analysis, citation, or study tools.
No. VidProxy does not use the YouTube Data API and requires no Google Cloud credentials. You only need a VidProxy API key, which you get when you create an account.
Yes — any public video with captions available. You don't need to own the channel or have any relationship with the creator. Auto-generated and manual captions are both supported.
The API returns "available": false. You are not charged a credit. If captions are explicitly disabled by the creator, the response also includes "disabled": true so you can distinguish the two cases.
Yes, always. The segments array is included in every response where available is true. No extra parameter needed.
Free: 10 on-demand lookups/month. Starter: 500/month. Pro: 2,500/month. Agency: 10,000/month. Channel monitoring subscriptions don't count against on-demand credits.
API requests are rate-limited at 60 requests/minute on free and Starter, 300/minute on Pro and Agency. On-demand transcript lookups count against your monthly credit quota separately.
Yes — any tool that can make an HTTP request works. VidProxy has dedicated guides for n8n, Make, and Zapier.
For a one-off script, the Python youtube-transcript-api package or yt-dlp — both free and open source. Neither is reliable once deployed to a cloud server, since YouTube blocks requests from data-center IP ranges. For anything running in production, a managed API is the practical free option — VidProxy's free tier includes 10 on-demand lookups/month with no credit card.
Yes, via yt-dlp --write-auto-sub --skip-download, which downloads the caption file (VTT/SRT) without the video. It's more heavyweight than a JSON API — you parse the caption file yourself — and it hits the same IP-blocking issues as other scrapers when run from a cloud provider.
It works by scraping YouTube's own page data, and YouTube rate-limits and blocks requests from known data-center IP ranges — which is exactly where AWS, GCP, Render, and Vercel live. It runs fine locally and fails intermittently once deployed. See the full breakdown.
Yes — Invidious and NewPipeExtractor both give you a self-hosted scraping layer. You avoid a vendor dependency but take on the maintenance burden yourself, including keeping the scraper working as YouTube changes its front end.
Free tier, no credit card, no YouTube API key required.
No credit card · 10 free lookups/month · Cancel anytime