X API レート制限 2026:エンドポイント別の上限と 429 対策
X API のレート制限をエンドポイント別の表で確認。アプリとユーザーの違い、x-rate-limit ヘッダー、429 Too Many Requests をリセットまで待つ Python まで。
Tarun Khatri
公開 · 更新 · 約 7 分で読めます · Read in English · 阅读中文版
X API のレート制限は、エンドポイントごとに決まったリクエスト数の上限で、多くは 15 分ごとにリセットされます。
X(旧 Twitter)の API で 429 Too Many Requests が続く人向けです。今の上限、ヘッダー、私たちが試した再試行のループをまとめました。
残りの回数は 1 回の呼び出しで確かめられ、費用はユーザー 1 件の読み取り分です。
curl -s -D - -o /dev/null "https://api.x.com/2/users/by/username/XDevelopers" \
-H "Authorization: Bearer $X_BEARER_TOKEN" | grep -i x-rate-limit
X API のレート制限:エンドポイント別の一覧(2026 年 10 月)
X のレート制限のページで、10 月 26 日に確かめた主な読み取りの上限です。数字は 15 分あたりです。
| エンドポイント | アプリごと | ユーザーごと |
|---|---|---|
| 最近の検索 | 450 | 300 |
| 全期間の検索 | 300(毎秒 1 回) | 毎秒 1 回 |
| ユーザーの取得(ID、ユーザー名) | 300 | 900 |
| ユーザーのタイムライン(ID で指定) | 10,000 | 900 |
| メンションのタイムライン | 450 | 300 |
| フォロワー、フォロー | 300 | 300 |
| ポストの取得(複数の ID) | 3,500 | 5,000 |
落とし穴が 1 つあります。ユーザー名で指定するタイムラインは、アプリごとに 1,500 だけです。数値の ID を一度調べて使い回せば、10,000 の枠を使えます。
1 日単位の上限は、ほとんどが書き込みです。アプリが作れるポストは、1 日 10,000 件までです。いいねは、ユーザーごとに 1 日 1,000 件までです。
アプリの上限とユーザーの上限、どちらが使われる?
使われる列は、トークンで決まります。X のページによると、次のとおりです。
- Bearer Token はアプリごとの上限:エンドポイントごとの枠を、アプリ全体で共有します。
- OAuth 1.0a と OAuth 2.0 のユーザートークンはユーザーごと:ログインした人ごとに数えます。
どちらの列が大きいとは限りません。ユーザーの取得はユーザーごとのほうが多く、ユーザーのタイムラインはアプリごとのほうがずっと多いです。
x-rate-limit ヘッダーの読み方
X API の応答に付く 3 つのヘッダーを、X のドキュメントの例で見てみます。
x-rate-limit-limit: 900
x-rate-limit-remaining: 847
x-rate-limit-reset: 1705420800
x-rate-limit-limitは、このエンドポイントの枠の全体です。x-rate-limit-remainingは残りの回数で、0 なら次の呼び出しは 429 になります。x-rate-limit-resetは枠がリセットされる時刻で、秒単位の Unix タイムスタンプです。
待つ時間は、リセットの時刻から今の時刻を引き、余裕に 1 秒を足して求めます。
レート制限、月の上限、残高不足:3 つの止まり方
X がリクエストを断る理由は 3 つあり、枠のリセットで直るのは 1 つだけです。
- レート制限の 429:枠の中で呼びすぎました。
x-rate-limit-resetまで待ちます。 - 月の利用上限も 429:X の料金ページでは、従量課金で読めるポストは 1 請求期間に 300 万件までです。エラーの type は
usage-cappedで終わります。 - 残高不足の 402:直るのは購入だけです。X API の 402 エラーの対処 を見てください。
自分で決めた利用上限が、4 つ目です。X の料金ページによると、達すると次の請求期間までリクエストが止まります。
レート制限と課金は別々です。X のレート制限のページは、上限の範囲内でも「利用料金はかかる」と書いています。
429 Too Many Requests の直し方:X API のリセットまで待つ
リセットまでスリープし、試す回数に上限を付け、月の上限なら止めます。この関数は remaining が 0 のときも待つので、たいていの 429 はそもそも起きません。
import time, requests
def sleep_until_reset(r):
reset = int(r.headers.get("x-rate-limit-reset", time.time() + 60))
time.sleep(max(reset - time.time(), 0) + 1)
def x_get(url, headers, params=None, tries=4):
for _ in range(tries):
r = requests.get(url, headers=headers, params=params, timeout=30)
if r.status_code != 429:
if r.headers.get("x-rate-limit-remaining") == "0":
sleep_until_reset(r) # 次の呼び出しは 429 になる
return r
if "usage-capped" in r.text:
raise RuntimeError("月の上限です。枠のリセットでは解除されません。")
sleep_until_reset(r)
return r
X のドキュメントの例は毎回 60 秒以上待ちますが、この関数はリセットが示す時間だけ待ちます。
2026 年 10 月 22 日に、X のヘッダーを返すローカルのスタブで試しました。テストが早く終わるよう、枠は 10 秒に 3 回にしました。
15:41:16 NASA 200 remaining 2
15:41:16 github 200 remaining 1
15:41:28 XDevelopers 200 remaining 0
15:41:28 Google 200 remaining 2
3 回目で最後の 1 回を使ったので、x_get はリセットまでスリープしてから応答を返しました。
本物の 429 を起こすと、12 秒待って 200 を受け取りました。usage-capped の本文では、すぐに止まりました。
ほかのエラーコードや Tweepy の wait_on_rate_limit は、X API のエラーコード(英語)にあります。
X のレート制限のページに書かれていないこと
10 月 26 日に探しても、次の点は見つかりませんでした。
- 枠の数え方:固定か、スライディングかは書かれていません。
- 月の上限の 429 の中身:そのときの
x-rate-limit-resetの意味は書かれていません。 - 利用上限のステータスコード:止まることだけで、コードはありません。
- Enterprise の数字:上限は個別で、公開されていません。
迷ったら、自分の応答に付いたヘッダーを信じてください。
Weir のレート制限:1 分に 1 つの枠、課金は結果ごと
Weir は私たちが運営する、公開の X と Reddit を読む API です。その前提で読んでください。
エンドポイントごとの枠はなく、1 分に 1 つの枠ですべての呼び出しを数え、料金は結果の数で決まります。枠は、累計の購入額で大きくなります。
重い呼び出しは多めに数えます。検索は 2 回分なので、無料の枠では 1 分に 15 回です。
課金される応答には、ratelimit-limit、ratelimit-remaining、ratelimit-reset が付きます。429 には、秒数の Retry-After も付きます。
import os, time, requests
HEADERS = {"Authorization": f"Bearer {os.environ['WEIR_API_KEY']}"}
def weir(method, path, tries=4, **kwargs):
for _ in range(tries):
r = requests.request(method, f"https://api.weirapp.io{path}",
headers=HEADERS, timeout=60, **kwargs)
if r.status_code != 429:
return r # 402 は再試行しない:止めてクレジットを追加
wait = int(r.headers.get("Retry-After", "5"))
print(f" 429, Retry-After {wait}s")
time.sleep(wait)
return r
Weir の制限のコードを写したスタブに、無料の枠の設定で 17 回の検索を送りました。15 回が通り、そのあとはこうなりました。
16:00:15 15 200 0
429, Retry-After 49s
16:01:04 16 200 0
429, Retry-After 4s
16:01:08 17 200 0
待ったあとの再試行は、すべて通りました。枠は 1 分のスライディングウィンドウなので、先に送った分が抜けるまで待ちます。
Weir では、断られた呼び出しは無料です。
ティアごとの上限は、Weir の料金 のページにもあります。
Weir が向かないケース
- 投稿、いいね、フォローをしたい:Weir は読むだけなので、書き込みには X の API が必要です。
- X 自身との契約が必要:月の上限を超える Enterprise の量も、ここに入ります。
- 自分のアカウントを読む:2026 年 10 月時点で、X の Owned Reads は 1 件 $0.001 です。
- 1 ポストの単価だけが大事:TwitterAPI.io は 1,000 ツイート $0.15 で、Weir の小さなパックより安いです。
Weir は X の公認ではないので、使える範囲が変わることがあります。全体の比較は Weir と公式 X API の比較(英語)にあります。
よくある質問
X API のレート制限はいくつですか?
エンドポイントとトークンで変わります。最近の検索は 15 分あたり、アプリで 450 回、ユーザーごとに 300 回です。ユーザーの取得は、アプリで 300 回、ユーザーで 900 回です。
X API の制限はどのくらい続きますか?
x-rate-limit-reset の時刻までで、多くの読み取りでは 15 分以内です。1 日単位の上限もあります。月の利用上限は請求期間ごとに数えるので、その 429 は次の枠では消えません。
Twitter API のレート制限は、アプリ単位?ユーザー単位?
両方あります。Bearer Token ならアプリの枠、ユーザーのトークンならそのユーザーの枠を使います。X はエンドポイントごとに両方の数字を載せていて、違うことがよくあります。
X API の 429 にも料金はかかりますか?
かかりません。X の利用と請求のページによると、課金されるのはデータを返した成功の応答だけです。429 はデータを返さないので無料ですが、時間は失います。
参考資料
X の資料は、2026 年 10 月 26 日に確認しました。
- X API rate limits(英語):https://docs.x.com/x-api/fundamentals/rate-limits
- X API response codes and errors(英語):https://docs.x.com/x-api/fundamentals/response-codes-and-errors
- X API usage and billing(英語):https://docs.x.com/x-api/fundamentals/post-cap
- X API pricing(英語):https://docs.x.com/x-api/getting-started/pricing
- X pay-per-use developer agreement, Section III(D)(英語):https://docs.x.com/developer-terms/ppu-agreement
- TwitterAPI.io pricing(英語、10 月 26 日に確認):https://twitterapi.io/pricing
- Weir errors and rate limits(英語):https://docs.weirapp.io/errors
- Weir billing and tiers(英語):https://docs.weirapp.io/billing
- X のヘッダーと Weir の制限を写した、ローカルのスタブでの実測(10 月 22 日)