The error#
When no formats are found and the reason contains this substring:
This content isn't available, try again lateryt-dlp replaces the reason with its own sentence. For a signed-in session the subject is Your account. Otherwise it is The current session. The rest is fixed:
has been rate-limited by YouTube for up to an hour. It is recommended to use `-t sleep` to add a delay between video requests to avoid exceeding the rate limit. For more information, refer to https://github.com/yt-dlp/yt-dlp/wiki/Extractors#this-content-isnt-available-try-again-laterThere are two spaces before the wiki URL. The full string is passed to raise_no_formats with expected=True, which raises ExtractorError unless ignore_no_formats_error or wait_for_video is set. Those two turn it into a warning.
What triggers it#
Missing formats, and that substring inside the playability reason. It is not the HTTP 429 path. A 429 from the network layer is HTTP Error 429: {reason}.
How to confirm#
The exception text contains rate-limited by YouTube for up to an hour and names -t sleep. If you do not see that sentence, you are on a different branch (sign-in, captcha, or the IP-blocked page).
Fixes#
The source tells you to add a delay with -t sleep between video requests. It also says the limit can last up to an hour. Retrying immediately is what the message is warning against. Cookies change the subject from The current session to Your account. They do not remove the branch.
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.