Developer API

YouTube Transcript API

Extract video transcripts, subtitles, and captions programmatically. Build powerful content tools with our simple REST API.

API Features

Fast & Reliable

Lightning-fast response times with 99.9% uptime. Built on robust infrastructure.

50+ Languages

Support for auto-generated and manual transcripts in over 50 languages.

Secure

API keys are hashed and stored securely. All requests are encrypted via HTTPS.

Real-time

Get transcripts instantly as soon as they're available on YouTube.

API Key Management

Sign in to Get API Access

Create an account and subscribe to generate your API key. Read the documentation below to learn more about our API.

Quick Start

Get up and running with the API in under 2 minutes

1

Get your API key

Subscribe and generate an API key from the section above

2

Add the header

Include X-API-Key header in requests

3

Make requests

Start fetching transcripts from any YouTube video

Try it now:

curl -X GET "/api/transcript?video_url=dQw4w9WgXcQ&send_metadata=true"

Authentication

All API requests require authentication via API key

Include your API key in the X-API-Key header with every request. Your API key grants unlimited access to all transcript endpoints.

Request Header

X-API-Key: yt_your_api_key_here

Keep your API key secure

Never expose your API key in client-side code or public repositories. Use environment variables and server-side requests.

Base URL

https://youtubetranscripts.org

Code Examples

Examples in popular programming languages

curl -X GET "/api/transcript?video_url=dQw4w9WgXcQ&send_metadata=true"

API Endpoints

GET
/api/transcript

Get the transcript for a YouTube video. Returns transcript segments with timestamps and optional video metadata.

Parameters

NameTypeRequiredDescription
video_urlstring
Required
YouTube video URL or video ID (e.g., dQw4w9WgXcQ)
formatstring
Optional
Output format: 'json' (default) or 'text'
include_timestampboolean
Optional
Include timing data (default: true)
send_metadataboolean
Optional
Include video metadata (default: false)

Response

{
  "video_id": "dQw4w9WgXcQ",
  "language": "en",
  "transcript": [
    {
      "text": "We're no strangers to love",
      "start": 18.0,
      "duration": 3.5
    },
    ...
  ],
  "metadata": {
    "title": "Rick Astley - Never Gonna Give You Up",
    "author_name": "RickAstleyVEVO",
    "author_url": "https://www.youtube.com/@RickAstley",
    "thumbnail_url": "https://i.ytimg.com/vi/dQw4w9WgXcQ/hqdefault.jpg"
  }
}

GET
/api/video-info

Get video metadata including title, channel name, and thumbnail URL.

Parameters

NameTypeRequiredDescription
videoIdstring
Required
YouTube video ID

Response

{
  "title": "Rick Astley - Never Gonna Give You Up",
  "channelName": "RickAstleyVEVO",
  "channelUrl": "https://www.youtube.com/@RickAstley",
  "thumbnailUrl": "https://i.ytimg.com/vi/dQw4w9WgXcQ/hqdefault.jpg"
}

GET
/api/search

Search for YouTube videos or channels. Requires authentication.

Parameters

NameTypeRequiredDescription
qstring
Required
Search query (1-200 characters)
typestring
Optional
'video' (default) or 'channel'
limitinteger
Optional
Results to return, 1-50 (default: 20)

Response

{
  "results": [
    {
      "type": "video",
      "videoId": "dQw4w9WgXcQ",
      "title": "Rick Astley - Never Gonna Give You Up",
      "channelTitle": "Rick Astley",
      "lengthText": "3:33",
      "viewCountText": "1.5B views",
      "hasCaptions": true,
      "thumbnails": [...]
    }
  ],
  "result_count": 20
}

GET
/api/channel/resolve

Resolve a YouTube @handle or channel URL to a channel ID.

Parameters

NameTypeRequiredDescription
inputstring
Required
@handle, channel URL, or UC... ID

Response

{
  "channel_id": "UCAuUUnT6oDeKwE6v1NGQxug",
  "resolved_from": "@TED"
}

