This is a fork of the original youtube-transcript package that adds a fallback system for improved reliability. The original package used only HTML scraping, which sometimes fails or returns empty results. This version automatically falls back to YouTube's InnerTube API when needed.
- Dual extraction methods: HTML scraping + InnerTube API fallback
- YouTube Shorts support: Enhanced URL regex for
/shorts/URLs - Better error handling: New
YoutubeTranscriptEmptyErrorclass - Improved reliability: Automatic fallback increases success rate
$ npm i @danielxceron/youtube-transcriptor
$ yarn add @danielxceron/youtube-transcriptimport { YoutubeTranscript } from '@danielxceron/youtube-transcript';
YoutubeTranscript.fetchTranscript('videoId or URL').then(console.log);- Standard videos:
https://www.youtube.com/watch?v=VIDEO_ID - Short URLs:
https://youtu.be/VIDEO_ID - YouTube Shorts:
https://www.youtube.com/shorts/VIDEO_ID - Embedded videos:
https://www.youtube.com/embed/VIDEO_ID - Direct video IDs:
VIDEO_ID
fetchTranscript(videoId: string [,options: TranscriptConfig]): Promise<TranscriptResponse[]>
| Method | Client-Side | Local Server | Production Server |
|---|---|---|---|
| HTML Scraping | ✅ | ✅ | ✅ |
| InnerTube API | ✅ | ✅ |
The package automatically uses the best available method for your environment.
YoutubeTranscriptTooManyRequestError: Rate limiting detectedYoutubeTranscriptVideoUnavailableError: Video not accessibleYoutubeTranscriptDisabledError: Transcripts disabled for videoYoutubeTranscriptNotAvailableError: No transcripts availableYoutubeTranscriptNotAvailableLanguageError: Requested language not availableYoutubeTranscriptEmptyError: Empty response (triggers fallback method)
MIT Licensed