ytdl-org/youtube-dl · error · ExtractorError

Unable to find provider video id

Error message

Unable to find provider video id

What it means

VoxMedia provider-resolution error: after iterating the page's video entries (checking provider_video_type/provider_video_id for brightcove/youtube/etc.), no entry yielded a usable provider id, so the extractor gives up with 'Unable to find provider video id' (not expected — potentially a parsing gap).

Source

Thrown at youtube_dl/extractor/voxmedia.py:72

            info['formats'] = formats
            info['duration'] = int_or_none(asset.get('duration'))
            return info

        for provider_video_type in ('ooyala', 'youtube', 'brightcove'):
            provider_video_id = video_data.get('%s_id' % provider_video_type)
            if not provider_video_id:
                continue
            if provider_video_type == 'brightcove':
                info['formats'] = self._extract_once_formats(provider_video_id)
                self._sort_formats(info['formats'])
            else:
                info.update({
                    '_type': 'url_transparent',
                    'url': provider_video_id if provider_video_type == 'youtube' else '%s:%s' % (provider_video_type, provider_video_id),
                    'ie_key': provider_video_type.capitalize(),
                })
            return info
        raise ExtractorError('Unable to find provider video id')


class VoxMediaIE(InfoExtractor):
    _VALID_URL = r'https?://(?:www\.)?(?:(?:theverge|vox|sbnation|eater|polygon|curbed|racked|funnyordie)\.com|recode\.net)/(?:[^/]+/)*(?P<id>[^/?]+)'
    _TESTS = [{
        # Volume embed, Youtube
        'url': 'http://www.theverge.com/2014/6/27/5849272/material-world-how-google-discovered-what-software-is-made-of',
        'info_dict': {
            'id': 'j4mLW6x17VM',
            'ext': 'mp4',
            'title': 'Material world: how Google discovered what software is made of',
            'description': 'md5:dfc17e7715e3b542d66e33a109861382',
            'upload_date': '20190710',
            'uploader_id': 'TheVerge',
            'uploader': 'The Verge',
        },
        'add_ie': ['Youtube'],
    }, {

View on GitHub (pinned to 956b8c5855)

Solutions

  1. Update to yt-dlp, which has newer VoxMedia handling for modern embeds
  2. Open the article, copy the underlying embed URL (youtube/brightcove) directly and download that
  3. Report the URL as a broken extractor to the tracker so the schema is updated
Defensive patterns

Strategy: fallback

Try / catch

from youtube_dl.utils import ExtractorError
try:
    ydl.extract_info(article_url)
except ExtractorError as e:
    if 'provider video id' in str(e):
        # fallback: find the embed manually
        embed = find_embed_url(fetch_html(article_url))
        if embed:
            ydl.extract_info(embed)

Prevention

When it happens

Trigger: A Vox Media article (theverge/vox/sbnation/eater/polygon/curbed/racked/recode) whose embedded video uses a provider or markup shape the entry loop does not recognize, so every entry is skipped via 'continue' and the final raise fires.

Common situations: Site redesigns changing the video-init JSON schema; new embed providers (e.g. streamed/Ooyala successors); articles with only newsletter-only or externally-hosted video.

Related errors


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