WEIR

X API レート制限 2026:エンドポイント別の上限と 429 対策

X API のレート制限をエンドポイント別の表で確認。アプリとユーザーの違い、x-rate-limit ヘッダー、429 Too Many Requests をリセットまで待つ Python まで。


公開 · 更新 · 約 7 分で読めます · Read in English · 阅读中文版

カバー画像:15 分ごとのリクエスト上限

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
15 分X のレート制限のよくある単位
45015 分あたりの最近の検索(アプリ)
300 万月に読めるポストの上限

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 つの枠ですべての呼び出しを数え、料金は結果の数で決まります。枠は、累計の購入額で大きくなります。

Weir の 1 分あたりのリクエスト数(2026 年 10 月)
無料30
ティア 1(累計 $5)120
ティア 2(累計 $100)300
ティア 3(累計 $500)600

重い呼び出しは多めに数えます。検索は 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 日に確認しました。