ytdl-org/youtube-dl · error · ExtractorError

Video %s does not exist

Error message

Video %s does not exist

What it means

VodLocker extraction error: the downloaded webpage contains one of several deletion markers ('>THIS FILE WAS DELETED<', '>File Not Found<', the 'could not be found' sentence, or '>The file was removed'), so the file no longer exists on the host. Raised as 'Video %s does not exist' % video_id with expected=True.

Source

Thrown at youtube_dl/extractor/vodlocker.py:36

        'md5': 'ce0c2d18fa0735f1bd91b69b0e54aacf',
        'info_dict': {
            'id': 'e8wvyzz4sl42',
            'ext': 'mp4',
            'title': 'Germany vs Brazil',
            'thumbnail': r're:http://.*\.jpg',
        },
    }]

    def _real_extract(self, url):
        video_id = self._match_id(url)
        webpage = self._download_webpage(url, video_id)

        if any(p in webpage for p in (
                '>THIS FILE WAS DELETED<',
                '>File Not Found<',
                'The file you were looking for could not be found, sorry for any inconvenience.<',
                '>The file was removed')):
            raise ExtractorError('Video %s does not exist' % video_id, expected=True)

        fields = self._hidden_inputs(webpage)

        if fields['op'] == 'download1':
            self._sleep(3, video_id)  # they do detect when requests happen too fast!
            post = urlencode_postdata(fields)
            req = sanitized_Request(url, post)
            req.add_header('Content-type', 'application/x-www-form-urlencoded')
            webpage = self._download_webpage(
                req, video_id, 'Downloading video page')

        def extract_file_url(html, default=NO_DEFAULT):
            return self._search_regex(
                r'file:\s*"(http[^\"]+)",', html, 'file url', default=default)

        video_url = extract_file_url(webpage, default=None)

        if not video_url:

View on GitHub (pinned to 956b8c5855)

Solutions

  1. Accept the file is gone — no client-side fix can restore it
  2. Search for a re-upload or alternative host for the same content
  3. Purge dead URLs from batch lists to avoid wasted requests
Defensive patterns

Strategy: try-catch

Try / catch

from youtube_dl.utils import ExtractorError
try:
    ydl.extract_info(url)
except ExtractorError as e:
    if 'does not exist' in str(e):
        mark_dead(url)  # permanent

Prevention

When it happens

Trigger: Downloading any VodLocker URL whose page shows a file-deleted/not-found notice matched by the any(...) marker check.

Common situations: Dead links from old forums/blogs; files removed for abuse or expiry; typo'd video IDs.

Related errors


AI-assisted analysis of ytdl-org/youtube-dl@956b8c5855 (2026-08-14). Data as JSON: /api/errors/f39893a8e4f1fee1. Report an issue: GitHub.