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 キーが、別の場所ですでにクォータを消費している可能性があります。