速率限制(rate limit)规定了你在一个时间窗口内最多能发多少个请求。在 X 官方 API 中,每个接口每 15 分钟有各自的限额,你的应用和每个用户令牌分开计算。超出限额后,会一直收到 HTTP 429,直到窗口重置。第三方 API 也会限制请求,通常按每秒或每分钟计算,所有接口共用一个限额。
本文列出最常用接口的官方限额,解释相关的响应头和 429 响应,并把几家替代方案公布的限额放在一起对比。所有信息于 2026-10-10 核对。我们运营的 TwittrAPI 是其中一个替代方案,阅读那部分时请考虑到这一点。
X API 速率限制的规则
X 的速率限制页面说明了三条规则:
- 时间窗口。 限额每 15 分钟或每 24 小时重置一次。该页面的表格除非另有说明,显示的都是 15 分钟的限额。
- 按接口计算。 每个接口有自己的限额。搜索的限额用完了,不影响查询用户的限额。
- 按应用或按用户计算。 用仅限应用的 Bearer Token 发出的请求,计入应用的限额。用某个用户的 OAuth 1.0a 或 OAuth 2.0 令牌发出的请求,计入该用户的限额。
Enterprise 客户的限额单独商定。
常用接口的限额
下面是同一页面上的 15 分钟限额:
| 接口 | 用途 | 每个应用 | 每个用户 |
|---|---|---|---|
GET /2/tweets | 按 ID 查询帖子 | 3,500 | 5,000 |
GET /2/tweets/:id | 查询一条帖子 | 450 | 900 |
GET /2/users/:id | 按 ID 查询一个用户 | 300 | 900 |
GET /2/users/by/username/:username | 按用户名查询一个用户 | 300 | 900 |
GET /2/tweets/search/recent | 搜索近期帖子 | 450 | 300 |
GET /2/users/:id/tweets | 某个用户的帖子 | 10,000 | 900 |
GET /2/users/:id/followers | 某个用户的粉丝 | 300 | 300 |
有两点值得注意。使用应用令牌时,用户查询限制为每 15 分钟 300 个请求,也就是每分钟 20 个。粉丝列表对应用和用户都是同样的 300 限额,所以即使预算充足,抓取很多大账号的粉丝也要花很长时间。
速率限制和账单是两回事
从 2026 年起,X API 按量付费:先购买额度,根据 X API 价格页面,读取一条帖子 US$0.005,读取一个用户 US$0.010。速率限制不会因为你花得多而改变。余额再多,每个窗口的请求数也不会增加。
在速率限制之外还有一个用量上限。按量付费每个月度计费周期最多读取 300 万条帖子,超过就需要 Enterprise。价格页面还说明,同一个 UTC 日内多次获取同一资源,只收一次费。
这两个限制会叠加起作用。近期搜索每个请求最多返回 100 条帖子,一个窗口内 450 个请求最多可以返回 45,000 条帖子,按读取帖子的单价最多 US$225。每 15 分钟重复一次,不到一天就会碰到 300 万条的上限。更多计算示例见 2026 年 X API 价格。
响应头和 429 响应
X API 的每个响应都带有三个响应头:
| 响应头 | 含义 |
|---|---|
x-rate-limit-limit | 窗口内允许的请求数 |
x-rate-limit-remaining | 当前窗口剩余的请求数 |
x-rate-limit-reset | 窗口重置的 Unix 时间 |
额度用完后,API 返回 HTTP 429,错误码 88,消息为“Rate limit exceeded”。X 推荐的做法是读取 x-rate-limit-reset,等到那个时间再继续。如果没有重置时间,就用指数退避。X 自己的示例代码在重试前至少等待 60 秒。
一个实现这些逻辑的小型 Python 辅助函数:
import random
import time
import requests
def get_with_backoff(url, headers, max_tries=5):
for attempt in range(max_tries):
resp = requests.get(url, headers=headers, timeout=30)
if resp.status_code != 429:
return resp
reset = resp.headers.get("x-rate-limit-reset")
retry_after = resp.headers.get("retry-after")
if reset:
wait = max(int(reset) - time.time(), 1)
elif retry_after:
wait = int(retry_after)
else:
wait = min(60 * 2**attempt, 900)
time.sleep(wait + random.uniform(0, 1))
raise RuntimeError("still rate limited after retries")它也会处理 Retry-After,有几家第三方 API 用它代替重置时间戳。加上一点随机延迟,可以避免多个 worker 在同一时刻重试。
替代方案公布的限额
提供 X 公开数据的第三方 API 会自行设定限额,通常按账号计算、所有接口共用,而不是按接口分别计算。下面是各家公布的数字。
twitterapi.io:按账号状态
twitterapi.io 的 QPS 限制页面写明,从未付费的账号限制为每秒 0.2 个请求,即每 5 秒一个。一次性购买额度后提高到每秒 20 个。订阅套餐从低档的每秒 20 个到 Business 的每秒 500 个不等。超出限额会返回带 Retry-After 响应头的 429,页面说明账号不会被封。
twitterapi.io 的其他页面给出的数字不同。它的文档简介提到每个客户端最多 200 QPS。我们引用的是专门的限额页面,建议你向他们确认。
SocialData:每分钟 120 个请求
SocialData 的速率限制页面规定每个用户每分钟 120 个请求,所有接口共用,并说明可以发邮件免费申请更高的限额。它的错误说明页面写明 429 表示超出限额,并建议使用指数退避。402 表示余额不足,和速率限制是两回事。
RapidAPI:套餐配额加每分钟窗口
在 RapidAPI 上销售的任何 API,包括我们的,都可能有两种限制。RapidAPI 的响应头文档是这样说明的:
x-ratelimit-requests-limit和x-ratelimit-requests-remaining记录套餐配额,按套餐每天或每月重置。x-ratelimit-limit和x-ratelimit-remaining记录一个 60 秒的窗口,用完就返回 429。只有 API 设置了这种限制时才会出现。
配额是你付费买到的量。每分钟窗口则是你发得太快时返回 429 的原因。
TwittrAPI
在 RapidAPI 和 JojAPI 上,各套餐的限额显示在市场的 API 页面上。直连账号的限额因账号而异,需要更高吞吐量请联系客服。超出限额返回 HTTP 429。我们的速率限制文档(英文)介绍了退避方法,官方 Python 和 Node.js SDK 会自动重试 429 响应。直连账号可以在价格页面自助开通更高的档位,最高每秒 1,000 个请求;更高的需求见 TwittrAPI for teams(英文)。
我们按调用次数收费,直连价格每 1,000 次调用 US$0.065 起。因 400、407、408、409 或 5xx 错误失败的调用会退款。
对比一览
| X 官方 API | twitterapi.io | SocialData | TwittrAPI | |
|---|---|---|---|---|
| 限额单位 | 每个接口每 15 分钟(或 24 小时)的请求数 | 每秒请求数,按账号 | 每分钟请求数,按用户 | 市场按套餐,直连按账号 |
| 示例 | 每个应用每 15 分钟 300 次用户查询 | 任意一次购买后 20 个/秒 | 120 个/分钟 | 见市场页面,或咨询客服 |
| 超出限额 | 429,错误码 88 | 429,带 Retry-After | 429 | 429 |
| 每月上限 | 按量付费读取 300 万条帖子 | 限额页面未说明 | 未说明 | 市场为套餐配额;直连为预付余额 |
如何不超出限额
大多数 429 都源于几个习惯。下面这些做法对上面每个 API 都有用:
- 缓存不常变的数据。 用户资料和旧帖子变化很慢。存下来,按计划重新获取。
- 使用批量接口。
GET /2/tweets可以一次传多个 ID,在表中查询限额最高。有些第三方 API 也有类似的批量查询。 - 把请求分散开。 稳定地保持在限额以下,比突发一阵再等待要好。
- 读取响应头。 剩余数量变少时就放慢速度,不要等到 429。
- 遇到 429 先退避,再继续。 不要在紧密循环里重试,那样只会被限制得更久。
如果你想直接抓取 x.com 来绕开 API 限制,X 在那边也有自己的限制。2026 年如何抓取 X 数据说明了你会遇到什么。
常见问题
X API 的速率限制是多少?
没有统一的数字。每个接口在每 15 分钟窗口内有各自的限额,按应用和按用户分开计算。例如按用户名查询用户,每个应用每 15 分钟 300 个请求,每个用户 900 个。
X API 的速率限制会持续多久?
持续到当前窗口重置,视接口而定为 15 分钟或 24 小时。x-rate-limit-reset 响应头会告诉你确切时间。
429 错误码 88 是什么意思?
你在当前窗口内发出的请求超过了该接口允许的数量。等到 x-rate-limit-reset 的时间,再继续。
多付钱能提高 X API 的速率限制吗?
按量付费不能。余额用来支付请求,但每个窗口的限额不变。Enterprise 客户的限额单独商定。
第三方 Twitter API 有速率限制吗?
有。通常按账号以每秒或每分钟计算。twitterapi.io、SocialData 和 RapidAPI 的各套餐都公布了自己的限额。TwittrAPI 的密钥请查看市场的 API 页面;直连账号请咨询客服。各家价格对比见 2026 年最便宜的推特 API,你也可以在开始使用页面领取 US$0.50 测试额度试用我们的 API。





