Browsing

Methods

# (async) getAlbum(browseId)

Get information and tracks of an album
Parameters:
Name Type Description
browseId string of the album, for example returned by search
Returns:
Object with album and track metadata.
Example
{
  "title": "Revival",
  "type": "Album",
  "thumbnails": [],
  "description": "Revival is the...",
  "artists": [
    {
      "name": "Eminem",
      "id": "UCedvOgsKFzcK3hA5taf3KoQ"
    }
  ],
  "year": "2017",
  "trackCount": 19,
  "duration": "1 hour, 17 minutes",
  "duration_seconds": 4657,
  "audioPlaylistId": "OLAK5uy_nMr9h2VlS-2PULNz3M3XVXQj_P3C2bqaY",
  "tracks": [
    {
      "videoId": "iKLU7z_xdYQ",
      "title": "Walk On Water (feat. Beyoncé)",
      "artists": [
        {
          "name": "Eminem",
          "id": "UCedvOgsKFzcK3hA5taf3KoQ"
        }
      ],
      "album": "Revival",
      "likeStatus": "INDIFFERENT",
      "thumbnails": null,
      "isAvailable": true,
      "isExplicit": true,
      "duration": "5:03",
      "duration_seconds": 303,
      "feedbackTokens": {
        "add": "AB9zfpK...",
        "remove": "AB9zfpK..."
      }
    }
  ],
  "duration_seconds": 4657
}

# (async) getAlbumBrowseId(audioPlaylistIdopt)

Get an album's browseId based on its audioPlaylistId
Parameters:
Name Type Attributes Description
audioPlaylistId string <optional>
id of the audio playlist (starting with `OLAK5uy_`)
Returns:
browseId (starting with `MPREb_`)

# (async) getArtist(channelId)

Get information about an artist and their top releases (songs, albums, singles, videos, and related artists). The top lists contain pointers for getting the full list of releases. For songs/videos, pass the browseId to getPlaylist. For albums/singles, pass browseId and params to getArtistAlbums.
Parameters:
Name Type Description
channelId string channel id of the artist
Returns:
Object with requested information.
Example
{
  "description": "Oasis were ...",
  "views": "1838795605",
  "name": "Oasis",
  "channelId": "UCUDVBtnOQi4c7E8jebpjc9Q",
  "subscribers": "2.3M",
  "subscribed": false,
  "thumbnails": [...],
  "songs": {
    "browseId": "VLPLMpM3Z0118S42R1npOhcjoakLIv1aqnS1",
    "results": [
      {
        "videoId": "ZrOKjDZOtkA",
        "title": "Wonderwall (Remastered)",
        "thumbnails": [...],
        "artist": "Oasis",
        "album": "(What's The Story) Morning Glory? (Remastered)"
      }
    ]
  },
  "albums": {
    "results": [
      {
        "title": "Familiar To Millions",
        "thumbnails": [...],
        "year": "2018",
        "browseId": "MPREb_AYetWMZunqA"
      }
    ],
    "browseId": "UCmMUZbaYdNH0bEd1PAlAqsA",
    "params": "6gPTAUNwc0JDbndLYlFBQV..."
  },
  "singles": {
    "results": [
      {
        "title": "Stand By Me (Mustique Demo)",
        "thumbnails": [...],
        "year": "2016",
        "browseId": "MPREb_7MPKLhibN5G"
      }
    ],
    "browseId": "UCmMUZbaYdNH0bEd1PAlAqsA",
    "params": "6gPTAUNwc0JDbndLYlFBQV..."
  },
  "videos": {
    "results": [
      {
        "title": "Wonderwall",
        "thumbnails": [...],
        "views": "358M",
        "videoId": "bx1Bh8ZvH84",
        "playlistId": "PLMpM3Z0118S5xuNckw1HUcj1D021AnMEB"
      }
    ],
    "browseId": "VLPLMpM3Z0118S5xuNckw1HUcj1D021AnMEB"
  },
  "related": {
    "results": [
      {
        "browseId": "UCt2KxZpY5D__kapeQ8cauQw",
        "subscribers": "450K",
        "title": "The Verve"
      },
      {
        "browseId": "UCwK2Grm574W1u-sBzLikldQ",
        "subscribers": "341K",
        "title": "Liam Gallagher"
      },
      ...
    ]
  }
}

# (async) getArtistAlbums(channelId, params)

Get the full list of an artist's albums or singles
Parameters:
Name Type Description
channelId string channel Id of the artist
params string params obtained by getArtist
Returns:
List of albums in the format of getLibraryAlbums, except artists key is missing.

# (async) getBaseJSUrl() → {string}

Extract the URL for the `base.js` script from YouTube Music.
Returns:
URL to `base.js`
Type
string

# (async) getHome(limitopt)

