The error#
These strings are screen messages, not ExtractorError by themselves:
{video_id}: This video is age-restricted; some formats may be missing without authentication. {login hint}
{video_id}: This video is age-restricted and YouTube is requiring account age-verification; some formats may be missingThe first is to_screen when the video is age-gated and the client is not authenticated. The login hint is _youtube_login_hint (see the sign-in page). The second is to_screen when the client is authenticated and YouTube still requires account age verification.
The check looks at playabilityStatus.desktopLegacyAgeGateReason, or at status and reason containing one of:
confirm your age
age-restricted
inappropriate
age_verification_required
age_check_requiredWhat triggers it#
_is_agegated is true for that player response. For an unauthenticated client, some formats may be missing and the first screen line is printed. The extractor then tries a web_embedded client. An authenticated account that is still age-gated gets the second line, and the code tries web_creator, which the comment says requires a PO token.
How to confirm#
The screen output contains This video is age-restricted. If formats are still missing afterwards, the later error is whichever playability branch remains (sign-in, captcha, or no formats).
Fixes#
The unauthenticated message points at the cookie login hint. Cookies only help if the account is allowed to watch that video. The authenticated message says YouTube is requiring account age-verification and that some formats may be missing. There is no flag in this function that marks the account as age-verified.
SocialScrape#
Video details are GET /v1/youtube/video. Transcripts are GET /v1/youtube/video/transcript: the video's own captions. A video with no captions returns transcript_unavailable and costs nothing. AI transcription of YouTube audio is not available yet.
Failed requests cost 0 credits. New accounts get 100 credits on signup, no card.