{"record":{"id":"a833e1a3e337212b","repo":"yt-dlp/yt-dlp","slug":"could-not-find-playlist-data-error-code-error","errorCode":null,"errorMessage":"Could not find playlist data. Error code: \"{error_code}\"","messagePattern":"Could not find playlist data\\. Error code: \"(.+?)\"","errorType":"exception","errorClass":"ExtractorError","httpStatus":null,"severity":"error","filePath":"yt_dlp/extractor/bandlab.py","lineNumber":418,"sourceCode":"                self.report_warning(f'Skipping unknown post type: \"{post_type}\"')\n\n    def _real_extract(self, url):\n        playlist_id, playlist_type = self._match_valid_url(url).group('id', 'type')\n\n        endpoints = {\n            'albums': ['albums'],\n            'collections': ['collections'],\n            'embed': ['collections', 'albums'],\n        }.get(playlist_type)\n        for endpoint in endpoints:\n            playlist_data = self._call_api(\n                endpoint, playlist_id, note=f'Downloading {endpoint[:-1]} data',\n                fatal=False, expected_status=404)\n            if not playlist_data.get('errorCode'):\n                playlist_type = endpoint\n                break\n        if error_code := playlist_data.get('errorCode'):\n            raise ExtractorError(f'Could not find playlist data. Error code: \"{error_code}\"')\n\n        return self.playlist_result(\n            self._entries(playlist_data), playlist_id,\n            **traverse_obj(playlist_data, {\n                'title': ('name', {str}),\n                'description': ('description', {str}),\n                'uploader': ('creator', 'name', {str}),\n                'uploader_id': ('creator', 'username', {str}),\n                'timestamp': ('createdOn', {parse_iso8601}),\n                'release_date': ('releaseDate', {lambda x: x.replace('-', '')}, filter),\n                'thumbnail': ('picture', ('original', 'url'), {url_or_none}, any),\n                'like_count': ('counters', 'likes', {int_or_none}),\n                'comment_count': ('counters', 'comments', {int_or_none}),\n                'view_count': ('counters', 'plays', {int_or_none}),\n            }),\n            **(traverse_obj(playlist_data, {\n                'album': ('name', {str}),\n                'album_type': ('type', {str}),","sourceCodeStart":400,"sourceCodeEnd":436,"githubUrl":"https://github.com/yt-dlp/yt-dlp/blob/81ecd58b1394793e6da9998cc19fdb45657f1685/yt_dlp/extractor/bandlab.py#L400-L436","documentation":"Raised by BandlabPlaylistIE._real_extract (yt_dlp/extractor/bandlab.py:418) when both candidate endpoints ('albums', 'collections', tried with expected_status=404 and fatal=False) returned a payload containing an errorCode. The last errorCode is echoed in the message; it means Bandlab's API refused the id for the requested playlist kind.","triggerScenarios":"The id from the URL is not a public album or collection on Bandlab - deleted, private/unlisted, region-locked, or simply wrong (the regex expects a hex/uuid id); both endpoint probes 404 with an errorCode body.","commonSituations":"Deleted or private albums/collections; embed URLs whose query id was truncated; sharing links to drafts; API changes renaming endpoints or error envelopes.","solutions":["Open the playlist URL in a browser while logged out and confirm it is publicly accessible","Copy the URL again from the address bar - the id must be the full hex/uuid string","Update yt-dlp (yt-dlp -U)","Report the URL and the errorCode value at https://github.com/yt-dlp/yt-dlp/issues with -v output"],"exampleFix":null,"handlingStrategy":"validation","validationCode":"import urllib.request\n\ndef playlist_is_public(url):\n    req = urllib.request.Request(url, headers={'User-Agent': 'Mozilla/5.0'})\n    try:\n        urllib.request.urlopen(req)\n        return True\n    except urllib.error.HTTPError:\n        return False  # 404/private -> expect 'Could not find playlist data'","typeGuard":null,"tryCatchPattern":"from yt_dlp.utils import ExtractorError\n\ntry:\n    info = ydl.extract_info(url, download=False)\nexcept ExtractorError as e:\n    if 'Could not find playlist data' in str(e):\n        mark_not_found(url)  # deleted/private/wrong id; retrying will not help\n    else:\n        raise","preventionTips":["Verify album/collection URLs in a logged-out browser before batch jobs","Copy full ids from the address bar; truncated uuids always fail","Treat errorCode responses as permanent, not transient"],"tags":["bandlab","playlist","not-found","private-content","yt-dlp"],"backgroundTag":"content-not-found","analyzedSha":"81ecd58b1394793e6da9998cc19fdb45657f1685","analyzedAt":"2026-08-22T12:21:25.439Z","schemaVersion":2},"datasetVersion":"2026-08-22T14:17:55.899Z"}