Get the home page. The home page is structured as titled rows, returning 3 rows of music suggestions at a time. Content varies and may contain artist, album, song or playlist suggestions, sometimes mixed within the same row
Parameters:
Name Type Attributes Default Description
limit number <optional>
3 Number of rows to return
Returns:
List of objects keyed with 'title' text and 'contents' array
Example
[
  {
    "title": "Your morning music",
    "contents": [
      { //album result
        "title": "Sentiment",
        "year": "Said The Sky",
        "browseId": "MPREb_QtqXtd2xZMR",
        "thumbnails": [...]
      },
      { //playlist result
        "title": "r/EDM top submissions 01/28/2022",
        "playlistId": "PLz7-xrYmULdSLRZGk-6GKUtaBZcgQNwel",
        "thumbnails": [...],
        "description": "redditEDM • 161 songs",
        "count": "161",
        "author": [
          {
            "name": "redditEDM",
            "id": "UCaTrZ9tPiIGHrkCe5bxOGwA"
          }
        ]
      }
    ]
  },
  {
    "title": "Your favorites",
    "contents": [
      { //artist result
        "title": "Chill Satellite",
        "browseId": "UCrPLFBWdOroD57bkqPbZJog",
        "subscribers": "374",
        "thumbnails": [...]
      }
      { //album result
        "title": "Dragon",
        "year": "Two Steps From Hell",
        "browseId": "MPREb_M9aDqLRbSeg",
        "thumbnails": [...]
      }
    ]
  },
  {
    "title": "Quick picks",
    "contents": [
      { //song quick pick
        "title": "Gravity",
        "videoId": "EludZd6lfts",
        "artists": [{
            "name": "yetep",
            "id": "UCSW0r7dClqCoCvQeqXiZBlg"
          }],
        "thumbnails": [...],
        "album": {
          "title": "Gravity",
          "browseId": "MPREb_D6bICFcuuRY"
        }
      },
      { //video quick pick
        "title": "Gryffin & Illenium (feat. Daya) - Feel Good (L3V3LS Remix)",
        "videoId": "bR5l0hJDnX8",
        "artists": [
          {
              "name": "L3V3LS",
              "id": "UCCVNihbOdkOWw_-ajIYhAbQ"
          }
        ],
        "thumbnails": [...],
        "views": "10M"
      }
    ]
  }
]

# (async) getLyrics(browseId)

Returns lyrics of a song or video.
Parameters:
Name Type Description
browseId
Returns:
Object with song lyrics
Example
{
  "lyrics": "Today is gonna be the day\\nThat they're gonna throw it back to you\\n",
  "source": "Source: LyricFind"
}

# (async) getSignatureTimestamp(url)

Fetch the `base.js` script from YouTube Music and parse out the `signatureTimestamp` for use with getSong.
Parameters:
Name Type Description
url Optional. Provide the URL of the `base.js` script. If this isn't specified a call will be made to getBaseJSUrl.
Returns:
`signatureTimestamp` string

# (async) getSong(videoIdopt, signatureTimestampopt)

