ytdl-org/youtube-dl · error · ExtractorError

The video is not available from your location

Error message

The video is not available from your location

What it means

Raised by FranceTV's _extract_video when the video declares a 'geoblocage' country whitelist and the requester's country (from the geo.francetv.fr edgescape lookup) is not on it. It is an expected, deliberate geo-restriction error; most France TV content is limited to France and French territories.

Source

Thrown at youtube_dl/extractor/francetv.py:112

            'https://sivideo.webservices.francetelevisions.fr/tools/getInfosOeuvre/v2/',
            video_id, 'Downloading video JSON', query={
                'idDiffusion': video_id,
                'catalogue': catalogue or '',
            })

        if info.get('status') == 'NOK':
            raise ExtractorError(
                '%s returned error: %s' % (self.IE_NAME, info['message']),
                expected=True)
        allowed_countries = info['videos'][0].get('geoblocage')
        if allowed_countries:
            georestricted = True
            geo_info = self._download_json(
                'http://geo.francetv.fr/ws/edgescape.json', video_id,
                'Downloading geo restriction info')
            country = geo_info['reponse']['geo_info']['country_code']
            if country not in allowed_countries:
                raise ExtractorError(
                    'The video is not available from your location',
                    expected=True)
        else:
            georestricted = False

        def sign(manifest_url, manifest_id):
            for host in ('hdfauthftv-a.akamaihd.net', 'hdfauth.francetv.fr'):
                signed_url = url_or_none(self._download_webpage(
                    'https://%s/esi/TA' % host, video_id,
                    'Downloading signed %s manifest URL' % manifest_id,
                    fatal=False, query={
                        'url': manifest_url,
                    }))
                if signed_url:
                    return signed_url
            return manifest_url

        is_live = None

View on GitHub (pinned to 956b8c5855)

Solutions

  1. Route traffic through a French IP (VPN/proxy with a France exit node)
  2. Pass --proxy to youtube-dl with a French proxy: --proxy socks5://user:pass@fr-host:1080
  3. Verify the content is actually geo-free in some regions (news clips sometimes are) by checking the geoblocage list in the API response
  4. No credential workaround exists — the check is IP-based, not account-based

Example fix

# before
youtube_dl 'https://www.france.tv/france-2/13h15-le-dimanche/140921-les-mysteres-de-jesus.html'
# ERROR: The video is not available from your location

# after
youtube_dl --proxy 'socks5://fr-proxy.example.com:1080' 'https://www.france.tv/france-2/13h15-le-dimanche/140921-les-mysteres-de-jesus.html'
Defensive patterns

Strategy: fallback

Validate before calling

# Pre-check region before extraction
import json, urllib.request
geo = json.load(urllib.request.urlopen('http://geo.francetv.fr/ws/edgescape.json'))
country = geo['reponse']['geo_info']['country_code']
if country not in get_geoblocage_list(video_id):
    use_french_proxy()  # avoid guaranteed geo failure

Try / catch

try:
    ydl.extract_info(url)
except ExtractorError as e:
    if 'not available from your location' in str(e):
        rerun_with_french_proxy(url)

Prevention

When it happens

Trigger: info['videos'][0]['geoblocage'] is truthy, the edgescape.json lookup returns a country_code, and that code is not in the allowed list. Triggered by requesting FranceTV videos from outside the whitelisted countries without a French IP.

Common situations: Traveling French users or expats; VPN exits in non-FR regions; scripts running on non-French cloud servers (US/EU datacenter IPs).

Related errors


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