Frequently asked questions for ytmusicapi. Contributions are welcome, please submit a PR.



How do I add a song, album, artist or playlist to my library?

  • songs: edit_song_library_status . Liking a song using rate_song does not add it to your library, only to your liked songs playlist.
  • albums, playlists: rate_playlist
  • artists: subscribe_artists . This will add the artist to your Subscriptions tab. The Artists tab is determined by the songs/albums you have added to your library.

How can I get the radio playlist for a song, video, playlist or album?

  • songs, videos: RDAMVM + videoId
  • playlists, albums: RDAMPL + playlistId

How can I get the shuffle playlist for a playlist or album?

Use get_watch_playlist_shuffle with the playlistId or audioPlaylistId (albums).

How can I get all my public playlists in a single request?

Call get_user_playlists with your own channelId.

Can I download songs?

You can use youtube-dl for this purpose.

YouTube Music API Internals

Is there a difference between songs and videos?

Yes. Videos are regular videos from YouTube, which can be uploaded by any user. Songs are actual songs uploaded by artists.

You can also add songs to your library, while you can’t add videos.

Is there a rate limit?

There most certainly is, although you shouldn’t run into it during normal usage. See related issues:

What is a browseId?

A browseId is an internal, globally unique identifier used by YouTube Music for browsable content.

Which videoTypes exist and what do they mean?

videoType is prefixed with MUSIC_VIDEO_TYPE_, i.e. MUSIC_VIDEO_TYPE_OMV. Currently the following variants of videoType are known:

  • OMV: Original Music Video - uploaded by original artist with actual video content
  • UGC: User Generated Content - uploaded by regular YouTube user
  • ATV: High quality song uploaded by original artist with cover image
  • OFFICIAL_SOURCE_MUSIC: Official video content, but not for a single track

Why is ytmusicapi returning more results than requested with the limit parameter?

YouTube Music always returns increments of a specific pagination value, usually between 20 and 100 items at a time. This is the case if a ytmusicapi method supports the limit parameter. The default value of the limit parameter indicates the server-side pagination increment. ytmusicapi will keep fetching continuations from the server until it has reached at least the limit parameter, and return all of these results.

Which values can I use for locations?

Pick a value from the list below for your desired location and pass it using the location parameter.

Supported locations
Location Value
Algeria DZ
Argentina AR
Australia AU
Austria AT
Azerbaijan AZ
Bahrain BH
Bangladesh BD
Belarus BY
Belgium BE
Bolivia BO
Bosnia and Herzegovina BA
Brazil BR
Bulgaria BG
Cambodia KH
Canada CA
Chile CL
Colombia CO
Costa Rica CR
Croatia HR
Cyprus CY
Czechia CZ
Denmark DK
Dominican Republic DO
Ecuador EC
Egypt EG
El Salvador SV
Estonia EE
Finland FI
France FR
Georgia GE
Germany DE
Ghana GH
Greece GR
Guatemala GT
Honduras HN
Hong Kong HK
Hungary HU
Iceland IS
India IN
Indonesia ID
Iraq IQ
Ireland IE
Israel IL
Italy IT
Jamaica JM
Japan JP
Jordan JO
Kazakhstan KZ
Kenya KE
Kuwait KW
Laos LA
Latvia LV
Lebanon LB
Libya LY
Liechtenstein LI
Lithuania LT
Luxembourg LU
Malaysia MY
Malta MT
Mexico MX
Montenegro ME
Morocco MA
Nepal NP
Netherlands NL
New Zealand NZ
Nicaragua NI
Nigeria NG
North Macedonia MK
Norway NO
Oman OM
Pakistan PK
Panama PA
Papua New Guinea PG
Paraguay PY
Peru PE
Philippines PH
Poland PL
Portugal PT
Puerto Rico PR
Qatar QA
Romania RO
Russia RU
Saudi Arabia SA
Senegal SN
Serbia RS
Singapore SG
Slovakia SK
Slovenia SI
South Africa ZA
South Korea KR
Spain ES
Sri Lanka LK
Sweden SE
Switzerland CH
Taiwan TW
Tanzania TZ
Thailand TH
Tunisia TN
Turkey TR
Uganda UG
Ukraine UA
United Arab Emirates AE
United Kingdom GB
United States US
Uruguay UY
Venezuela VE
Vietnam VN
Yemen YE
Zimbabwe ZW