yt-dlp/yt-dlp · error · UnsupportedError
Unsupported URL: {url}
Error message
Unsupported URL: {url} What it means
RumbleIE handles generic rumble.com listing pages (browse, browse/live, /search/video?q=...) by scanning the downloaded HTML for Rumble embed links via RumbleEmbedIE.extract_from_webpage. If the page contains no embeddable video, it raises UnsupportedError(url) — the same 'Unsupported URL: <url>' error an unrecognized URL produces.
Source
Thrown at yt_dlp/extractor/rumble.py:362
'title': 'Browse',
'age_limit': 0,
},
}, {
'url': 'https://rumble.com/search/video?q=rumble&sort=views',
'playlist_mincount': 24,
'info_dict': {
'id': 'video?q=rumble&sort=views',
'title': 'Search results for: rumble',
'age_limit': 0,
},
}]
def _real_extract(self, url):
page_id = self._match_id(url)
webpage = self._download_webpage(url, page_id)
url_info = next(RumbleEmbedIE.extract_from_webpage(self._downloader, url, webpage), None)
if not url_info:
raise UnsupportedError(url)
return {
'_type': 'url_transparent',
'ie_key': url_info['ie_key'],
'url': url_info['url'],
'release_timestamp': parse_iso8601(self._search_regex(
r'(?:Livestream begins|Streamed on):\s+<time datetime="([^"]+)', webpage, 'release date', default=None)),
'view_count': int_or_none(self._search_regex(
r'"userInteractionCount"\s*:\s*(\d+)', webpage, 'view count', default=None)),
'like_count': parse_count(self._search_regex(
r'<span data-js="rumbles_up_votes">\s*([\d,.KM]+)', webpage, 'like count', default=None)),
'dislike_count': parse_count(self._search_regex(
r'<span data-js="rumbles_down_votes">\s*([\d,.KM]+)', webpage, 'dislike count', default=None)),
'description': clean_html(get_element_by_class('media-description', webpage)),
}
class RumbleChannelIE(InfoExtractor):View on GitHub (pinned to 81ecd58b13)
Solutions
- Open the same search/browse URL in a browser to confirm it actually lists results
- Try a broader search term, or use a direct video URL copied from the browser
- Update yt-dlp (yt-dlp -U)
- For channels, use the dedicated channel/user playlist URLs instead of search
Defensive patterns
Strategy: try-catch
Try / catch
from yt_dlp.utils import DownloadError, ExtractorError, UnsupportedError
try:
results = ydl.extract_info(f'rumblesearch:{query}', download=False)
except UnsupportedError:
results = None # page had no embeddable videos; treat as empty result set
except (ExtractorError, DownloadError) as e:
if 'Unsupported URL' in str(e):
results = None
else:
raise Prevention
- Confirm the search has results in a browser before scripting it
- Catch UnsupportedError as 'no results' rather than crashing batch jobs
- Prefer direct video or channel URLs over search pages for automation
When it happens
Trigger: A rumble.com browse or search page whose results contain no embeddable videos: zero search results for the term, results rendered only client-side, or a markup change that hides the embed links from the static HTML.
Common situations: Searching a term with no results; Rumble markup changes after your yt-dlp version; scraping search pages that now load results via JS.
Related errors
- invalid download number {n} for query "{query}"
- Could not fetch search data
- Unable to extract access credentials
- Unsupported entity type "{entity}"
- Unsupported URL: {url}
AI-assisted analysis of yt-dlp/yt-dlp@81ecd58b13 (2026-08-22).
Data as JSON: /api/errors/d99024397322d873.
Report an issue: GitHub.