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 = NoneView on GitHub (pinned to 956b8c5855)
Solutions
- Route traffic through a French IP (VPN/proxy with a France exit node)
- Pass --proxy to youtube-dl with a French proxy: --proxy socks5://user:pass@fr-host:1080
- Verify the content is actually geo-free in some regions (news clips sometimes are) by checking the geoblocage list in the API response
- 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
- Configure a French exit proxy for all FranceTV jobs
- Cache geoblocage whitelists per video to avoid repeat geo lookups
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.