Search
- YTMusic.search(query: str, filter: str | None = None, scope: str | None = None, limit: int = 20, ignore_spelling: bool = False) list[dict]
Search YouTube music Returns results within the provided category.
- Parameters:
query – Query string, i.e. ‘Oasis Wonderwall’
filter – Filter for item types. Allowed values:
songs
,videos
,albums
,artists
,playlists
,community_playlists
,featured_playlists
,uploads
. Default: Default search, including all types of items.scope – Search scope. Allowed values:
library
,uploads
. Default: Search the public YouTube Music catalogue. Changing scope from the default will reduce the number of settable filters. Setting a filter that is not permitted will throw an exception. For uploads, no filter can be set. For library, community_playlists and featured_playlists filter cannot be set.limit – Number of search results to return Default: 20
ignore_spelling – Whether to ignore YTM spelling suggestions. If True, the exact search term will be searched for, and will not be corrected. This does not have any effect when the filter is set to
uploads
. Default: False, will use YTM’s default behavior of autocorrecting the search.
- Returns:
List of results depending on filter. resultType specifies the type of item (important for default search). albums, artists and playlists additionally contain a browseId, corresponding to albumId, channelId and playlistId (browseId=`VL`+playlistId)
Example list for default search with one result per resultType for brevity. Normally there are 3 results per resultType and an additional
thumbnails
key:[ { "category": "Top result", "resultType": "video", "videoId": "vU05Eksc_iM", "title": "Wonderwall", "artists": [ { "name": "Oasis", "id": "UCmMUZbaYdNH0bEd1PAlAqsA" } ], "views": "1.4M", "videoType": "MUSIC_VIDEO_TYPE_OMV", "duration": "4:38", "duration_seconds": 278 }, { "category": "Songs", "resultType": "song", "videoId": "ZrOKjDZOtkA", "title": "Wonderwall", "artists": [ { "name": "Oasis", "id": "UCmMUZbaYdNH0bEd1PAlAqsA" } ], "album": { "name": "(What's The Story) Morning Glory? (Remastered)", "id": "MPREb_9nqEki4ZDpp" }, "duration": "4:19", "duration_seconds": 259 "isExplicit": false, "feedbackTokens": { "add": null, "remove": null } }, { "category": "Albums", "resultType": "album", "browseId": "MPREb_IInSY5QXXrW", "playlistId": "OLAK5uy_kunInnOpcKECWIBQGB0Qj6ZjquxDvfckg", "title": "(What's The Story) Morning Glory?", "type": "Album", "artist": "Oasis", "year": "1995", "isExplicit": false }, { "category": "Community playlists", "resultType": "playlist", "browseId": "VLPLK1PkWQlWtnNfovRdGWpKffO1Wdi2kvDx", "title": "Wonderwall - Oasis", "author": "Tate Henderson", "itemCount": "174" }, { "category": "Videos", "resultType": "video", "videoId": "bx1Bh8ZvH84", "title": "Wonderwall", "artists": [ { "name": "Oasis", "id": "UCmMUZbaYdNH0bEd1PAlAqsA" } ], "views": "386M", "duration": "4:38", "duration_seconds": 278 }, { "category": "Artists", "resultType": "artist", "browseId": "UCmMUZbaYdNH0bEd1PAlAqsA", "artist": "Oasis", "shuffleId": "RDAOkjHYJjL1a3xspEyVkhHAsg", "radioId": "RDEMkjHYJjL1a3xspEyVkhHAsg" }, { "category": "Profiles", "resultType": "profile", "title": "Taylor Swift Time", "name": "@TaylorSwiftTime", "browseId": "UCSCRK7XlVQ6fBdEl00kX6pQ", "thumbnails": ... } ]
- YTMusic.get_search_suggestions(query: str, detailed_runs=False) list[str] | list[dict]
Get Search Suggestions
- Parameters:
query – Query string, i.e. ‘faded’
detailed_runs – Whether to return detailed runs of each suggestion. If True, it returns the query that the user typed and the remaining suggestion along with the complete text (like many search services usually bold the text typed by the user). Default: False, returns the list of search suggestions in plain text.
- Returns:
- A list of search suggestions. If
detailed_runs
is False, it returns plain text suggestions. If
detailed_runs
is True, it returns a list of dictionaries with detailed information.
Example response when
query
is ‘fade’ anddetailed_runs
is set toFalse
:[ "faded", "faded alan walker lyrics", "faded alan walker", "faded remix", "faded song", "faded lyrics", "faded instrumental" ]
Example response when
detailed_runs
is set toTrue
:[ { "text": "faded", "runs": [ { "text": "fade", "bold": true }, { "text": "d" } ], "fromHistory": true, "feedbackToken": "AEEJK..." }, { "text": "faded alan walker lyrics", "runs": [ { "text": "fade", "bold": true }, { "text": "d alan walker lyrics" } ], "fromHistory": false, "feedbackToken": None }, { "text": "faded alan walker", "runs": [ { "text": "fade", "bold": true }, { "text": "d alan walker" } ], "fromHistory": false, "feedbackToken": None }, ... ]
- A list of search suggestions. If
- YTMusic.remove_search_suggestions(suggestions: list[dict[str, Any]], indices: list[int] | None = None) bool
Remove search suggestion from the user search history.
- Parameters:
suggestions – The dictionary obtained from the
get_search_suggestions()
(with detailed_runs=True)`indices – Optional. The indices of the suggestions to be removed. Default: remove all suggestions.
- Returns:
True if the operation was successful, False otherwise.
Example usage:
# Removing suggestion number 0 suggestions = ytmusic.get_search_suggestions(query="fade", detailed_runs=True) success = ytmusic.remove_search_suggestions(suggestions=suggestions, indices=[0]) if success: print("Suggestion removed successfully") else: print("Failed to remove suggestion")