ytdl-org/youtube-dl · error · ExtractorError

This video is only available via cable service provider subs

Error message

This video is only available via cable service provider subscription. You may want to use --cookies.

What it means

Raised by the FOX extractor when the api2.fox.com call returns 403 and the parsed entitlementIssues contain an entry with errorCode 1005. That code specifically means the content requires an MVPD (cable TV provider) subscription that the current session does not have. Marked expected=True; the suggested remedy in the message itself is to supply cookies.

Source

Thrown at youtube_dl/extractor/fox.py:74

    _access_token = None

    def _call_api(self, path, video_id, data=None):
        headers = {
            'X-Api-Key': self._API_KEY,
        }
        if self._access_token:
            headers['Authorization'] = 'Bearer ' + self._access_token
        try:
            return self._download_json(
                'https://api2.fox.com/v2.0/' + path,
                video_id, data=data, headers=headers)
        except ExtractorError as e:
            if isinstance(e.cause, compat_HTTPError) and e.cause.code == 403:
                entitlement_issues = self._parse_json(
                    e.cause.read().decode(), video_id)['entitlementIssues']
                for e in entitlement_issues:
                    if e.get('errorCode') == 1005:
                        raise ExtractorError(
                            'This video is only available via cable service provider '
                            'subscription. You may want to use --cookies.', expected=True)
                messages = ', '.join([e['message'] for e in entitlement_issues])
                raise ExtractorError(messages, expected=True)
            raise

    def _real_initialize(self):
        if not self._access_token:
            mvpd_auth = self._get_cookies(self._HOME_PAGE_URL).get('mvpd-auth')
            if mvpd_auth:
                self._access_token = (self._parse_json(compat_urllib_parse_unquote(
                    mvpd_auth.value), None, fatal=False) or {}).get('accessToken')
            if not self._access_token:
                self._access_token = self._call_api(
                    'login', None, json.dumps({
                        'deviceId': compat_str(uuid.uuid4()),
                    }).encode())['accessToken']

View on GitHub (pinned to 956b8c5855)

Solutions

  1. Log in to fox.com with your cable provider in a browser, export cookies.txt, and run with --cookies
  2. Verify the provider subscription is active and includes the channel of the requested show
  3. Confirm you are not geo-blocked (FOX enforces US-only) by using a US IP
  4. If you have no cable subscription, the content is not obtainable via this extractor

Example fix

# before
youtube_dl 'https://www.fox.com/watch/empire-some-episode/'
# ERROR: This video is only available via cable service provider subscription...

# after
youtube_dl --cookies fox_cookies.txt 'https://www.fox.com/watch/empire-some-episode/'
Defensive patterns

Strategy: try-catch

Try / catch

try:
    ydl.extract_info(url)
except ExtractorError as e:
    if 'cable service provider subscription' in str(e):
        rerun_with_mvpd_cookies(url)  # cookies exported after provider login

Prevention

When it happens

Trigger: _call_api('vodplayer/<id>') gets a 403 whose body lists entitlementIssues; one has errorCode == 1005. Occurs when no mvpd-auth cookie / access token with a valid TV-provider login is present, or the linked provider subscription lacks the channel carrying the show.

Common situations: Downloading FOX or National Geographic shows without authenticating; cookies exported from a free FOX account instead of one linked to a cable provider; provider subscription lapsed so entitlement checks fail even with cookies.

Related errors


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