メインコンテンツへスキップ
毎日、何千人もの開発者が X API にリクエストを送信しています。こうした膨大なリクエスト量を適切に管理するため、送信できるリクエスト数には制限を設けています。これらの制限により、開発者コミュニティが依拠する信頼性が高くスケーラブルな API を提供できます。 許可される最大リクエスト数は時間間隔に基づき、通常は特定の期間や時間ウィンドウで定義されます。最も一般的な間隔は15分です。たとえば、15分あたり900リクエストの制限がある endpoint では、任意の15分間に最大900件のリクエストが可能です。 レートリミットは認証方法によって異なります。たとえば、OAuth 1.0a ユーザーコンテキストを使用する場合、各ユーザーのAccess Tokensごとに期間単位のレートリミットが適用されます。一方、OAuth 2.0 Bearer Tokenを使用する場合は、App 単位で期間ごとに独立した制限が適用されます。これらの制限を超過すると、エラーが返されます。

目次

X API v2 のレートリミット

次の表では、各 X API の有料プランにおけるレートリミットを示します。これらの制限は developer portal の製品セクションでも確認できます。
endpointPro の上限 Basic の上限 Free の上限
Tweets
DELETE /2/tweets/:id15分あたり50リクエスト
ユーザー単位
15分あたり5リクエスト
ユーザー単位
24時間あたり17リクエスト
ユーザー単位
24時間あたり17リクエスト
App単位
DELETE /2/users/:id/likes/:tweet_id50件のリクエスト / 15分
ユーザー単位
100件のリクエスト / 24時間
ユーザー単位
1件のリクエスト / 15分
ユーザー単位
DELETE /2/users/:id/retweets/:tweet_id50件のリクエスト / 15分
ユーザーごと
5件のリクエスト / 15分
ユーザーごと
1件のリクエスト / 15分
ユーザーごと
GET /2/tweets15分あたり900リクエスト
ユーザー単位
15分あたり450リクエスト
App単位
15分あたり15リクエスト
ユーザー単位
15分あたり15リクエスト
App単位
15分あたり1リクエスト
ユーザー単位
15分あたり1リクエスト
App単位
GET /2/tweets/:id15分あたり900件のリクエスト
ユーザー単位
15分あたり450件のリクエスト
App単位
15分あたり15件のリクエスト
ユーザー単位
15分あたり15件のリクエスト
App単位
15分あたり1件のリクエスト
ユーザー単位
15分あたり1件のリクエスト
App単位
GET /2/tweets/:id/liking_users75 requests / 15 mins
ユーザーごと
75 requests / 15 mins
Appごと
5 requests / 15 mins
ユーザーごと
25 requests / 15 mins
Appごと
1 requests / 15 mins
ユーザーごと
1 requests / 15 mins
Appごと
GET /2/tweets/:id/quote_tweets15分あたり75リクエスト
ユーザー単位
15分あたり75リクエスト
App単位
15分あたり5リクエスト
ユーザー単位
15分あたり5リクエスト
App単位
15分あたり1リクエスト
ユーザー単位
15分あたり1リクエスト
App単位
GET /2/tweets/:id/retweeted_by75リクエスト / 15分
ユーザー単位
75リクエスト / 15分
App単位
5リクエスト / 15分
ユーザー単位
5リクエスト / 15分
App単位
1リクエスト / 15分
ユーザー単位
1リクエスト / 15分
App単位
GET /2/tweets/counts/all15分あたり 300 リクエスト
App単位
GET /2/tweets/counts/recent300リクエスト / 15分
Appごと
5リクエスト / 15分
Appごと
1リクエスト / 15分
Appごと
GET /2/tweets/search/all1 リクエスト/秒
ユーザーごと
1 リクエスト/秒
App ごと
GET /2/tweets/search/recent300件のリクエスト / 15分
ユーザー単位
450件のリクエスト / 15分
App単位
60件のリクエスト / 15分
ユーザー単位
60件のリクエスト / 15分
App単位
1件のリクエスト / 15分
ユーザー単位
1件のリクエスト / 15分
App単位
GET /2/tweets/search/stream15分あたり50リクエスト
Appごと
GET /2/tweets/search/stream/rules450件のリクエスト / 15分
Appごと
GET /2/users/:id/liked_tweets15分あたり75リクエスト
ユーザー単位
15分あたり75リクエスト
App単位
15分あたり5リクエスト
ユーザー単位
15分あたり5リクエスト
App単位
15分あたり1リクエスト
ユーザー単位
15分あたり1リクエスト
App単位
GET /2/users/:id/mentions300 リクエスト / 15 分
ユーザー単位
450 リクエスト / 15 分
App 単位
10 リクエスト / 15 分
ユーザー単位
15 リクエスト / 15 分
App 単位
1 リクエスト / 15 分
ユーザー単位
1 リクエスト / 15 分
App 単位
GET /2/users/:id/timelines/reverse_chronological15分あたり 180 件のリクエスト
ユーザー単位
15分あたり 5 件のリクエスト
ユーザー単位
15分あたり 1 件のリクエスト
ユーザー単位
GET /2/users/:id/tweets900 リクエスト / 15分
ユーザー単位
1500 リクエスト / 15分
App 単位
5 リクエスト / 15分
ユーザー単位
10 リクエスト / 15分
App 単位
1 リクエスト / 15分
ユーザー単位
1 リクエスト / 15分
App 単位
GET /2/users/reposts_of_me75 requests / 15 mins
ユーザー単位
75 requests / 15 mins
ユーザー単位
1 requests / 15 mins
ユーザー単位
POST /2/tweets100 リクエスト / 15分
ユーザー単位
10,000 リクエスト / 24時間
App 単位
100 リクエスト / 24時間
ユーザー単位
1,667 リクエスト / 24時間
App 単位
17 リクエスト / 24時間
ユーザー単位
17 リクエスト / 24時間
App 単位
POST /2/tweets/search/stream/rules100件のリクエスト / 15分
App単位
POST /2/users/:id/likes24時間あたり1,000リクエスト
ユーザー単位
24時間あたり200リクエスト
ユーザー単位
15分あたり1リクエスト
ユーザー単位
POST /2/users/:id/retweets15分あたり50件のリクエスト
ユーザー単位
15分あたり5件のリクエスト
ユーザー単位
15分あたり1件のリクエスト
ユーザー単位
PUT /2/tweets/:tweet_id/hidden15分あたり 50 リクエスト
ユーザー単位
15分あたり 5 リクエスト
ユーザー単位
15分あたり 1 リクエスト
ユーザー単位
ユーザー
DELETE /2/users/:source_user_id/following/:target_user_id50 リクエスト / 15 分
ユーザー単位
5 リクエスト / 15 分
ユーザー単位
1 リクエスト / 15 分
ユーザー単位
DELETE /2/users/:source_user_id/muting/:target_user_id50 requests / 15 mins
ユーザー単位
5 requests / 15 mins
ユーザー単位
1 requests / 15 mins
ユーザー単位
GET /2/users900リクエスト / 15分
ユーザー単位
300リクエスト / 15分
App単位
100リクエスト / 24時間
ユーザー単位
500リクエスト / 24時間
App単位
1リクエスト / 24時間
ユーザー単位
1リクエスト / 24時間
App単位
GET /2/users/:id15分あたり 900 requests
ユーザー単位
15分あたり 300 requests
App 単位
24時間あたり 100 requests
ユーザー単位
24時間あたり 500 requests
App 単位
24時間あたり 1 request
ユーザー単位
24時間あたり 1 request
App 単位
GET /2/users/:id/blocking15件のリクエスト/15分
ユーザーごと
5件のリクエスト/15分
ユーザーごと
1件のリクエスト/15分
ユーザーごと
GET /2/users/:id/muting15 requests / 15 mins
ユーザー単位
100 requests / 24 hours
ユーザー単位
1 requests / 24 hours
ユーザー単位
GET /2/users/by900 リクエスト/15分
ユーザー単位
300 リクエスト/15分
App 単位
100 リクエスト/24時間
ユーザー単位
500 リクエスト/24時間
App 単位
1 リクエスト/24時間
ユーザー単位
1 リクエスト/24時間
App 単位
GET /2/users/by/username/:username900リクエスト / 15分
ユーザー単位
300リクエスト / 15分
App単位
100リクエスト / 24時間
ユーザー単位
500リクエスト / 24時間
App単位
3リクエスト / 15分
ユーザー単位
3リクエスト / 15分
App単位
GET /2/users/me75 requests / 15分
ユーザー単位
250 requests / 24時間
ユーザー単位
25 requests / 24時間
ユーザー単位
GET /2/users/search900 リクエスト / 15分
ユーザー単位
300 リクエスト / 15分
App 単位
POST /2/users/:id/following15分あたり50リクエスト
ユーザー単位
15分あたり5リクエスト
ユーザー単位
15分あたり1リクエスト
ユーザー単位
POST /2/users/:id/muting50件のリクエスト / 15分
ユーザーごと
5件のリクエスト / 15分
ユーザーごと
1件のリクエスト / 15分
ユーザーごと
Spaces
GET /2/spaces300件 / 15分
ユーザーごと
300件 / 15分
Appごと
5件 / 15分
ユーザーごと
25件 / 15分
Appごと
1件 / 15分
ユーザーごと
1件 / 15分
Appごと
GET /2/spaces/:id300 リクエスト / 15 分
ユーザーごと
300 リクエスト / 15 分
App ごと
5 リクエスト / 15 分
ユーザーごと
25 リクエスト / 15 分
App ごと
1 リクエスト / 15 分
ユーザーごと
1 リクエスト / 15 分
App ごと
GET /2/spaces/:id/buyers300 リクエスト / 15 分
ユーザーごと
300 リクエスト / 15 分
App ごと
5 リクエスト / 15 分
ユーザーごと
25 リクエスト / 15 分
App ごと
1 リクエスト / 15 分
ユーザーごと
1 リクエスト / 15 分
App ごと
GET /2/spaces/:id/tweets300 リクエスト / 15 分
ユーザー単位
300 リクエスト / 15 分
App 単位
5 リクエスト / 15 分
ユーザー単位
25 リクエスト / 15 分
App 単位
1 リクエスト / 15 分
ユーザー単位
1 リクエスト / 15 分
App 単位
GET /2/spaces/by/creator_ids15 分あたり 300 件のリクエスト
ユーザー単位
1 秒あたり 1 件のリクエスト
App 単位
15 分あたり 5 件のリクエスト
ユーザー単位
1 秒あたり 25 件のリクエスト
App 単位
1 秒あたり 1 件のリクエスト
ユーザー単位
15 分あたり 1 件のリクエスト
App 単位
GET /2/spaces/search300件のリクエスト / 15分
ユーザー単位
300件のリクエスト / 15分
App単位
5件のリクエスト / 15分
ユーザー単位
25件のリクエスト / 15分
App単位
1件のリクエスト / 15分
ユーザー単位
1件のリクエスト / 15分
App単位
ダイレクトメッセージ
DELETE /2/dm_events/:id24時間あたり1500リクエスト
ユーザー単位
24時間あたり4000リクエスト
App単位
15分あたり200リクエスト
ユーザー単位
24時間あたり2500リクエスト
App単位
GET /2/dm_conversations/:dm_conversation_id/dm_events15リクエスト / 15分
ユーザー単位
1リクエスト / 24時間
ユーザー単位
GET /2/dm_conversations/with/:participant_id/dm_events15件のリクエスト / 15分間
ユーザー単位
1件のリクエスト / 24時間
ユーザー単位
GET /2/dm_events15リクエスト / 15分
ユーザー単位
1リクエスト / 24時間
ユーザー単位
GET /2/dm_events/:id15リクエスト / 15分
ユーザー単位
5リクエスト / 24時間
ユーザー単位
POST /2/dm_conversations15 リクエスト / 15 分
ユーザー単位
1440 リクエスト / 24 時間
App 単位
1 リクエスト / 24 時間
ユーザー単位
1 リクエスト / 24 時間
App 単位
POST /2/dm_conversations/:dm_conversation_id/messages15 requests / 15 mins
ユーザー単位
1440 requests / 24 hours
App 単位
1 requests / 24 hours
ユーザー単位
1 requests / 24 hours
App 単位
POST /2/dm_conversations/with/:participant_id/messages24時間あたり 1440 リクエスト
ユーザー単位
24時間あたり 1440 リクエスト
App 単位
24時間あたり 1 リクエスト
ユーザー単位
24時間あたり 1 リクエスト
App 単位
List
DELETE /2/lists/:id300 リクエスト / 15 分
ユーザー単位
5 リクエスト / 15 分
ユーザー単位
1 リクエスト / 15 分
ユーザー単位
DELETE /2/lists/:id/members/:user_id15分あたり300リクエスト
ユーザー単位
15分あたり5リクエスト
ユーザー単位
15分あたり1リクエスト
ユーザー単位
DELETE /2/users/:id/followed_lists/:list_id15分あたり50リクエスト
ユーザー単位
15分あたり5リクエスト
ユーザー単位
15分あたり1リクエスト
ユーザー単位
DELETE /2/users/:id/pinned_lists/:list_id50リクエスト / 15分
ユーザー単位
5リクエスト / 15分
ユーザー単位
1リクエスト / 15分
ユーザー単位
GET /2/lists/:id15分あたり75回のリクエスト
ユーザー単位
15分あたり75回のリクエスト
App単位
15分あたり5回のリクエスト
ユーザー単位
15分あたり5回のリクエスト
App単位
15分あたり1回のリクエスト
ユーザー単位
15分あたり1回のリクエスト
App単位
GET /2/lists/:id/members15分あたり900リクエスト
ユーザー単位
15分あたり900リクエスト
App単位
15分あたり5リクエスト
ユーザー単位
15分あたり25リクエスト
App単位
15分あたり1リクエスト
ユーザー単位
15分あたり1リクエスト
App単位
GET /2/lists/:id/tweets900 リクエスト / 15 分
ユーザー単位
900 リクエスト / 15 分
App 単位
5 リクエスト / 15 分
ユーザー単位
25 リクエスト / 15 分
App 単位
GET /2/users/:id/list_memberships15分あたり75リクエスト
ユーザー単位
15分あたり75リクエスト
App単位
15分あたり5リクエスト
ユーザー単位
15分あたり25リクエスト
App単位
15分あたり1リクエスト
ユーザー単位
15分あたり1リクエスト
App単位
GET /2/users/:id/owned_lists15リクエスト / 15分
ユーザー単位
15リクエスト / 15分
App単位
100リクエスト / 24時間
ユーザー単位
500リクエスト / 24時間
App単位
1リクエスト / 24時間
ユーザー単位
1リクエスト / 24時間
App単位
GET /2/users/:id/pinned_lists15件のリクエスト / 15分
ユーザー単位
15件のリクエスト / 15分
App単位
100件のリクエスト / 24時間
ユーザー単位
500件のリクエスト / 24時間
App単位
1件のリクエスト / 24時間
ユーザー単位
1件のリクエスト / 24時間
App単位
POST /2/lists300リクエスト / 15分
ユーザー単位
100リクエスト / 24時間
ユーザー単位
1リクエスト / 24時間
ユーザー単位
POST /2/lists/:id/members300件のリクエスト / 15分
ユーザー単位
5件のリクエスト / 15分
ユーザー単位
1件のリクエスト / 15分
ユーザー単位
POST /2/users/:id/followed_lists50リクエスト / 15分
ユーザー単位
5リクエスト / 15分
ユーザー単位
1リクエスト / 15分
ユーザー単位
POST /2/users/:id/pinned_lists15分あたり50件のリクエスト
ユーザー単位
15分あたり5件のリクエスト
ユーザー単位
15分あたり1件のリクエスト
ユーザー単位
PUT /2/lists/:id300件のリクエスト / 15分
ユーザー単位
5件のリクエスト / 15分
ユーザー単位
1件のリクエスト / 15分
ユーザー単位
ブックマーク
DELETE /2/users/:id/bookmarks/:tweet_id15分あたり50リクエスト
ユーザー単位
15分あたり5リクエスト
ユーザー単位
15分あたり1リクエスト
ユーザー単位
GET /2/users/:id/bookmarks15分あたり180リクエスト
ユーザーごと
15分あたり10リクエスト
ユーザーごと
15分あたり1リクエスト
ユーザーごと
GET /2/users/:id/bookmarks/folders50 requests / 15 mins
ユーザー単位
50 requests / 15 mins
App 単位
5 requests / 15 mins
ユーザー単位
5 requests / 15 mins
App 単位
1 requests / 15 mins
ユーザー単位
1 requests / 15 mins
App 単位
GET /2/users/:id/bookmarks/folders/:folder_id15分あたり50リクエスト
ユーザー単位
15分あたり50リクエスト
App単位
15分あたり5リクエスト
ユーザー単位
15分あたり5リクエスト
App単位
15分あたり1リクエスト
ユーザー単位
15分あたり1リクエスト
App単位
POST /2/users/:id/bookmarks50 リクエスト / 15 分
ユーザー単位
5 リクエスト / 15 分
ユーザー単位
1 リクエスト / 15 分
ユーザー単位
コンプライアンス
GET /2/compliance/jobs15分あたり 150 リクエスト
App ごと
15分あたり 5 リクエスト
App ごと
15分あたり 1 リクエスト
App ごと
GET /2/compliance/jobs/:job_id15分あたり150リクエスト
Appごと
15分あたり5リクエスト
Appごと
15分あたり1リクエスト
Appごと
POST /2/compliance/jobs150件のリクエスト / 15分
App ごと
15件のリクエスト / 15分
App ごと
1件のリクエスト / 15分
App ごと
使用
GET /2/usage/tweets50件のリクエスト / 15分
Appごと
50件のリクエスト / 15分
Appごと
1件のリクエスト / 15分
Appごと
トレンド
GET /2/trends/by/woeid/:id75リクエスト / 15分
Appごと
15リクエスト / 15分
Appごと
GET /2/users/personalized_trends15分あたり10件のリクエスト
ユーザー単位
15分あたり200件のリクエスト
App単位
15分あたり1件のリクエスト
ユーザー単位
15分あたり20件のリクエスト
App単位
15分あたり1件のリクエスト
ユーザー単位
24時間あたり1件のリクエスト
App単位
コミュニティ
GET /2/communities/:id15分あたり300リクエスト
ユーザー単位
15分あたり300リクエスト
App単位
15分あたり1リクエスト
ユーザー単位
15分あたり25リクエスト
App単位
15分あたり1リクエスト
ユーザー単位
15分あたり1リクエスト
App単位
GET /2/communities/search300 リクエスト / 15分
ユーザー単位
300 リクエスト / 15分
App 単位
1 リクエスト / 15分
ユーザー単位
25 リクエスト / 15分
App 単位
1 リクエスト / 15分
ユーザー単位
1 リクエスト / 15分
App 単位