GET
/api/channel/search

Search for videos within a specific YouTube channel.

Parameters

NameTypeRequiredDescription
channelstring
Required
@handle, URL, or UC... ID
qstring
Required
Search query (1-200 characters)
limitinteger
Optional
Max results, 1-50 (default: 30)

Response

{
  "results": [
    {
      "type": "video",
      "videoId": "abc123xyz00",
      "title": "Video Title",
      "channelTitle": "TED",
      "lengthText": "12:34",
      "viewCountText": "2.1M views",
      "hasCaptions": true,
      "thumbnails": [...]
    }
  ],
  "result_count": 12
}

GET
/api/channel/videos

Get paginated uploads from a YouTube channel. Use the continuation token for subsequent pages.

Parameters

NameTypeRequiredDescription
channelstring
Required
@handle, URL, or UC... ID (first page)
continuationstring
Optional
Continuation token (next pages)

Response

{
  "results": [
    {
      "videoId": "abc123xyz00",
      "title": "Latest Video",
      "channelTitle": "TED",
      "lengthText": "15:22",
      "viewCountText": "3.2M views",
      "thumbnails": [...]
    }
  ],
  "continuation_token": "4qmFsgKlARIYVVV...",
  "has_more": true
}

GET
/api/channel/latest

Get the latest 15 videos from a channel via RSS feed.

Parameters

NameTypeRequiredDescription
channelstring
Required
@handle, URL, or UC... ID

Response

{
  "channel": {
    "channelId": "UCAuUUnT6oDeKwE6v1NGQxug",
    "title": "TED",
    "url": "https://www.youtube.com/channel/UCAuUUnT6oDeKwE6v1NGQxug"
  },
  "results": [
    {
      "videoId": "abc123xyz00",
      "title": "Latest Video Title",
      "published": "2026-01-30T16:00:00Z",
      "viewCount": "2287630",
      "thumbnail": { "url": "...", "width": "480", "height": "360" }
    }
  ],
  "result_count": 15
}

GET
/api/playlist-videos

Get paginated videos from a YouTube playlist. Supports continuation for large playlists.

Parameters

NameTypeRequiredDescription
playlistIdstring
Required
Playlist URL or ID (PL..., UU..., etc.)
continuationstring
Optional
Continuation token for next page

Response

{
  "success": true,
  "results": [
    {
      "videoId": "abc123xyz00",
      "title": "Playlist Video",
      "channelTitle": "TED",
      "lengthText": "10:05",
      "thumbnails": [...]
    }
  ],
  "continuation_token": "4qmFsgKlARIYVVV...",
  "has_more": true
}

Error Codes

Common error responses you may encounter

Status CodeDescription
401
Unauthorized - Missing or invalid API key
404
Not Found - Video not found or no transcript available
429
Too Many Requests - Rate limit exceeded (free tier only)
500
Internal Server Error - Something went wrong on our end

Rate Limits

Unlimited Access for Subscribers

As a subscriber, you have unlimited API requests with no rate limits.

Frequently Asked Questions

What is the YouTube Transcript API?

The YouTube Transcript API is a RESTful API that allows developers to programmatically extract transcripts, subtitles, and captions from any YouTube video. It returns JSON responses with text, timestamps, and duration for each transcript segment.

How do I get an API key?

API keys are available to paid subscribers. Sign up for a subscription, then generate your API key from the API page or your dashboard settings.

What languages are supported?

The API supports 50+ languages including English, Spanish, French, German, Japanese, Korean, Chinese, and many more. You can also translate transcripts between supported languages.

Are there rate limits?

Paid subscribers have unlimited API access with no rate limits. This allows you to build production applications without worrying about hitting request caps.

Ready to Get Started?

Join thousands of developers using our API to build content tools, SEO applications, accessibility features, and more.

    YouTube Transcript API - Extract Transcripts Programmatically | Developer API | YouTube Transcript Generator