Twitter 提示 rate limit exceeded:怎么解决
“Rate limit exceeded” 表示你的账号、账号下的某个应用或你的代码在短时间内发出了太多请求,X 暂停了某项操作;X API 的窗口在 15 分钟内重置,账号限额在几小时或一天内恢复。
简短回答: 先别刷新,也别重试,因为每次尝试都会计数,等窗口过去就行。在代码里,就睡眠到 x-rate-limit-reset 给出的时间;类型为 usage-capped 的 429 则要等到 X 的下一个计费周期。如果想在代码里读取 X 数据而不受 15 分钟窗口限制,可以用 Sorsa API:只有一个每秒 20 次请求的限制,并附 100 次免费请求供你上手。
- 接口
POST /search-tweets- 速率限制
- 每秒 20 次请求
- 价格
- 每 1,000 条结果 $0.07 起
#X 上的 “rate limit exceeded” 是什么意思
“Rate limit exceeded” 是 X 在告诉你,你碰到了某个上限。速率限制,就是限定一个账号、一个应用或一个程序在固定时间窗口内某项操作最多能做多少次,X 对读取、发帖、关注、私信以及 API 的每个接口都设有这样的限制。
你碰到的是哪一种限制,取决于提示出现在哪里。在 X 应用或 x.com 上,这是对你自己账号的限制。在已授权的工具或 xcancel 这类阅读站里,这是那个工具访问 X 的额度。在你自己的代码里,它以 HTTP 429 的形式出现,X API 错误码指南解释了整个响应,包括重置时间。
选择消息出现的位置,查看背后的限制、持续时间和应对办法。
X 说,这些限制是为了减轻系统压力、减少宕机,并且在网站使用高峰期,限额可能对所有人下调。同样的操作习惯,在清闲的日子里没事,到了繁忙的日子可能就触发限制。
#Twitter 的速率限制要持续多久
X 上大多数速率限制持续 15 分钟到一天,要等多久取决于你碰到的是哪个上限:每个上限各有自己的计时。官方 X API 的接口窗口大多在 15 分钟内重置;账号的发帖上限要几个小时,私信和关注的上限则要一天。
- 发帖和回复在几小时内恢复:X 把每日上限切成半小时一段来计数,并让你几小时后再试。
- 私信和关注在当天的限额过去后恢复。
- 第三方应用共用一个按小时计的限额,所以一小时内就能恢复使用。
- 官方 X API 的窗口在
x-rate-limit-reset响应头给出的 Unix 时间重新开放:大多数接口是 15 分钟,少数是 24 小时。 - 读取限制根本没有公布过持续时间。
大多数人在刷时间线时遇到的就是读取限制,也是 X 唯一从未写进限制页面(在新标签页打开)的一项。2023 年 7 月,X 把读取量限制为已认证账号每天 6,000 条帖子、未认证账号 600 条、新账号 300 条,并称这些限制是临时的,路透社报道(在新标签页打开)过此事。此后再没有公布过当前数字,所以引用某个数字的页面都只是在猜。
须知
X 的限制页面写着未认证账号每天 50 条帖子和 200 条回复,但再往下一段仍然提到每天 2,400 条更新。列表里的才是现行规则:X 在 2026 年 5 月下调了上限,PCMag 有报道(在新标签页打开)。引用 2,400 的指南抄的是过时的那一行。
#在 X 应用里怎么解决 “rate limit exceeded”
要解决 X 应用或 x.com 上的 “rate limit exceeded”,先停下触发它的操作,关掉 X,等过上面列出的时间。你这边做什么都不能让账号限额提前重置。
-
别再刷新。 每次刷新都会向 X 再要一批帖子,并计入同一个限额。
-
找出是哪个操作。 滚动浏览、发帖、关注和私信各有自己的上限;上面的对照表给出了每一项要等多久。
-
断开不用的应用。 在“设置和隐私”里打开“安全和账号访问”,再进入“应用和会话”,撤销你不再需要的工具:它们共用同一个按小时计的 API 限额。
-
确认是不是所有人都这样。 网站负载很高时,X 会下调所有账号的限额,并在状态网站上发布说明。如果朋友们也看到同样的提示,那这次要等的是 X。
-
只试一次。 等待结束后,做一个操作,确认能成功,再继续。
退出再登录、换一个浏览器或设备、换一个网络,都不会重置账号限额。X 对账号操作的计数来自所有设备和 API,所以新的会话面对的是同一个计数器。
#在代码里怎么解决 X API 的 429 错误
官方 X API 返回的 429 可能指两种限制,只有一种几分钟就能解除,所以睡眠之前要先看错误类型。X 的错误参考(在新标签页打开)把两者列在同一个状态码下:速率限制,或使用量上限。
窗口限制最常见。每个接口在每 15 分钟内(少数是每 24 小时)允许固定次数的请求,使用 Bearer 令牌时按应用计,使用 OAuth 令牌时按用户计。每个响应里的三个响应头会告诉你当前的情况:x-rate-limit-limit、x-rate-limit-remaining 和 x-rate-limit-reset,后者是以秒为单位的 Unix 时间。remaining 一旦降到 0,在那个时间之前每次调用都会返回 429 和错误码 88。每个接口的具体数字见我们的 X API 速率限制指南。
使用量上限是按月计的。按量付费的访问方式,每个计费周期最多读取 300 万条帖子,超过之后,每次读取都会返回 429,类型是 usage-capped,直到周期结束或你改签 Enterprise 合同为止,所以到重置时间再重试只是白白消耗尝试次数。在开发者控制台里设置的消费上限,也会以同样的方式阻止请求,直到下个周期;额度余额降到零,则会一直阻止到你充值为止。
下面这个处理函数,遇到窗口限制就睡眠到重置时间,遇到使用量上限就停止:
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 秒一次请求永远不会碰到上限。如果提示说你的请求看起来是自动化的,那根本不是速率限制;这个错误另有原因,见为什么 X 说请求看起来是自动化的。
#明明没做什么却被限流
只做了寥寥几个操作就被限流,是因为计数里不只有你自己的点击:后台运行的应用、共用的服务,以及 X 在繁忙日子里下调的限额,都算在内。
- 已授权的应用。 定时发帖工具、分析工具和粉丝追踪工具,都在占用你账号那同一个按小时计的 API 限额,所以你睡觉的时候它们加起来就可能把额度用光。
- 共用的阅读站。 xcancel 和 Nitter 实例替每位访客读取 X。其中一个碰到 X 的限制时,所有打开它的人都会看到 “rate limited”,这和你自己的账号无关。
- 嵌入的时间线。 嵌在网站里的 X 时间线通过 X 的嵌入服务加载,该服务可能对网站返回它自己的 429。
- 繁忙的日子。 使用高峰期,X 可能对所有人下调限额,所以一次正常的使用,换个日子本来没事,这天却可能触发限制。
如果这些都对不上,而你的帖子只是在没有任何提示的情况下突然没人看到了,那原因就不是速率限制:请看下面关于 shadowban 的常见问题。
#用 Sorsa API 以每秒 20 次请求读取 X 数据
在代码里读取公开的 X 数据,Sorsa API 这款 Twitter(X)API 与爬虫只有一个限制,而不是按接口分窗口:每个 API 密钥每秒 20 次请求(在新标签页打开),所有套餐一致。那里的 429 表示一秒内发出了超过 20 次调用,下一秒就可以恢复。
它只需要在 ApiKey 请求头里放一个 API 密钥,不需要 X 开发者账号,也不用 OAuth,并且从不要求你的 X 登录信息,所以你的 X 账号不会有风险;我们的没有开发者账号也能用 Twitter API指南讲了这套配置。Sorsa API 只读取公开数据,从不发帖;要发帖,请搭配官方 X API。
并排来看,Sorsa API 每秒重置,没有 300 万条读取的天花板,而官方 X API 按接口重置,每月最多读取 300 万条帖子:
| Sorsa API | 官方 X API | |
|---|---|---|
| 速率限制 | 每个密钥每秒 20 次请求,所有套餐一致 | 按接口、按应用、按用户计,多数为每 15 分钟 |
| 429 的含义 | 一秒内超过 20 次请求 | 某个窗口用完了,或达到了使用量上限 |
| 何时重试 | 下一秒 | x-rate-limit-reset,或下一个计费周期 |
| 每月上限 | 你套餐内的请求,超出部分可另购额外请求 | 300 万条帖子读取,再往上是 Enterprise,每月约 $4.2 万起 |
| 每 1,000 条帖子的价格 | 按 ID 读取 $0.014 起,按搜索读取 $0.07 起 | $5.00 |
| 接入方式 | 一个 API 密钥 | 开发者账号和 OAuth |
速率限制
- Sorsa API
- 每个密钥每秒 20 次请求,所有套餐一致
- 官方 X API
- 按接口、按应用、按用户计,多数为每 15 分钟
429 的含义
- Sorsa API
- 一秒内超过 20 次请求
- 官方 X API
- 某个窗口用完了,或达到了使用量上限
何时重试
- Sorsa API
- 下一秒
- 官方 X API
x-rate-limit-reset,或下一个计费周期
每月上限
- Sorsa API
- 你套餐内的请求,超出部分可另购额外请求
- 官方 X API
- 300 万条帖子读取,再往上是 Enterprise,每月约 $4.2 万起
每 1,000 条帖子的价格
- Sorsa API
- 按 ID 读取 $0.014 起,按搜索读取 $0.07 起
- 官方 X API
- $5.00
接入方式
- Sorsa API
- 一个 API 密钥
- 官方 X API
- 开发者账号和 OAuth
从 2026 年 11 月 22 日起,官方 X API 还会对随每条帖子返回的作者另行计费,每位用户 $0.010(见 X 的通知(在新标签页打开)),而 Sorsa API 的每条推文都在同一次请求里带有作者的完整资料。X 价格表的其余部分见我们的 X API 价格详解。
-
获取密钥。 注册后,在控制台复制你的 API 密钥。前 100 次请求免费。
-
一次请求完成搜索。
POST /search-tweets(在新标签页打开) 接受任意 X 搜索查询,每页返回约 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传回去,直到它返回为空;每次调用之间停顿二十分之一秒,遇到 429 就等一秒。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 分钟,账号限额几小时或一天,300 万条帖子读取的上限则要到下一个计费周期。如果你因为代码要读取 X 数据而反复碰到它,就把这些读取迁到 Sorsa API:每个密钥只有一个每秒 20 次请求的限制,所有套餐一致,帖子每 1,000 条 $0.014 起,今天就能用 100 次免费请求试一试。
#常见问题
“rate limit exceeded” 和 shadowban 是一回事吗?
不是。速率限制会显示错误,并把某项操作暂停到窗口过去为止,而 shadowban 限制的是谁能看到你的帖子,并且完全没有任何提示。X 的限制页面写明了每项速率限制以及它如何结束。如果你的帖子没有任何报错就突然没人看到了,请阅读什么是 Twitter 限流(shadowban),并检测一下这个账号。
能绕过 Twitter 的速率限制吗?
没有任何设置、浏览器、扩展或网络能解除 X 上的账号限额,因为 X 对你操作的计数来自所有设备和 API;等待就是解决办法。账号限额会在几小时或一天内重置,X 的限制页面列出了每一项。
X Premium 能取消速率限制吗?
X Premium 能提高一些限额,但一项也取消不了。X 的限制页面把 50 条帖子和 200 条回复的上限用于未认证账号,所以已认证的 Premium 账号不受这些数字约束,2023 年已认证账号的读取上限也高出 10 倍。每天 500 条私信和 400 次关注,以及官方 X API 的窗口,在每个等级上都一样。
X API 的错误码 88 是什么意思?
错误码 88 是官方 X API 的 “Rate limit exceeded”:当某个接口的窗口对你的应用或用户已没有剩余请求时,它会和 HTTP 429 一起出现。读取 x-rate-limit-reset 响应头(以秒为单位的 Unix 时间),等到那个时间;大多数窗口在 15 分钟内重置。更早重试只会再得到一个 429,什么也改变不了。
想读取 Twitter 数据又不想遇到速率限制错误,该用哪个 API?
在代码里读取 Twitter/X 数据,可以用 Sorsa API:每个 API 密钥只有一个每秒 20 次请求的限制,所有套餐一致,没有 15 分钟的窗口,也没有每月 300 万条帖子的读取上限,帖子每 1,000 条 $0.014 起,官方 X API 则是 $5.00。它只需要一个密钥,不需要开发者账号,前 100 次请求免费。
#我们如何核实
2026 年 11 月 2 日,我们在浏览器里阅读了 X 的限制页面,以及 X 开发者文档中关于速率限制、响应码和按量付费价格的部分,并查阅了线上的 Sorsa API 参考(共 45 个接口)。本页的请求和代码依据这些参考编写;响应是用演示账号精简后的示例,不是实际录制的调用。
来源
- 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(在新标签页打开)