Skip to Content

YouTube Transcript API

Use a simple and performant API to turn YouTube videos into text — with timestamps, multi-language support, and AI-powered fallback transcription.

✔️ Instantly fetch transcripts from a library of billions of YouTube videos

✔️ Extract accurate and time-stamped video transcripts for content analysis

✔️ High performance and high availability API for bulk requests

Trusted by top teams

Appsflyer
Bosch
Hellofresh
Huel
Openai
Usage
curl 'https://api.supadata.ai/v1/transcript?url=https://youtu.be/dQw4w9WgXcQ' \
  -H 'x-api-key: {your_api_key}'
{
  "lang": "en",
  "content": [
    {
      "text": "[Music]",
      "offset": 0,
      "duration": 14650,
      "lang": "en"
    },
    {
      "text": "We're no strangers to",
      "offset": 18800,
      "duration": 1000,
      "lang": "en"
    },
    {
      "text": "love you know the rules and so do I",
      "offset": 21800,
      "duration": 3360,
      "lang": "en"
    },
    {
      "text": "I full commitments while I'm thinking",
      "offset": 26040,
      "duration": 3080,
      "lang": "en"
    },
    {
      "text": "of",
      "offset": 29640,
      "duration": 5880,
      "lang": "en"
    },
    {
      "text": "you wouldn't get this from any other guy",
      "offset": 31240,
      "duration": 3200,
      "lang": "en"
    },
    {
      "text": "I just want to tell you how I'm",
      "offset": 35520,
      "duration": 2640,
      "lang": "en"
    },
    {
      "text": "feeling got to make you understand Never",
      "offset": 39440,
      "duration": 3680,
      "lang": "en"
    },
    {
      "text": "Going To Give You Up never going to let",
      "offset": 43360,
      "duration": 2400,
      "lang": "en"
    },
    {
      "text": "you down never going to run around and",
      "offset": 46200,
      "duration": 3040,
      "lang": "en"
    },
    {
      "text": "desert you never going to make you cry",
      "offset": 49720,
      "duration": 3160,
      "lang": "en"
    },
    {
      "text": "never going to say goodbye never going",
      "offset": 53640,
      "duration": 2400,
      "lang": "en"
    },
    {
      "text": "to tell a lie and hurt you",
      "offset": 56120,
      "duration": 2880,
      "lang": "en"
    },
    {
      "text": "We've known each other for so",
      "offset": 60760,
      "duration": 2360,
      "lang": "en"
    },
    {
      "text": "long your heart's been aching but your",
      "offset": 63960,
      "duration": 3080,
      "lang": "en"
    },
    {
      "text": "to sh to say it inside we both know",
      "offset": 67320,
      "duration": 3000,
      "lang": "en"
    },
    {
      "text": "what's been going",
      "offset": 70600,
      "duration": 880,
      "lang": "en"
    },
    {
      "text": "on we know the game and we're going to",
      "offset": 72520,
      "duration": 3240,
      "lang": "en"
    },
    {
      "text": "playing and if you ask me how I'm",
      "offset": 76640,
      "duration": 3720,
      "lang": "en"
    },
    {
      "text": "feeling don't tell me you're too my you",
      "offset": 81400,
      "duration": 2920,
      "lang": "en"
    },
    {
      "text": "see Never Going To Give You Up never",
      "offset": 84600,
      "duration": 2880,
      "lang": "en"
    },
    {
      "text": "going to let you down never to run",
      "offset": 87720,
      "duration": 2440,
      "lang": "en"
    },
    {
      "text": "around and desert you never going to",
      "offset": 90800,
      "duration": 3360,
      "lang": "en"
    },
    {
      "text": "make you cry never going to say goodbye",
      "offset": 94400,
      "duration": 2680,
      "lang": "en"
    },
    {
      "text": "never going to tell a lie and hurt you",
      "offset": 98080,
      "duration": 3200,
      "lang": "en"
    },
    {
      "text": "never going to give you up never going",
      "offset": 102240,
      "duration": 2360,
      "lang": "en"
    },
    {
      "text": "to let you down never going to run",
      "offset": 104680,
      "duration": 2400,
      "lang": "en"
    },
    {
      "text": "around and desert you never going to",
      "offset": 107680,
      "duration": 3360,
      "lang": "en"
    },
    {
      "text": "make you cry never going to sing goodbye",
      "offset": 111320,
      "duration": 2880,
      "lang": "en"
    },
    {
      "text": "going to tell a lie and hurt",
      "offset": 115200,
      "duration": 2400,
      "lang": "en"
    },
    {
      "text": "you",
      "offset": 118840,
      "duration": 3000,
      "lang": "en"
    },
    {
      "text": "give",
      "offset": 121960,
      "duration": 2320,
      "lang": "en"
    },
    {
      "text": "you give",
      "offset": 125240,
      "duration": 1000,
      "lang": "en"
    },
    {
      "text": "you going to give going to give",
      "offset": 127640,
      "duration": 2160,
      "lang": "en"
    },
    {
      "text": "you going to give going to give",
      "offset": 131880,
      "duration": 2160,
      "lang": "en"
    },
    {
      "text": "you we've known each other for so",
      "offset": 135840,
      "duration": 3320,
      "lang": "en"
    },
    {
      "text": "long your heart's been aching but you're",
      "offset": 140040,
      "duration": 3080,
      "lang": "en"
    },
    {
      "text": "too sh to say inside we both know what's",
      "offset": 143360,
      "duration": 3280,
      "lang": "en"
    },
    {
      "text": "been going",
      "offset": 146920,
      "duration": 640,
      "lang": "en"
    },
    {
      "text": "on we the game and we're going to play",
      "offset": 148480,
      "duration": 3720,
      "lang": "en"
    },
    {
      "text": "it I just want to tell you how I'm",
      "offset": 152720,
      "duration": 3720,
      "lang": "en"
    },
    {
      "text": "feeling got to make you understand Never",
      "offset": 157760,
      "duration": 3640,
      "lang": "en"
    },
    {
      "text": "Going To Give You Up never going to let",
      "offset": 161640,
      "duration": 2520,
      "lang": "en"
    },
    {
      "text": "you down never going to run around and",
      "offset": 164480,
      "duration": 3080,
      "lang": "en"
    },
    {
      "text": "desert you never going to make you cry",
      "offset": 168080,
      "duration": 3120,
      "lang": "en"
    },
    {
      "text": "never going to say goodbye never going",
      "offset": 171960,
      "duration": 2400,
      "lang": "en"
    },
    {
      "text": "to tell you my and Hurt You Never Going",
      "offset": 174440,
      "duration": 4120,
      "lang": "en"
    },
    {
      "text": "To Give You Up",
      "offset": 178640,
      "duration": 920,
      "lang": "en"
    },
    {
      "text": "never going to let you down never going",
      "offset": 180400,
      "duration": 2360,
      "lang": "en"
    },
    {
      "text": "to run around and desert you never going",
      "offset": 182880,
      "duration": 4120,
      "lang": "en"
    },
    {
      "text": "to make you C never going to say goodbye",
      "offset": 187080,
      "duration": 2960,
      "lang": "en"
    },
    {
      "text": "never going to",
      "offset": 191040,
      "duration": 280,
      "lang": "en"
    },
    {
      "text": "tell and Hur You Never Going To Give You",
      "offset": 192400,
      "duration": 3840,
      "lang": "en"
    },
    {
      "text": "Up never going to let you down never",
      "offset": 196640,
      "duration": 2840,
      "lang": "en"
    },
    {
      "text": "going to run around and desert you never",
      "offset": 199680,
      "duration": 4000,
      "lang": "en"
    },
    {
      "text": "going to make you going to",
      "offset": 203960,
      "duration": 2160,
      "lang": "en"
    },
    {
      "text": "[Music]",
      "offset": 207030,
      "duration": 3970,
      "lang": "en"
    },
    {
      "text": "goodbye",
      "offset": 208680,
      "duration": 5320,
      "lang": "en"
    },
    {
      "text": "and",
      "offset": 211000,
      "duration": 3000,
      "lang": "en"
    }
  ]
}

