yt-dlp の HTTP エラー 429 Too Many Requests を解決する

yt-dlp の HTTP エラー 429 とは
HTTP 429 Too Many Requests は、YouTube があなたの IP アドレスにレート制限をかけたことを意味します。yt-dlp ユーザーがこれを目にするのは、50 件以上のプレイリストをバッチスクリプトで連続して引いたとき、あるいは共有 IP (大学、職場、VPN のエクジット) がその 1 時間分のリクエスト枠を使い切ってしまったときが大半です。署名やトークン由来であることが多い 403 と違い、429 は純粋にリクエスト頻度の問題です。対処はシンプル: 待つ、IP を変える、あるいはこれほど大量のリクエストを高速に投げないこと、のいずれかになります。
起きる理由
YouTube はスクレイピング対策として IP 単位のリクエストクォータを敷いています。yt-dlp はデフォルト設定でも 1 本の動画につき複数のリクエストを送信します (メタデータ取得、署名デシファー、ストリーム URL 取得、セグメント取得)。プレイリストではこれが一気に倍々になります。同じ IP のブラウザで他に YouTube のタブを開いていれば、想定より早く制限に達します。
ありがちなトリガー:
- 長尺プレイリストに対する
--yes-playlistを--sleep-intervalなしで使用 - yt-dlp プロセスを並行で複数起動
- NAT 配下の共有 IP (社内、寮、モバイル CGNAT)
- 他のユーザーも YouTube に接続している VPN のエクジット
- 失敗したバッチをレジューム せず、即座にリラン
yt-dlp 側で試せること
- 1〜6 時間待つ。レート制限は自然にリセットされる。
--sleep-interval 5 --max-sleep-interval 20を加えてペースを落とす。--retries 10 --retry-sleep linear=10:300:30を加えてリトライをバックオフさせる。- ネットワークを変える: スマホのテザリング、別の VPN エクジット、自宅回線。
- ブラウザから取り出した
--cookiesで認証する。ログイン済みリクエストはクォータがやや大きい。
いずれも 429 を完全になくすものではなく、遭遇率を下げるだけです。
代わりに Any4K を使う
Any4K はパースをサーバー側で実行します。あなたの IP が YouTube と直接やり取りすることはないため、ユーザー単位のレート制限は同じ形では当てはまりません。1 本の動画や少数の動画なら、URL を any4k.com に貼ってダウンロードするだけ。sleep-interval を調整する必要も、リトライ戦略を書く必要もありません。
レート制限時に Any4K が嬉しい点
- 個人 IP が表に出ない: YouTube とやり取りするのは Any4K の基盤で、あなたは完成したファイルをダウンロードするだけ。
- より高い最高画質: ソースが対応していれば最大 8K。
- マルチプラットフォーム: YouTube、TikTok、Twitter、Instagram、Facebook、Reddit、Shorts に同じ UI で対応。
- インストール不要: どのブラウザでも開ける。
それでも yt-dlp が向いている場面
数百本規模のアーカイブ作業や、字幕の抽出、メタデータの埋め込みといった用途では yt-dlp が圧倒的に深く使えます。その場合は 429 を「ワークフローの一部」と受け入れ、sleep interval を相応に調整してください。1 本〜少量なら、エンドツーエンドで見て Any4K のほうが速いです。
まとめ
429 はバグではなく、YouTube のトラフィックシェイピングです。yt-dlp 側を調整して付き合うこともできますし、Any4K Video Downloader のようなサーバー側ツールで IP 単位の制限自体を回避することもできます。