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
YoutubeTranscriptEmptyError
class - Improved reliability: Automatic fallback increases success rate
$ npm i @danielxceron/youtube-transcript
or
$ yarn add @danielxceron/youtube-transcript
import { 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