JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 1436
  • Score
    100M100P100Q115152F
  • License MIT

A YouTube video transcript extractor based on a reverse-engineered Free Youtube Transcript Generator by Tactiq.io

Package Exports

  • youtube-transcript-api

Readme

youtube-transcript-api

A YouTube video transcript extractor based on a reverse-engineered Free Youtube Transcript Generator by Tactiq.io

*previously based on youtubetranscript.com

Limitations

  • Subtitles are unretrievable for private videos.
  • No multilanguage transcript support; extractor uses the default language of a given video.

Installation

$ npm install youtube-transcript-api

Documentation

Import the library into your project like so. Both CJS and ESM are supported.

import TranscriptAPI from 'youtube-transcript-api';
// => TranscriptAPI

class TranscriptAPI

.getTranscript(id, langCode, [config])

Retrieves the transcript of a particular video.

  • id: The YouTube video ID
  • langCode (optional): ISO 639-1 language code. Defaults to "en"
  • config (optional): Request configurations for the Axios HTTP client. See available options here

errors

  • "invalid video ID": Received status 406 from API. A video with the specified video ID does not exist.
  • "video unavailable or captions disabled": Received status 503 from API. Video is unavailable or has no retrievable captions.

returns Promise<Object>

>>> TranscriptAPI.getTranscript('dQw4w9WgXcQ').then(console.log);
{
  "title": "Rick Astley - Never Gonna Give You Up (Official Music Video)",
  "captions": [
    {
      "text": "[Music]",
      "start": "0.0",
      "duration": "14.65"
    },
    {
      "text": "we're no strangers to",
      "start": "18.8",
      "duration": "7.239"
    },
    {
      "text": "love you know the rules and so do",
      "start": "21.8",
      "duration": "7.84"
    },
    {
      "text": "I I full commitments while I'm thinking",
      "start": "26.039",
      "duration": "5.201"
    },
    {
      "text": "of",
      "start": "29.64",
      "duration": "5.88"
    },
    {
      "text": "you wouldn't get this from any other guy",
      "start": "31.24",
      "duration": "8.2"
    },
    ...
  ]
}

.validateID(id, [config])

⚠️ Deprecated: .validateID() is deprecated and may be removed in a future release, should one be made available. Please use .getTranscript() errors instead.

*Utilizes the discontinued video.google.com/timedtext endpoint.

Checks if a video with the specified ID exists on YouTube.

  • id: The YouTube video ID
  • config (optional): Request configurations for the Axios HTTP client. See available options here

returns Promise<boolean>

>>> TranscriptAPI.validateID('dQw4w9WgXcQ').then(console.log);

true
>>> TranscriptAPI.validateID('somenonexistentvideoid').then(console.log);

false