Skip to content

404 Error (api change?) #55

@gutenfries

Description

@gutenfries

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

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>)

Desktop (please complete the following information):

  • OS: debian 13
  • Browser: N/A
  • Version: latest

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)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions