速率限制(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,5005,000
GET /2/tweets/:id查询一条帖子450900
GET /2/users/:id按 ID 查询一个用户300900
GET /2/users/by/username/:username按用户名查询一个用户300900
GET /2/tweets/search/recent搜索近期帖子450300
GET /2/users/:id/tweets某个用户的帖子10,000900
GET /2/users/:id/followers某个用户的粉丝300300

有两点值得注意。使用应用令牌时,用户查询限制为每 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 官方 APItwitterapi.ioSocialDataTwittrAPI
限额单位每个接口每 15 分钟(或 24 小时)的请求数每秒请求数,按账号每分钟请求数,按用户市场按套餐,直连按账号
示例每个应用每 15 分钟 300 次用户查询任意一次购买后 20 个/秒120 个/分钟见市场页面,或咨询客服
超出限额429,错误码 88429,带 Retry-After429429
每月上限按量付费读取 300 万条帖子限额页面未说明未说明市场为套餐配额;直连为预付余额

如何不超出限额

大多数 429 都源于几个习惯。下面这些做法对上面每个 API 都有用:

  1. 缓存不常变的数据。 用户资料和旧帖子变化很慢。存下来,按计划重新获取。
  2. 使用批量接口。 GET /2/tweets 可以一次传多个 ID,在表中查询限额最高。有些第三方 API 也有类似的批量查询。
  3. 把请求分散开。 稳定地保持在限额以下,比突发一阵再等待要好。
  4. 读取响应头。 剩余数量变少时就放慢速度,不要等到 429。
  5. 遇到 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。

参考来源