レートリミットと認証方法

レートリミットは、開発者用 App レベルとユーザー access token レベルの両方で設定されています:
  • OAuth 2.0 Bearer Token: App レートリミット この方法では、開発者用 App を代表して一定数のリクエストを行うことができます。この認証方法を使用する場合、制限は Bearer Token で行われたリクエストに基づいて決まります。
    • 例: 15 分間隔あたり 450 リクエストの制限がある場合、その間隔内で App を代表して 450 件のリクエストを実行できます。
  • OAuth 1.0a User Context: ユーザーレートリミット この方法では、ユーザー Access Token によって識別される X ユーザーを代表してリクエストを行うことができます。たとえば、Posts の非公開 metrics を取得する場合は、そのユーザーの Access Tokens を用いて認証します。これらのトークンは 3-legged OAuth フローで生成されます。
    • 例: ユーザーごとに 15 分あたり 900 リクエストの制限がある場合、その時間枠内でユーザーあたり最大 900 件のリクエストを実行できます。

HTTP ヘッダーとレスポンスコード

直近のリクエストに基づき、特定のレートリミットにおけるアプリケーションの状況を把握するために HTTP ヘッダーを使用します。
  • x-rate-limit-limit: 当該 endpoint のレートリミット上限
  • x-rate-limit-remaining: 15分ウィンドウ内の残りリクエスト数
  • x-rate-limit-reset: レートリミットがリセットされるまでの残り時間(UTC エポック秒)