For AI agents and scripts

To fetch a YouTube transcript programmatically, call the Supadata API. One GET request, no SDK needed:

curl 'https://api.supadata.ai/v1/transcript?url=<VIDEO_URL>' \
  -H 'x-api-key: YOUR_KEY'
Response
JSON. content is an array of { text, offset, duration, lang } segments with times in milliseconds, or one string with text=true.
Options
lang (ISO 639-1) and mode (native, generate or auto).
Async jobs
AI-transcribed requests (Instagram, Facebook, file URLs, any video without captions) may return HTTP 202 with a jobId. Poll GET /v1/transcript/{jobId} until status is completed.
API key
Free, about 30 seconds at dash.supadata.ai, 100 requests per month included. There is no anonymous endpoint.

Using Claude, ChatGPT or Cursor? Add Supadata in one click and sign in, no key to paste (other AI agents):

Machine-readable site map: llms.txt. Endpoint reference: docs.supadata.ai/get-transcript.


Supadata vs. Alternatives

Not all YouTube transcript solutions are equal. Here is how Supadata compares to the open-source Python library, YouTube’s official Data API and two hosted transcript APIs:

SupadataPython youtube-transcript-apiYouTube Data API v3ScrapeCreatorsTranscriptAPI.com
TypeREST API, any languagePython library onlyGoogle Cloud APIREST APIREST API
Free tier100 requests/month, no cardFree, but blocked on cloud IPsFree, 10,000 quota units/day100 requests, one-time50 requests/month
Paid pricingFrom $5/month; about $0.99 per 1,000 requests at volumen/an/a (no transcript endpoint)About $0.99 per 1,000About $2.00 per 1,000
Videos without captionsAI transcription, same endpointFailsNot availableFailsFails
TimestampsPer segment, ms offset and durationPer segmentNot via captions APIPer segmentPer segment
Languages100+, auto-detectedAvailable captions onlyLimitedAvailable captions onlyAvailable captions only
Other platformsTikTok, Instagram, Facebook, X, filesYouTube onlyYouTube onlySeveralYouTube only
SDKsPython, JavaScript/TypeScriptPythonGoogle client librariesREST onlyREST only
No-codeZapier, Make, n8n, Active PiecesNoneNoneNoneNone
SetupAPI key, one requestpip install, proxies for productionCloud project, OAuth, quotaAPI keyAPI key

