HTTP 429 Too Many Requests
ペースを落としてください: クライアントがサーバーの許容する時間枠内のリクエスト数を超過しました。
HTTP 429 の意味
HTTP 429 Too Many Requests は、クライアントが IP ごと、API キーごと、ユーザーごと、またはエンドポイントごとのレート制限を超過したことを意味します。適切に振る舞うサーバーは Retry-After ヘッダー(秒数または日付)を含め、多くの場合クォータを説明する X-RateLimit-* ヘッダーも付けます。
クライアントにとって正しい対応は常に同じです: 抑制することです。すぐに再試行すると状況は悪化し、一時的なスロットリングが本当の禁止に発展することもあります。
429 エラーのよくある原因
- API クライアントが頻繁すぎるポーリングを行っている、またはクォータを超えてバーストしています。
- リクエスト間に遅延を入れずに Web スクレイピングを行っています。
- バグ: バックオフのない再試行ループが同じエンドポイントを叩き続けています。
- 共有 IP(オフィスの NAT、VPN、サーバーレスの送信経路)で、合算されたトラフィックが制限を超えています。
- ログインエンドポイントが、ブルートフォース対策として繰り返しの試行をスロットリングしています。
クライアント/開発者としての対処法
- Retry-After に正確に従ってください。なければ、ジッターを加えた指数バックオフを使用してください(例: 1秒、2秒、4秒、8秒…)。
- API の X-RateLimit-Remaining/リセット ヘッダーを読み取り、事前にリクエストのペースを調整してください。
- 同一のデータを再取得する代わりに、リクエストをまとめてキャッシュしてください。
- 使い捨ての IP を渡り歩くのではなく、時間軸で負荷を分散してください — 制限を回避する行為は多くの場合、API の利用規約に違反します。
API 提供者としての対処法
- クライアントが適切に振る舞えるよう、常に Retry-After とクォータのヘッダーを送信してください。
- 共有ネットワークを不当に罰しないよう、可能であれば単純な IP ではなくキー/ユーザー単位でレート制限を行ってください。
レスポンス例
HTTP/1.1 429 Too Many Requests
Retry-After: 30
X-RateLimit-Limit: 100
X-RateLimit-Remaining: 0
{"error":"rate_limited","retry_after":30}よくある質問
429 の後、どれくらい待つべきですか?
Retry-After に示された時間に従ってください。それがない場合は、1〜2 秒から始めて、429 が連続するたびに待機時間を倍にしてください(指数バックオフ)。
429 は自分が禁止されたことを意味しますか?
いいえ — これは一時的なスロットリングです。ただし、それを何度も無視すると、実際の IP やキーの禁止につながる可能性があります。
最初のリクエストなのに 429 になるのはなぜですか?
制限はおそらく共有されています: あなたの IP(VPN、オフィスネットワーク)や API キーが、別の場所ですでにクォータを消費している可能性があります。