エラーレスポンス

アプリケーションが特定のendpointのレートリミットを超過した場合、APIはレスポンス本文に次のエラーメッセージを含む HTTP 429 “Too Many Requests” レスポンスを返します。
{ "errors": [ { "code": 88, "message": "レートリミットを超えました" } ] }

レートリミットからの復旧

これらのレートリミットを超過すると、endpoint から 429 “Too Many Requests” エラーが返されます。以下で説明するように、レートリミットエラーが発生した場合のベストプラクティスは、リセット時刻を示す HTTP ヘッダーを確認し、それまでリクエストを停止することです。
“Too Many Requests” またはレートリミットのエラーが発生した場合は、リクエスト頻度を下げる必要があります。レートリミットエラーに達した際は、x-rate-limit-reset: HTTP ヘッダーを確認することで、レートリミットがいつリセットされるかを把握できます。

もう一つの一般的なパターンは指数バックオフで、最初はリクエスト間隔を短く(例: 数秒)し、再試行のたびにその間隔を倍にしていきます。これはリクエストが成功するか、あるいは合理的な最大間隔(例: 数分)に達するまで続けます。

理想的には、クライアント側が既存のレートリミットを把握し、現在超過しているウィンドウが失効するまでリクエストを一時停止できます。15 分のリミットを超過した場合は、1〜2 分待ってから再試行するのが妥当です。

