ytdl-org/youtube-dl · error · ExtractorError
No downloadable videos found
Error message
No downloadable videos found
What it means
Raised by ToggleIE when zero usable formats were collected and no DRM flag was found. The code comment says this is most likely geo-blocking: Toggle restricts streams to Singapore, and the API returns metadata but strips stream URLs for foreign IPs. Marked expected=True.
Source
Thrown at youtube_dl/extractor/toggle.py:161
elif ext == 'ism':
formats.extend(self._extract_ism_formats(
video_url, video_id, ism_id=vid_format,
note='Downloading %s ISM manifest' % vid_format,
errnote='Failed to download %s ISM manifest' % vid_format,
fatal=False))
elif ext == 'mp4':
formats.append({
'ext': ext,
'url': video_url,
'format_id': vid_format,
})
if not formats:
for meta in (info.get('Metas') or []):
if meta.get('Key') == 'Encryption' and meta.get('Value') == '1':
raise ExtractorError(
'This video is DRM protected.', expected=True)
# Most likely because geo-blocked
raise ExtractorError('No downloadable videos found', expected=True)
self._sort_formats(formats)
thumbnails = []
for picture in info.get('Pictures', []):
if not isinstance(picture, dict):
continue
pic_url = picture.get('URL')
if not pic_url:
continue
thumbnail = {
'url': pic_url,
}
pic_size = picture.get('PicSize', '')
m = re.search(r'(?P<width>\d+)[xX](?P<height>\d+)', pic_size)
if m:
thumbnail.update({
'width': int(m.group('width')),
'height': int(m.group('height')),View on GitHub (pinned to 956b8c5855)
Solutions
- Use a Singapore VPN/exit and retry
- Log in with a Singapore account via cookies if the content needs auth
- Confirm in an SG-IP browser that the video actually streams
- Catch this expected error in bulk jobs and tag the URL as geo-blocked
Defensive patterns
Strategy: retry
Try / catch
try:
ydl.extract_info(toggle_url)
except ExtractorError as e:
if e.expected and 'No downloadable videos found' in str(e):
retry_with_sg_exit(url) # likely geo-block; retry via SG IP once Prevention
- Route Toggle/mewatch extraction through a Singapore IP from the start
- Distinguish geo (no formats) from DRM (Encryption meta) by the message
- Re-check availability in an SG browser before assuming permanent loss
When it happens
Trigger: Extracting toggle.sg/mewatch.sg content from outside Singapore; the format loop adds nothing (no ISM, no mp4), Metas lacks an Encryption flag, so the extractor concludes 'No downloadable videos found'.
Common situations: Running downloads from non-SG IPs without a VPN; region-locked live channels; some content restricted even for logged-out SG users.
Related errors
- This video is not available in your country.
- %s returned error: %s
- Bigo says: %s (code %s)
- %s said: %s
- This content is not available at your territory due to limit
AI-assisted analysis of ytdl-org/youtube-dl@956b8c5855 (2026-08-14).
Data as JSON: /api/errors/ae4e12c0b7415884.
Report an issue: GitHub.