The open-source library is the right choice for a script on your laptop; in production it needs rotating proxies because YouTube blocks data-center IPs. The official Data API cannot return transcripts at all. Among hosted APIs, Supadata is the only one that still returns a transcript when a video has no captions, which affects a large share of live stream recordings, older uploads and non-English videos. For a longer review of six providers, read 6 YouTube Transcript APIs Compared (2026).

Ready to try it? Get your free API key → — 100 requests/month, no credit card.


AI Fallback Transcription

When a YouTube video has no captions — live stream recordings, older uploads, user-generated content — most tools fail silently. Supadata uses AI speech recognition to generate the transcript instead, through the same API endpoint with the same response format. No code changes; generated transcripts are billed at 2 credits per minute of video.

SupadataOther transcript tools
No captions availableAI-transcribed via WhisperRequest fails
API changes neededNone — same endpoint, same responseSeparate fallback logic
Extra cost2 credits per minute of video, available on all plansPremium tier or not available
Language detectionAutomatic for 100+ languagesManual configuration

Built for Developers, by Developers

Nobody likes bloated APIs and unnecessary complexity. That’s why we’ve built our service to be:

Fast

Plug & Play

Scalable

Reliable

Well-documented

Affordable


Use Cases

SaaS Products

Build products powered by video data:

  • AI chatbots and agents
  • Content repurposing tools
  • Brand mention monitoring
  • Market research dashboards

Content Analysis

Extract insights at scale:

  • Research and data mining
  • Content moderation
  • Topic and trend detection
  • Competitive analysis

AI & Machine Learning

Feed your models with quality data:

  • Retrieval-Augmented Generation (RAG)
  • Fine-tuning datasets
  • Sentiment analysis pipelines
  • Video summarization

Pricing

Start free with 100 requests/month. Scale to millions of credits with predictable pricing — no hidden fees, no per-character billing.

View Pricing


Trusted by Builders

“Finally, an API that just works without the BS.” — Sarah Chen, AI Maker

