Twitterの「レート制限超過」の原因と解消方法
「Rate limit exceeded」は、アカウント、そこにつないだアプリ、またはあなたのコードが短時間に多くのリクエストを送ったため、Xが1つの操作を一時停止したという意味です。X APIの枠は15分以内、アカウントの上限は数時間から1日でリセットされます。
要点: 画面の更新や再試行は、そのたびに数えられるのでやめて、枠が過ぎるのを待ちます。コードでは x-rate-limit-reset の時刻まで待機してください。ただし、種類が usage-capped の429は、Xの次の課金サイクルまで解除されません。15分の枠に縛られずにコードからXのデータを読むなら、Sorsa APIが使えます。制限は毎秒20リクエストの1つだけで、まずは100回分の無料リクエストで試せます。
- エンドポイント
POST /search-tweets- 毎秒20リクエスト
- 料金
- 1,000件あたり$0.07から
#Xの「Rate limit exceeded」の意味
「Rate limit exceeded」は、上限を超えたことを知らせるXのメッセージです。レート制限とは、一定の時間枠のなかで、アカウント、アプリ、プログラムが1つの操作を行える回数の上限です。Xは、閲覧、投稿、フォロー、メッセージ送信、そしてAPIの全エンドポイントごとに、この上限を設けています。
どの上限に達したかは、メッセージが出た場所で分かります。Xのアプリやx.comなら、あなた自身のアカウントの制限です。連携ツールやxcancelのような閲覧サイトなら、そのツールのXへのアクセスの制限です。自分のコードではHTTP 429として返ってきます。レスポンス全体とリセット時刻の読み方は、X APIのエラーコードのガイドで解説しています。
メッセージが表示された場所を選ぶと、背後にある制限、続く期間、対処法が表示されます。
Xは、制限の目的をシステムへの負荷の軽減とダウンタイムの削減だと説明しています。サイトの利用が集中する時間帯には、全員に対して制限が引き下げられることもあるとしています。同じ使い方でも、空いている日は問題なく、混んでいる日は制限にかかることがあります。
#Twitterのレート制限はどのくらい続くか
Xのレート制限の多くは、15分から1日のあいだで解除されます。待ち時間は、どの上限に達したかで変わります。それぞれが独自の時計で動いているためです。公式X APIのエンドポイントの枠は、ほとんどが15分以内にリセットされます。投稿のアカウント上限は数時間、メッセージとフォローの上限は1日かかります。
- 投稿とリプライは数時間で戻ります。Xは1日の上限を30分ごとの区切りで数えていて、数時間後にもう一度試すよう案内します。
- ダイレクトメッセージとフォローは、その日の制限が過ぎると戻ります。
- サードパーティアプリは1時間単位の制限を共有しているため、1時間以内に再び使えるようになります。
- 公式X APIの枠は、
x-rate-limit-resetヘッダーのUnix時間に再開します。大半のエンドポイントは15分、一部は24時間です。 - 閲覧の制限には、公表された継続時間がありません。
閲覧の制限は、スクロール中に多くの人が出会うものです。同時に、Xが制限のページ(新しいタブで開きます)に載せたことのない、唯一の制限でもあります。2023年7月、Xは閲覧を、認証済みアカウントは1日6,000投稿、未認証は600投稿、新規アカウントは300投稿に制限し、一時的な措置だとしました。ロイターが報じた(新しいタブで開きます)とおりです。その後、現行の数値は公表されていません。数値を載せているページは推測で書いています。
知っておきたいこと
Xの制限ページには、未認証アカウントの上限として1日50投稿・200リプライと書かれていますが、さらに下の段落には1日2,400件の更新という記述がまだ残っています。現行のルールは箇条書きのほうです。Xは2026年5月に上限を引き下げました。PCMagが報じています(新しいタブで開きます)。2,400件と書いているガイドは、古い記述をそのまま写しています。
#Xアプリで「レート制限超過」を解消する方法
Xのアプリやx.comで「レート制限超過」を解消するには、制限にかかった操作をやめ、Xを閉じて、上記の時間だけ待ちます。アカウントの上限は、こちら側の操作で早めに解除することはできません。
-
更新をやめます。 再読み込みのたびにXへ投稿を要求することになり、同じ制限に数えられます。
-
どの操作かを特定します。 スクロール、投稿、フォロー、メッセージ送信には、それぞれ別の上限があります。待ち時間は上の判別表で確認できます。
-
使っていないアプリの連携を解除します。 「設定とプライバシー」から「セキュリティとアカウントアクセス」、「アプリとセッション」の順に開き、不要なツールの接続を取り消します。これらはすべて1時間単位のAPI制限を共有しています。
-
自分だけの問題かを確認します。 Xは、サイトの負荷が高いときに全アカウントの制限を引き下げ、ステータスサイトで案内します。友人にも同じメッセージが出ているなら、待つのはXの側の事情です。
-
一度だけ試します。 待ち時間が過ぎたら、操作を1回だけ行い、通ることを確認してから続けてください。
ログアウトして入り直す、別のブラウザーや端末に切り替える、別のネットワークに移るといったことでは、アカウントの上限はリセットされません。Xは、アカウントの操作をすべての端末とAPIを合わせて数えているため、新しいセッションでも同じカウンターが適用されます。
#コードで X APIの429エラーを解消する方法
公式X APIの429は、2種類の制限のどちらかを意味します。数分で解除されるのは片方だけなので、待機する前にエラーの種類を確認してください。Xのエラーリファレンス(新しいタブで開きます)では、同じステータスの背後にある、レート制限と利用上限の両方が挙げられています。
一般的なのは枠の制限です。各エンドポイントは、15分ごと(一部は24時間ごと)に決まった回数のリクエストを許可していて、Bearerトークンならアプリ単位、OAuthトークンならユーザー単位で数えます。すべてのレスポンスに付く3つのヘッダーで、現在の状況が分かります。x-rate-limit-limit、x-rate-limit-remaining、そして秒単位のUnix時間である x-rate-limit-reset です。remaining が0になると、その時刻まで、すべての呼び出しがエラーコード88つきの429を返します。エンドポイントごとの数値は、X APIのレート制限のガイドにまとめています。
利用上限は月単位です。従量課金のアクセスは、課金サイクルあたり300万件の投稿読み取りで止まります。それを超えると、サイクルが終わるかEnterprise契約に移るまで、すべての読み取りが種類 usage-capped の429を返します。リセット時刻に再試行しても、試行回数を消費するだけです。開発者コンソールで設定した支出上限も、次のサイクルまで同じようにリクエストを止めます。クレジット残高が0のときは、クレジットを追加するまで止まります。
次のハンドラーは、枠の制限ならリセットまで待機し、利用上限なら停止します。
import time
import requests
def get_x(url, headers, params=None):
while True:
r = requests.get(url, headers=headers, params=params, timeout=30)
if r.status_code != 429:
r.raise_for_status()
return r.json()
if "usage-capped" in r.text:
raise RuntimeError("X usage cap: wait for the next billing cycle")
reset = int(r.headers.get("x-rate-limit-reset", time.time() + 60))
time.sleep(max(reset - time.time(), 1) + 1)
呼び出しを枠の全体に分散させると、次の429を避けられます。たとえば直近検索はアプリあたり15分に450リクエストまで許可されるので、2秒に1回のペースなら上限に達しません。メッセージが、リクエストが自動化されたものに見えると言っている場合は、レート制限ではありません。その原因は別にあり、Xが「自動化されたリクエスト」と判定する理由で解説しています。
#ほとんど何もしていないのにレート制限される場合
数回の操作でレート制限を受けることがあるのは、カウントに自分の操作以外が含まれるからです。バックグラウンドで動くアプリ、共有サービス、混雑した日にXが引き下げる制限が該当します。
- 連携アプリ。 スケジューラー、分析ツール、フォロワー追跡ツールは、あなたのアカウントの1時間単位のAPI制限を共有して消費します。寝ているあいだに合算で使い切ることがあります。
- 共有の閲覧サイト。 xcancelやNitterのインスタンスは、訪問者全員に代わってXを読み取っています。そのサイトがXの制限にかかると、開いた全員に「レート制限」と表示されます。あなた自身のアカウントは関係ありません。
- 埋め込みタイムライン。 ウェブサイトに埋め込まれたXのタイムラインは、Xの埋め込みサービス経由で読み込まれます。このサービスが、サイトに対して独自の429を返すことがあります。
- 混雑した日。 利用が集中すると、Xは全員の制限を引き下げることがあります。別の日なら通る通常の使い方でも、制限にかかります。
どれにも当てはまらず、メッセージが出ないまま投稿が人に届かなくなっただけなら、原因はレート制限ではありません。下のシャドウバンについてのFAQを確認してください。
#Sorsa APIなら毎秒20リクエストでXのデータを読み取れる
コードから公開Xデータを読み取るなら、Twitter(X)API兼スクレイピングツールであるSorsa APIは、エンドポイントごとの枠ではなく、1つの制限だけです。全プランで、APIキーあたり毎秒20リクエスト(新しいタブで開きます)です。ここで429が返るのは、1秒間に20回を超える呼び出しがあったという意味で、次の1秒には再び使えます。
必要なのは、ApiKey ヘッダーに入れるAPIキー1つだけです。Xの開発者アカウントもOAuthも不要で、Xのログイン情報を求めることもないため、Xアカウントが危険にさらされることはありません。セットアップの手順は、開発者アカウントなしのTwitter APIのガイドで説明しています。Sorsa APIが読み取るのは公開データだけで、投稿はしません。投稿が必要なら、公式X APIと組み合わせてください。
並べて比べると、Sorsa APIは毎秒リセットされ、300万件の読み取り上限もありません。公式X APIはエンドポイントごとにリセットされ、月間300万件の投稿読み取りで止まります。
| Sorsa API | 公式X API | |
|---|---|---|
| レート制限 | キーあたり毎秒20リクエスト(全プラン) | エンドポイント単位、アプリ単位、ユーザー単位。多くは15分ごと |
| 429の意味 | 1秒間に20リクエスト超 | 枠が尽きた、または利用上限に達した |
| 再試行の時期 | 次の1秒 | x-rate-limit-reset の時刻、または次の課金サイクル |
| 月間の上限 | プランのリクエスト数(超過分は追加リクエストで対応) | 300万件の投稿読み取り、その先はEnterpriseで月約$42K〜 |
| 1,000投稿あたりの料金 | IDで取得なら$0.014から、検索なら$0.07から | $5.00 |
| アクセス | APIキー1つ | 開発者アカウントとOAuth |
レート制限
- Sorsa API
- キーあたり毎秒20リクエスト(全プラン)
- 公式X API
- エンドポイント単位、アプリ単位、ユーザー単位。多くは15分ごと
429の意味
- Sorsa API
- 1秒間に20リクエスト超
- 公式X API
- 枠が尽きた、または利用上限に達した
再試行の時期
- Sorsa API
- 次の1秒
- 公式X API
x-rate-limit-resetの時刻、または次の課金サイクル
月間の上限
- Sorsa API
- プランのリクエスト数(超過分は追加リクエストで対応)
- 公式X API
- 300万件の投稿読み取り、その先はEnterpriseで月約$42K〜
1,000投稿あたりの料金
- Sorsa API
- IDで取得なら$0.014から、検索なら$0.07から
- 公式X API
- $5.00
アクセス
- Sorsa API
- APIキー1つ
- 公式X API
- 開発者アカウントとOAuth
2026年11月22日から、公式X APIは各投稿に付く投稿者にも1ユーザーあたり$0.010を課金します(Xのお知らせ(新しいタブで開きます))。Sorsa APIでは、すべてのツイートが同じリクエストの中に投稿者のプロフィール全体を含みます。Xの料金表の残りは、X APIの料金の解説にあります。
-
キーを取得します。 登録して、ダッシュボードからAPIキーをコピーします。最初の100リクエストは無料です。
-
1回のリクエストで検索します。
POST /search-tweets(新しいタブで開きます) は、Xの任意の検索クエリを受け取り、1ページあたり約20件の投稿を返します。次のページ用にnext_cursorも付きます。Terminal curl -X POST "https://api.sorsa.io/v3/search-tweets" \ -H "ApiKey: YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{"query": "from:ratelimit_fix_demo", "order": "latest"}'Response200 OK { "tweets": [ { "id": "2117203385470271488", "full_text": "Paced reads, no 15-minute windows.", "created_at": "2026-11-02T10:41:07Z", "lang": "en", "likes_count": 12, "retweet_count": 3, "reply_count": 1, "view_count": 1840, "user": { "id": "1592041833471827968", "username": "ratelimit_fix_demo", "display_name": "Rate Limit Demo", "followers_count": 920 } } ], "next_cursor": "DAACCgACG1x7rWyAJxAKAAMbXHutbH_YUwgABAAAAAEAAA" } -
全速でページをたどります。
next_cursorが空で返ってくるまで送り返し、呼び出しの間に20分の1秒の間隔を置き、429が返ったら1秒待ちます。import time import requests URL = "https://api.sorsa.io/v3/search-tweets" HEADERS = {"ApiKey": "YOUR_API_KEY"} def search_all(query, max_pages=100): body, tweets, pages = {"query": query, "order": "latest"}, [], 0 while pages < max_pages: r = requests.post(URL, json=body, headers=HEADERS, timeout=30) if r.status_code == 429: # over 20 requests in one second time.sleep(1) continue r.raise_for_status() # 403: the key's requests ran out page = r.json() tweets += page.get("tweets", []) pages += 1 if not page.get("next_cursor"): break body["next_cursor"] = page["next_cursor"] time.sleep(0.05) # stays under 20 requests per second return tweets print(len(search_all("from:ratelimit_fix_demo"))) -
残高を確認します。
GET /key-usage-info(新しいタブで開きます) は、残りリクエスト数とその更新日を返し、この確認自体は無料です。403が返ったら、キーのリクエストを使い切っています。
#レート制限の枠を待つのをやめる
Xの「Rate limit exceeded」は、時間がたてば自然に解除されます。公式X APIの枠の大半は15分、アカウントの上限は数時間から1日、300万件の投稿読み取り上限は次の課金サイクルです。コードでXのデータを読んでいて何度もこの制限にかかるなら、読み取りをSorsa APIに移してください。全プラン、キーあたり毎秒20リクエストという1つの制限だけで、投稿は1,000件あたり$0.014からです。今日から使える100回分の無料リクエストで試せます。
#よくある質問
「Rate limit exceeded」はシャドウバンと同じですか?
いいえ。レート制限はエラーを表示し、枠が過ぎるまで1つの操作を止めます。シャドウバンは投稿を見られる相手を制限し、メッセージは一切表示されません。Xの制限ページには、各レート制限と解除までの流れが記載されています。エラーが出ないまま投稿が人に届かなくなった場合は、Twitterのシャドウバンとはを読んで、アカウントを確認してください。
Twitterのレート制限を回避できますか?
設定、ブラウザー、拡張機能、ネットワークのどれを変えても、Xのアカウント上限は解除できません。Xは、すべての端末とAPIを合わせて操作を数えるからです。対処は待つことだけです。アカウントの上限は数時間から1日でリセットされ、各上限はXの制限ページに載っています。
X Premiumでレート制限はなくなりますか?
X Premiumは一部の制限を緩和しますが、なくしはしません。Xの制限ページでは、50投稿・200リプライの上限は未認証アカウントに適用されるため、認証済みのPremiumアカウントはその数値に縛られません。2023年には、認証済みアカウントの閲覧上限が10倍高く設定されました。1日500件のダイレクトメッセージと400件のフォロー、そして公式X APIの枠は、どの階層でも変わりません。
X APIのエラーコード88は何を意味しますか?
エラーコード88は、公式X APIの「Rate limit exceeded」です。1つのエンドポイントの枠で、あなたのアプリまたはユーザーの残りリクエストがなくなると、HTTP 429とともに返ります。秒単位のUnix時間である x-rate-limit-reset ヘッダーを読み、その時刻まで待ってください。大半の枠は15分以内にリセットされます。それより早く再試行しても、また429が返るだけで何も変わりません。
レート制限エラーなしでTwitterデータを読み取るには、どのAPIを使えばよいですか?
コードからTwitter/Xのデータを読み取るなら、Sorsa APIを使ってください。全プランでAPIキーあたり毎秒20リクエストという制限が1つあるだけで、15分の枠も月間300万件の投稿読み取り上限もありません。投稿は1,000件あたり$0.014からで、公式X APIの$5.00を大きく下回ります。キー1つで使え、開発者アカウントは不要です。最初の100リクエストは無料です。
#検証の方法
2026年11月2日に、ブラウザーでXの制限ページを読み、レート制限、レスポンスコード、従量課金の料金に関するXの開発者向けリファレンスと、45のエンドポイントを持つ公開中のSorsa APIリファレンスを確認しました。このページのリクエストとコードはそれらのリファレンスに沿っています。レスポンスはデモアカウントで作った抜粋例で、実際に記録した呼び出しではありません。
出典
- About X limits, X Help Center(新しいタブで開きます)
- X API rate limits, X developer docs(新しいタブで開きます)
- Response codes and errors, X developer docs(新しいタブで開きます)
- X API pay-per-usage pricing, X developer docs(新しいタブで開きます)
- X API expansions billing update, X Developers forum(新しいタブで開きます)
- X will now limit how much some users can post, PCMag via Yahoo Tech(新しいタブで開きます)
- What does Twitter "rate limit exceeded" mean for users?, Reuters(新しいタブで開きます)
- Rate limits, Sorsa API docs(新しいタブで開きます)