Returns metadata and streaming information about a song or video.
Parameters:
Name Type Attributes Description
videoId string <optional>
Video id
signatureTimestamp number <optional>
Provide the current YouTube signatureTimestamp. If not provided a default value will be used, which might result in invalid streaming URLs
Returns:
Object with song metadata
Example
{
  "playabilityStatus": {
    "status": "OK",
    "playableInEmbed": true,
    "audioOnlyPlayability": {
      "audioOnlyPlayabilityRenderer": {
        "trackingParams": "CAEQx2kiEwiuv9X5i5H1AhWBvlUKHRoZAHk=",
        "audioOnlyAvailability": "FEATURE_AVAILABILITY_ALLOWED"
      }
    },
    "miniplayer": {
      "miniplayerRenderer": {
        "playbackMode": "PLAYBACK_MODE_ALLOW"
      }
    },
    "contextParams": "Q0FBU0FnZ0M="
  },
  "streamingData": {
    "expiresInSeconds": "21540",
    "adaptiveFormats": [
      {
        "itag": 140,
        "url": "https://rr1---sn-h0jelnez.c.youtube.com/videoplayback?expire=1641080272...",
        "mimeType": "audio/mp4; codecs=\"mp4a.40.2\"",
        "bitrate": 131007,
        "initRange": {
          "start": "0",
          "end": "667"
        },
        "indexRange": {
          "start": "668",
          "end": "999"
        },
        "lastModified": "1620321966927796",
        "contentLength": "3967382",
        "quality": "tiny",
        "projectionType": "RECTANGULAR",
        "averageBitrate": 129547,
        "highReplication": true,
        "audioQuality": "AUDIO_QUALITY_MEDIUM",
        "approxDurationMs": "245000",
        "audioSampleRate": "44100",
        "audioChannels": 2,
        "loudnessDb": -1.3000002
      }
    ]
  },
  "videoDetails": {
    "videoId": "AjXQiKP5kMs",
    "title": "Sparks",
    "lengthSeconds": "245",
    "channelId": "UCvCk2zFqkCYzpnSgWfx0qOg",
    "isOwnerViewing": false,
    "isCrawlable": false,
    "thumbnail": {
      "thumbnails": []
    },
    "allowRatings": true,
    "viewCount": "12",
    "author": "Thomas Bergersen",
    "isPrivate": true,
    "isUnpluggedCorpus": false,
    "musicVideoType": "MUSIC_VIDEO_TYPE_PRIVATELY_OWNED_TRACK",
    "isLiveContent": false
  },
  "microformat": {
    "microformatDataRenderer": {
      "urlCanonical": "https://music.youtube.com/watch?v=AjXQiKP5kMs",
      "title": "Sparks - YouTube Music",
      "description": "Uploaded to YouTube via YouTube Music Sparks",
      "thumbnail": {
        "thumbnails": [
          {
            "url": "https://i.ytimg.com/vi/AjXQiKP5kMs/hqdefault.jpg",
            "width": 480,
            "height": 360
          }
        ]
      },
      "siteName": "YouTube Music",
      "appName": "YouTube Music",
      "androidPackage": "com.google.android.apps.youtube.music",
      "iosAppStoreId": "1017492454",
      "iosAppArguments": "https://music.youtube.com/watch?v=AjXQiKP5kMs",
      "ogType": "video.other",
      "urlApplinksIos": "vnd.youtube.music://music.youtube.com/watch?v=AjXQiKP5kMs&feature=applinks",
      "urlApplinksAndroid": "vnd.youtube.music://music.youtube.com/watch?v=AjXQiKP5kMs&feature=applinks",
      "urlTwitterIos": "vnd.youtube.music://music.youtube.com/watch?v=AjXQiKP5kMs&feature=twitter-deep-link",
      "urlTwitterAndroid": "vnd.youtube.music://music.youtube.com/watch?v=AjXQiKP5kMs&feature=twitter-deep-link",
      "twitterCardType": "player",
      "twitterSiteHandle": "@YouTubeMusic",
      "schemaDotOrgType": "http://schema.org/VideoObject",
      "noindex": true,
      "unlisted": true,
      "paid": false,
      "familySafe": true,
      "pageOwnerDetails": {
        "name": "Music Library Uploads",
        "externalChannelId": "UCvCk2zFqkCYzpnSgWfx0qOg",
        "youtubeProfileUrl": "http://www.youtube.com/channel/UCvCk2zFqkCYzpnSgWfx0qOg"
      },
      "videoDetails": {
        "externalVideoId": "AjXQiKP5kMs",
        "durationSeconds": "246",
        "durationIso8601": "PT4M6S"
      },
      "linkAlternates": [
        {
          "hrefUrl": "android-app://com.google.android.youtube/http/youtube.com/watch?v=AjXQiKP5kMs"
        },
        {
          "hrefUrl": "ios-app://544007664/http/youtube.com/watch?v=AjXQiKP5kMs"
        },
        {
          "hrefUrl": "https://www.youtube.com/oembed?format=json&url=https%3A%2F%2Fmusic.youtube.com%2Fwatch%3Fv%3DAjXQiKP5kMs",
          "title": "Sparks",
          "alternateType": "application/json+oembed"
        },
        {
          "hrefUrl": "https://www.youtube.com/oembed?format=xml&url=https%3A%2F%2Fmusic.youtube.com%2Fwatch%3Fv%3DAjXQiKP5kMs",
          "title": "Sparks",
          "alternateType": "text/xml+oembed"
        }
      ],
      "viewCount": "12",
      "publishDate": "1969-12-31",
      "category": "Music",
      "uploadDate": "1969-12-31"
    }
  }
}

# (async) getUser(channelId)

Retrieve a user's page. A user may own videos or playlists.
Parameters:
Name Type Description
channelId string channelId of the user
Returns:
Object with information about a user.
Example
{
  "name": "4Tune – No Copyright Music",
  "videos": {
  "browseId": "UC44hbeRoCZVVMVg5z0FfIww",
  "results": [
    {
      "title": "Epic Music Soundtracks 2019",
      "videoId": "bJonJjgS2mM",
      "playlistId": "RDAMVMbJonJjgS2mM",
      "thumbnails": [
        {
          "url": "https://i.ytimg.com/vi/bJon...",
          "width": 800,
          "height": 450
        }
      ],
      "views": "19K"
      }
    ]
  },
  "playlists": {
  "browseId": "UC44hbeRoCZVVMVg5z0FfIww",
  "results": [
    {
    "title": "♚ Machinimasound | Playlist",
    "playlistId": "PLRm766YvPiO9ZqkBuEzSTt6Bk4eWIr3gB",
    "thumbnails": [
          {
          "url": "https://i.ytimg.com/vi/...",
          "width": 400,
          "height": 225
          }
        ]
      }
    ],
    "params": "6gO3AUNvWU..."
  }
}

# (async) getUserPlaylists(channelIdopt, paramsopt)

Retrieve a list of playlists for a given user. Call this function again with the returned ``params`` to get the full list.
Parameters:
Name Type Attributes Description
channelId string <optional>
channelId of the user.
params string <optional>
params obtained by `getArtist`
Returns:
List of user playlists in the format of `getLibraryPlaylists`