“Saved me weeks of development time.” — Mark T., Solopreneur


Performance & Capabilities

CapabilitySupported
Native captions when available✅
AI (Whisper) fallback when no captions exist✅
Millisecond-precision timestamps✅
100+ languages, auto-detected✅
Batch endpoint for multiple videos✅
Plain-text or segmented JSON output✅

Processing speed is typically under a second for captioned videos; AI fallback adds time proportional to length. For high volume, use the batch endpoint and cache results — transcripts don’t change once a video is published.


Code Examples

Get transcripts in seconds. No OAuth, no YouTube API key, no quota limits.

curl 'https://api.supadata.ai/v1/transcript?url=https://youtu.be/dQw4w9WgXcQ' \ -H 'x-api-key: YOUR_API_KEY'

Response:

{ "lang": "en", "content": [ { "text": "We're no strangers to love", "offset": 18800, "duration": 1000 }, { "text": "You know the rules and so do I", "offset": 21800, "duration": 3360 } ] }

FAQ

What happens when a video has no captions?

Supadata automatically transcribes the audio using AI speech recognition. You use the same API endpoint and get the same response format; generated transcripts are billed at 2 credits per minute of video. No code changes needed on your side.

What languages are supported?

100+ languages with automatic detection. You can request a specific language with the lang parameter, or omit it to get the default language.

How do timestamps work?

Each transcript includes a content array where every entry has text, offset (start time in ms), and duration fields.

What are the rate limits?

The free tier supports up to 100 credits per month. Paid plans range from 300 to 1,000,000 credits/month with higher rate limits. See pricing for details.

Do you support batch requests?

Yes. The batch endpoint lets you fetch transcripts for multiple videos in a single API call.

What SDKs and integrations are available?

Official SDKs for Python and JavaScript/TypeScript, plus no-code integrations with Zapier, Make, n8n, and Active Pieces. You can also add Supadata to your AI agent — Claude, ChatGPT or Cursor — in one click (MCP server).

Is there a free tier?

Yes. The Free plan includes 100 credits/month at no cost, with no credit card required. Every new account starts on the Free plan automatically.

Is there a public YouTube transcript API endpoint without an API key?

No. Every request to https://api.supadata.ai/v1/transcript needs an x-api-key header; there is no anonymous or public endpoint. A key is free: sign up, copy it from the dashboard and you have 100 requests per month without a credit card. For a one-off transcript without any key, use the free YouTube transcript generator.

How do I fetch a transcript by video ID?

Put the ID inside a YouTube URL in the url parameter. Short links, Shorts links and live stream URLs are accepted too; the API extracts the video ID itself.

curl 'https://api.supadata.ai/v1/transcript?url=https://youtu.be/dQw4w9WgXcQ' \ -H 'x-api-key: YOUR_API_KEY' # or ?url=https://www.youtube.com/watch?v=dQw4w9WgXcQ

Can I transcribe audio from YouTube or other online sources via API?

Yes. The same GET /v1/transcript?url=... request accepts YouTube, TikTok, Instagram, Facebook and X (Twitter) URLs as well as direct links to hosted audio or video files (MP4, MP3, M4A, WAV and more). Native captions are used when the platform has them; otherwise the audio is transcribed with AI, so podcasts and uncaptioned videos work too.

What is the most accurate API for transcribing YouTube and video content?

For YouTube, the most accurate source is the video’s own captions, which Supadata returns verbatim when they exist. When a video has none, the transcript comes from AI speech recognition, and accuracy then depends on the audio: expect 95%+ on clear single-speaker speech, lower with background music, crosstalk or strong accents, whichever provider you compare.

What API lets me add video playback with transcripts to my app?

Request the transcript with timestamps (the default) and you get a content array where every segment carries offset and duration in milliseconds. Embed the YouTube player, seek to offset / 1000 when a user clicks a line, and highlight the segment whose range contains the current playback time. See the transcript endpoint reference for the full response.


Other Supadata APIs

The YouTube Transcript API is one endpoint in a larger toolkit. Every API below shares the same key and response format, so adding a platform is a one-line change:


Ready to build?

Get your API key in 30 seconds. No credit card required. Start Building Now →