リクエスト数の制限に加え、Standard Basic のアクセスレベルでは、recent search および filtered stream の endpoints から月あたり最大 500,000 件の Posts を取得できます。月間の Posts 上限を超えた場合は、App が通知を出し、毎月の更新日を把握したうえでその日までリクエストを控えるほうが適切です。

レートリミットを避けるためのヒント

以下のヒントは、防御的なコーディングを行い、レートリミットに達する可能性を減らすためのものです。提供したいアプリケーション機能の中には、特に結果の鮮度に関しては、レートリミットの制約下では実現が難しい(あるいは不可能な)ものもあります。アプリケーションでリアルタイムの情報提供を目指す場合は、filtered および sampled の stream endpoint を検討してください。

キャッシュ

頻繁に利用する場合は、API レスポンスを保存しましょう。ページが読み込まれるたびに毎回 API を呼び出すのではなく、レスポンスをローカルにキャッシュします。

アクティブなユーザーを優先する

サイトで多数のXユーザーを追跡している場合(例:現在のステータスやXの利用状況に関する統計の取得)、最近サイトにサインインしたユーザーに対してのみdataのリクエストを行うことを検討してください。

検索結果に合わせて調整する

アプリケーションで多数の検索語を監視する場合、結果が出ない検索よりも、結果が出る検索をより高い頻度で実行してください。バックオフを用いることで、人気のあるqueryは最新の状態を保ちつつ、めったに変化しないqueryへの不要なリクエストを抑制できます。あるいは、Filtered stream endpointの利用を検討し、検索queryでフィルタリングする方法もあります。

否可リスト

アプリケーションがレートリミットを乱用した場合、拒否されます。拒否された App は X API からの応答を受け取れません。あなた、またはあなたのアプリケーションが拒否され、それが誤りだと思われる場合は、Platform Support forms からサポートを依頼できます。次の情報を含めてください。
  1. あなたのアプリケーションが拒否されたと考える理由を説明してください。
  2. すでにレートリミットの対象でなくなっている場合は、どのように問題を解決したかを詳細に記述してください。
I