ytdl-org/youtube-dl · error · ExtractorError
This album is protected by a password, use the --video-passw
Error message
This album is protected by a password, use the --video-password option
What it means
Thrown by VimeoAlbumIE when the target album's API metadata reports privacy.view == 'password' but no password was supplied. The extractor queries api.vimeo.com/albums/<id> with a JWT from the page's bootstrap_data and refuses to proceed without credentials. It is marked expected=True, so youtube-dl treats it as a user-facing extraction error, not a bug.
Source
Thrown at youtube_dl/extractor/vimeo.py:997
def _real_extract(self, url):
album_id = self._match_id(url)
viewer = self._download_json(
'https://vimeo.com/_rv/viewer', album_id, fatal=False)
if not viewer:
webpage = self._download_webpage(url, album_id)
viewer = self._parse_json(self._search_regex(
r'bootstrap_data\s*=\s*({.+?})</script>',
webpage, 'bootstrap data'), album_id)['viewer']
jwt = viewer['jwt']
album = self._download_json(
'https://api.vimeo.com/albums/' + album_id,
album_id, headers={'Authorization': 'jwt ' + jwt},
query={'fields': 'description,name,privacy'})
hashed_pass = None
if try_get(album, lambda x: x['privacy']['view']) == 'password':
password = self._downloader.params.get('videopassword')
if not password:
raise ExtractorError(
'This album is protected by a password, use the --video-password option',
expected=True)
self._set_vimeo_cookie('vuid', viewer['vuid'])
try:
hashed_pass = self._download_json(
'https://vimeo.com/showcase/%s/auth' % album_id,
album_id, 'Verifying the password', data=urlencode_postdata({
'password': password,
'token': viewer['xsrft'],
}), headers={
'X-Requested-With': 'XMLHttpRequest',
})['hashed_pass']
except ExtractorError as e:
if isinstance(e.cause, compat_HTTPError) and e.cause.code == 401:
raise ExtractorError('Wrong password', expected=True)
raise
entries = OnDemandPagedList(functools.partial(
self._fetch_page, album_id, jwt, hashed_pass), self._PAGE_SIZE)View on GitHub (pinned to 956b8c5855)
Solutions
- Pass the album password: youtube-dl --video-password <pass> <album_url>
- If the password is correct but the error persists, verify the album is a showcase whose auth endpoint (vimeo.com/showcase/<id>/auth) still accepts it
- Ensure you are not extracting the album through a wrapper tool that drops the videopassword parameter
Example fix
# before youtube-dl https://vimeo.com/album/12345 # after youtube-dl --video-password SECRET https://vimeo.com/album/12345
Defensive patterns
Strategy: validation
Validate before calling
import youtube_dl
opts = {'videopassword': 'SECRET'}
if not opts.get('videopassword'):
raise SystemExit('Password required for this album')
ydl = youtube_dl.YoutubeDL(opts) Try / catch
from youtube_dl.utils import ExtractorError
try:
ydl.extract_info('https://vimeo.com/album/12345')
except ExtractorError as e:
if 'protected by a password' in str(e):
opts['videopassword'] = getpass('Vimeo password: ')
ydl.extract_info(url) # retry once
else:
raise Prevention
- Prompt for --video-password whenever the target URL is a Vimeo album/showcase
- Check album privacy via the API before batch jobs and skip password-protected entries
- Cache verified passwords per album id to avoid repeated 401 rounds
When it happens
Trigger: Extracting any https://vimeo.com/album/<id> or /showcase/<id> URL whose album JSON has privacy.view == 'password' while the --video-password option (downloader param 'videopassword') is unset.
Common situations: Running youtube-dl/yt-dlp on a password-protected Vimeo showcase without passing credentials; scripts that enumerate album URLs where some are private; migrations where the password was previously cached.
Related errors
- Wrong password
- Unable to log in
- The video is not available, Facebook said: "%s"
- Cannot download file. Are you logged in?
- This video is only available via cable service provider subs
AI-assisted analysis of ytdl-org/youtube-dl@956b8c5855 (2026-08-14).
Data as JSON: /api/errors/fa61ec64e51059b0.
Report an issue: GitHub.