Direct API access
Base URL: https://youtube-transcript-api-production-0221.up.railway.app x-api-key: YOUR_API_KEY
Loading YouTube Transcript API...
Documentation
Request examples, response formats, authentication headers, parameters, and common error responses for transcript-powered applications.
Authentication
Protected endpoints require authentication. Use x-api-key for direct API access, or RapidAPI headers when calling through the RapidAPI marketplace.
Base URL: https://youtube-transcript-api-production-0221.up.railway.app x-api-key: YOUR_API_KEY
Base URL: https://youtube-transcript27.p.rapidapi.com x-rapidapi-key: YOUR_RAPIDAPI_KEY x-rapidapi-host: youtube-transcript27.p.rapidapi.com
Endpoints
Checks whether the API deployment is reachable.
/api/health{
"status": "ok"
}Returns transcript segments for a YouTube video.
/api/transcript?id=VIDEO_ID&lang=en| Name | Required | Description |
|---|---|---|
id | Yes | 11-character YouTube video ID. |
lang | No | Transcript language code. Defaults to en. |
{
"success": true,
"videoId": "dQw4w9WgXcQ",
"language": "en",
"transcript": [
{
"text": "Hello everyone",
"offset": 1200,
"duration": 800
}
]
}Returns public title, description, thumbnail, and channel details.
/api/metadata?id=VIDEO_ID| Name | Required | Description |
|---|---|---|
id | Yes | 11-character YouTube video ID. |
{
"title": "Example Video Title",
"description": "Example description",
"thumbnail": "https://...",
"channel": "Example Channel"
}Checks common transcript language availability.
/api/languages?id=VIDEO_ID| Name | Required | Description |
|---|---|---|
id | Yes | 11-character YouTube video ID. |
{
"success": true,
"videoId": "dQw4w9WgXcQ",
"languages": [
{
"code": "en",
"name": "English",
"available": true
}
]
}Processes multiple YouTube video IDs in one request.
/api/batch{
"success": true,
"count": 2,
"results": []
}Request examples
curl --request GET \
--url 'https://youtube-transcript-api-production-0221.up.railway.app/api/transcript?id=dQw4w9WgXcQ&lang=en' \
--header 'x-api-key: YOUR_API_KEY'curl --request GET \
--url 'https://youtube-transcript-api-production-0221.up.railway.app/api/metadata?id=dQw4w9WgXcQ' \
--header 'x-api-key: YOUR_API_KEY'curl --request GET \
--url 'https://youtube-transcript-api-production-0221.up.railway.app/api/languages?id=dQw4w9WgXcQ' \
--header 'x-api-key: YOUR_API_KEY'curl --request POST \
--url 'https://youtube-transcript-api-production-0221.up.railway.app/api/batch' \
--header 'content-type: application/json' \
--header 'x-api-key: YOUR_API_KEY' \
--data '{"videos":["dQw4w9WgXcQ","JbhBdOfMEPs"],"lang":"en"}'curl --request GET \
--url 'https://youtube-transcript27.p.rapidapi.com/api/transcript?id=dQw4w9WgXcQ&lang=en' \
--header 'x-rapidapi-host: youtube-transcript27.p.rapidapi.com' \
--header 'x-rapidapi-key: YOUR_RAPIDAPI_KEY'curl --request GET \
--url 'https://youtube-transcript27.p.rapidapi.com/api/metadata?id=dQw4w9WgXcQ' \
--header 'x-rapidapi-host: youtube-transcript27.p.rapidapi.com' \
--header 'x-rapidapi-key: YOUR_RAPIDAPI_KEY'curl --request GET \
--url 'https://youtube-transcript27.p.rapidapi.com/api/languages?id=dQw4w9WgXcQ' \
--header 'x-rapidapi-host: youtube-transcript27.p.rapidapi.com' \
--header 'x-rapidapi-key: YOUR_RAPIDAPI_KEY'curl --request POST \
--url 'https://youtube-transcript27.p.rapidapi.com/api/batch' \
--header 'content-type: application/json' \
--header 'x-rapidapi-host: youtube-transcript27.p.rapidapi.com' \
--header 'x-rapidapi-key: YOUR_RAPIDAPI_KEY' \
--data '{"videos":["dQw4w9WgXcQ","JbhBdOfMEPs"],"lang":"en"}'Errors
{
"success": false,
"error": {
"code": "missing_api_key",
"message": "Missing API key"
},
"requestId": "..."
}{
"success": false,
"error": {
"code": "invalid_api_key",
"message": "Invalid API key"
},
"requestId": "..."
}{
"success": false,
"error": {
"code": "invalid_request",
"message": "Invalid request parameters"
},
"requestId": "..."
}{
"success": false,
"error": {
"code": "transcript_not_found",
"message": "Transcript is not available for this video"
},
"requestId": "..."
}{
"success": false,
"error": {
"code": "rate_limit_exceeded",
"message": "Rate limit exceeded"
},
"requestId": "..."
}{
"success": false,
"error": {
"code": "redis_unavailable",
"message": "Redis is not configured correctly"
},
"requestId": "..."
}