Get YouTube Transcript
Extract transcript from YouTube videos.
This endpoint is specifically for YouTube videos. For non-YouTube videos, use /transcript instead.
Options:
transcript_text=true: Returns the transcript as a single plain-text string instead of an array of segments.metadata_only=true: Returns only video metadata (no transcript). Usage is counted as a regular transcript request.fallback_to_metadata=true: If transcript is unavailable, returns video metadata with an empty transcript instead of a 404 error (ignored whenmetadata_only=true).
Overview
This endpoint is specifically designed for YouTube videos. Due to YouTube’s bot detection mechanisms, we use residential proxy infrastructure to ensure reliable transcript extraction.Why a Separate Endpoint?
YouTube has implemented strict bot detection that blocks standard server requests. To maintain reliable access to YouTube transcripts, VidNavigator uses residential proxy infrastructure and bills those calls asresidential_request units. This dedicated endpoint allows us to:
- Provide reliable, consistent access to YouTube transcripts
- Use optimized infrastructure specifically for YouTube
- Offer transparent pricing for Residential Proxy Request usage
Use Cases
Content Analysis
Search & Discovery
Accessibility
Content Creation
Request Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
video_url | string | Yes | URL of the YouTube video |
language | string | No | ISO2 language code (e.g., “en”, “es”, “fr”) |
metadata_only | boolean | No | When true, returns only video metadata without fetching the transcript. Takes precedence over fallback_to_metadata. |
fallback_to_metadata | boolean | No | When true, returns video metadata with an empty transcript if transcript is unavailable (returns 200 instead of 404). Ignored if metadata_only is true. |
transcript_text | boolean | No | When true, returns the transcript as a single plain-text string instead of an array of segments. |
metadata_only: true bypasses the residential proxy and counts as a Standard Request, making it more cost-effective when you only need video information.Example Usage
Getting Metadata Only (Cost-Effective)
If you only need video metadata without the transcript, usemetadata_only: true. This bypasses the residential proxy and counts as standard_request usage:
Using the SDK
Supported URL Formats
This endpoint accepts various YouTube URL formats:https://youtube.com/watch?v=VIDEO_IDhttps://www.youtube.com/watch?v=VIDEO_IDhttps://youtu.be/VIDEO_IDhttps://www.youtube.com/shorts/VIDEO_IDhttps://m.youtube.com/watch?v=VIDEO_ID
Troubleshooting
- Invalid URL: Ensure the video URL is a valid YouTube URL in one of the supported formats.
- Transcript Not Found: Please ensure that the video has subtitles available (either manually added or auto-generated). If no subtitles are present, the transcript cannot be extracted. Consider using
fallback_to_metadata: trueto get metadata even when transcript is unavailable. - Language Not Supported: Sometimes the selected subtitles language is not available. Check the
available_languagesfield in the response to see which languages are available. - Rate Limit Exceeded: YouTube transcript requests have rate limits. Check your usage and consider upgrading your plan if needed.
Success Response (200 OK)
Returns avideo_info object and a transcript object.
Response with transcript_text: true
When you set transcript_text: true, the transcript is returned as a single string:
Response with metadata_only: true
When you set metadata_only: true, only the video metadata is returned:
Authorizations
API key authentication. Include your VidNavigator API key in the X-API-Key header.
Body
URL of the YouTube video
"https://youtube.com/watch?v=dQw4w9WgXcQ"
ISO2 language code (optional)
2"en"
When true, returns only video metadata without transcript. Usage is counted as a regular transcript request.
When true, returns video metadata with an empty transcript if transcript is unavailable (200). Ignored if metadata_only is true.
When true, returns the transcript as a single plain-text string instead of an array of segments.

