❯ poetry run python main.py
Enter SoundCloud playlist URL: https://soundcloud.com/marc-gutenberger/sets/shake-that-ass
Enter output directory (default: output): ~/Desktop/Ripped-sc-music/shake-that-ass
Do you want to zip the downloaded files? (y/n): n
Enter proxy URL (optional, press Enter to skip):
2026-05-11 18:16:13.872 | INFO | __main__:main:238 - Downloading now please wait...
ERROR: [soundcloud] Unable to download JSON metadata: HTTP Error 404: Not Found (caused by <HTTPError 404: Not Found>)
Traceback (most recent call last):
File "/home/gutenfries/.cache/pypoetry/virtualenvs/soundclouddownloader-iP_oWEEZ-py3.13/lib/python3.13/site-packages/yt_dlp/extractor/common.py", line 912, in _request_webpage
return self._downloader.urlopen(self._create_request(url_or_request, data, headers, query, extensions))
~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/gutenfries/.cache/pypoetry/virtualenvs/soundclouddownloader-iP_oWEEZ-py3.13/lib/python3.13/site-packages/yt_dlp/YoutubeDL.py", line 4260, in urlopen
return self._request_director.send(req)
~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^
File "/home/gutenfries/.cache/pypoetry/virtualenvs/soundclouddownloader-iP_oWEEZ-py3.13/lib/python3.13/site-packages/yt_dlp/networking/common.py", line 117, in send
response = handler.send(request)
File "/home/gutenfries/.cache/pypoetry/virtualenvs/soundclouddownloader-iP_oWEEZ-py3.13/lib/python3.13/site-packages/yt_dlp/networking/_helper.py", line 194, in wrapper
return func(self, *args, **kwargs)
File "/home/gutenfries/.cache/pypoetry/virtualenvs/soundclouddownloader-iP_oWEEZ-py3.13/lib/python3.13/site-packages/yt_dlp/networking/common.py", line 359, in send
return self._send(request)
~~~~~~~~~~^^^^^^^^^
File "/home/gutenfries/.cache/pypoetry/virtualenvs/soundclouddownloader-iP_oWEEZ-py3.13/lib/python3.13/site-packages/yt_dlp/networking/_requests.py", line 361, in _send
raise HTTPError(res, redirect_loop=max_redirects_exceeded)
yt_dlp.networking.exceptions.HTTPError: HTTP Error 404: Not Found
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/gutenfries/.cache/pypoetry/virtualenvs/soundclouddownloader-iP_oWEEZ-py3.13/lib/python3.13/site-packages/yt_dlp/YoutubeDL.py", line 1698, in wrapper
return func(self, *args, **kwargs)
File "/home/gutenfries/.cache/pypoetry/virtualenvs/soundclouddownloader-iP_oWEEZ-py3.13/lib/python3.13/site-packages/yt_dlp/YoutubeDL.py", line 1833, in __extract_info
ie_result = ie.extract(url)
File "/home/gutenfries/.cache/pypoetry/virtualenvs/soundclouddownloader-iP_oWEEZ-py3.13/lib/python3.13/site-packages/yt_dlp/extractor/common.py", line 765, in extract
ie_result = self._real_extract(url)
File "/home/gutenfries/.cache/pypoetry/virtualenvs/soundclouddownloader-iP_oWEEZ-py3.13/lib/python3.13/site-packages/yt_dlp/extractor/soundcloud.py", line 728, in _real_extract
return self._extract_info_dict(info, full_title, token)
~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/gutenfries/.cache/pypoetry/virtualenvs/soundclouddownloader-iP_oWEEZ-py3.13/lib/python3.13/site-packages/yt_dlp/extractor/soundcloud.py", line 324, in _extract_info_dict
stream_url = traverse_obj(self._call_api(
~~~~~~~~~~~~~~^
format_url, track_id, f'Downloading {short_identifier} format info JSON',
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
query=query, headers=self._HEADERS), ('url', {url_or_none}))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/gutenfries/.cache/pypoetry/virtualenvs/soundclouddownloader-iP_oWEEZ-py3.13/lib/python3.13/site-packages/yt_dlp/extractor/soundcloud.py", line 144, in _call_api
return self._download_json(*args, **kwargs)
~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
File "/home/gutenfries/.cache/pypoetry/virtualenvs/soundclouddownloader-iP_oWEEZ-py3.13/lib/python3.13/site-packages/yt_dlp/extractor/common.py", line 1153, in download_content
res = getattr(self, download_handle.__name__)(url_or_request, video_id, **kwargs)
File "/home/gutenfries/.cache/pypoetry/virtualenvs/soundclouddownloader-iP_oWEEZ-py3.13/lib/python3.13/site-packages/yt_dlp/extractor/common.py", line 1111, in download_handle
res = self._download_webpage_handle(
url_or_request, video_id, note=note, errnote=errnote, fatal=fatal, encoding=encoding,
data=data, headers=headers, query=query, expected_status=expected_status,
impersonate=impersonate, require_impersonation=require_impersonation)
File "/home/gutenfries/.cache/pypoetry/virtualenvs/soundclouddownloader-iP_oWEEZ-py3.13/lib/python3.13/site-packages/yt_dlp/extractor/common.py", line 976, in _download_webpage_handle
urlh = self._request_webpage(url_or_request, video_id, note, errnote, fatal, data=data,
headers=headers, query=query, expected_status=expected_status,
impersonate=impersonate, require_impersonation=require_impersonation)
File "/home/gutenfries/.cache/pypoetry/virtualenvs/soundclouddownloader-iP_oWEEZ-py3.13/lib/python3.13/site-packages/yt_dlp/extractor/common.py", line 925, in _request_webpage
raise ExtractorError(errmsg, cause=err)
yt_dlp.utils.ExtractorError: [soundcloud] Unable to download JSON metadata: HTTP Error 404: Not Found (caused by <HTTPError 404: Not Found>)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/gutenfries/soundclouddownloader/soundclouddownloader/main.py", line 250, in <module>
main()
~~~~^^
File "/home/gutenfries/soundclouddownloader/soundclouddownloader/main.py", line 239, in main
download = downloader.download_playlist(
playlist_url, output_dir, max_workers=3, should_zip=should_zip
)
File "/home/gutenfries/soundclouddownloader/soundclouddownloader/main.py", line 159, in download_playlist
playlist = self.get_playlist_info(playlist_url)
File "/home/gutenfries/soundclouddownloader/soundclouddownloader/main.py", line 117, in get_playlist_info
playlist_info = ydl.extract_info(playlist_url, download=False)
File "/home/gutenfries/.cache/pypoetry/virtualenvs/soundclouddownloader-iP_oWEEZ-py3.13/lib/python3.13/site-packages/yt_dlp/YoutubeDL.py", line 1687, in extract_info
return self.__extract_info(url, self.get_info_extractor(key), download, extra_info, process)
~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/gutenfries/.cache/pypoetry/virtualenvs/soundclouddownloader-iP_oWEEZ-py3.13/lib/python3.13/site-packages/yt_dlp/YoutubeDL.py", line 1698, in wrapper
return func(self, *args, **kwargs)
File "/home/gutenfries/.cache/pypoetry/virtualenvs/soundclouddownloader-iP_oWEEZ-py3.13/lib/python3.13/site-packages/yt_dlp/YoutubeDL.py", line 1854, in __extract_info
return self.process_ie_result(ie_result, download, extra_info)
~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/gutenfries/.cache/pypoetry/virtualenvs/soundclouddownloader-iP_oWEEZ-py3.13/lib/python3.13/site-packages/yt_dlp/YoutubeDL.py", line 1983, in process_ie_result
return self.__process_playlist(ie_result, download)
~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
File "/home/gutenfries/.cache/pypoetry/virtualenvs/soundclouddownloader-iP_oWEEZ-py3.13/lib/python3.13/site-packages/yt_dlp/YoutubeDL.py", line 2131, in __process_playlist
entry_result = self.__process_iterable_entry(entry, download, collections.ChainMap({
'playlist_index': playlist_index,
'playlist_autonumber': i + 1,
}, extra))
File "/home/gutenfries/.cache/pypoetry/virtualenvs/soundclouddownloader-iP_oWEEZ-py3.13/lib/python3.13/site-packages/yt_dlp/YoutubeDL.py", line 1698, in wrapper
return func(self, *args, **kwargs)
File "/home/gutenfries/.cache/pypoetry/virtualenvs/soundclouddownloader-iP_oWEEZ-py3.13/lib/python3.13/site-packages/yt_dlp/YoutubeDL.py", line 2163, in __process_iterable_entry
return self.process_ie_result(
~~~~~~~~~~~~~~~~~~~~~~^
entry, download=download, extra_info=extra_info)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/gutenfries/.cache/pypoetry/virtualenvs/soundclouddownloader-iP_oWEEZ-py3.13/lib/python3.13/site-packages/yt_dlp/YoutubeDL.py", line 1939, in process_ie_result
info = self.extract_info(
ie_result['url'], ie_key=ie_result.get('ie_key'),
extra_info=extra_info, download=False, process=False)
File "/home/gutenfries/.cache/pypoetry/virtualenvs/soundclouddownloader-iP_oWEEZ-py3.13/lib/python3.13/site-packages/yt_dlp/YoutubeDL.py", line 1687, in extract_info
return self.__extract_info(url, self.get_info_extractor(key), download, extra_info, process)
~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/gutenfries/.cache/pypoetry/virtualenvs/soundclouddownloader-iP_oWEEZ-py3.13/lib/python3.13/site-packages/yt_dlp/YoutubeDL.py", line 1716, in wrapper
self.report_error(str(e), e.format_traceback())
~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/gutenfries/.cache/pypoetry/virtualenvs/soundclouddownloader-iP_oWEEZ-py3.13/lib/python3.13/site-packages/yt_dlp/YoutubeDL.py", line 1154, in report_error
self.trouble(f'{self._format_err("ERROR:", self.Styles.ERROR)} {message}', *args, **kwargs)
~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/gutenfries/.cache/pypoetry/virtualenvs/soundclouddownloader-iP_oWEEZ-py3.13/lib/python3.13/site-packages/yt_dlp/YoutubeDL.py", line 1093, in trouble
raise DownloadError(message, exc_info)
yt_dlp.utils.DownloadError: ERROR: [soundcloud] Unable to download JSON metadata: HTTP Error 404: Not Found (caused by <HTTPError 404: Not Found>)
Description of bug
Attempting to download ALMOST all content results in the same 404 error.
To Reproduce
attempt to download a couple songs or playlists.
Expected behavior
A clear and concise description of what you expected to happen.
Screenshots
Desktop (please complete the following information):
Additional context
https://github.com/scdl-org/scdl is suffering from the same issue. This is probably a change in the API. strange that SOME songs still work ok though... (example)