WEIR

推特搜索 API 2026:X API 搜索推文的接口、限额和价格

推特搜索 API 只有两个接口:最近搜索查 7 天内,全量搜索回到 2006 年。按 X 官方文档讲清限额、next_token 翻页、计数接口和 2026 年价格,附真实调用。


发布于 · 更新于 · 阅读约 7 分钟 · Read in English

封面图:搜推文的三种方式

推特搜索 API 就是 X(推特)的两个接口:最近搜索查过去 7 天,全量搜索能查到 2006 年。

这篇写给要按关键词、账号或日期拿推文的开发者。你会看到 X 官方的限额和价格、第一次调用怎么写,还有一条更短的路:我们做的 Weir。

用 Bearer Token 发第一次最近搜索:

curl "https://api.x.com/2/tweets/search/recent?query=from%3Agithub%20-is%3Aretweet&tweet.fields=created_at,public_metrics" \
  -H "Authorization: Bearer $X_BEARER_TOKEN"
  1. 选接口一周内用最近搜索,更早的用全量搜索。
  2. 写查询用 X API v2 的运算符写法。
  3. 发第一次请求一条 curl 加一个 Bearer Token。
  4. 用 next_token 翻页直到它不再出现。
  5. 先计数一次请求就知道有多少条。
  6. 或者用 WeirJSON 字段,每条推文 1 积分。

第 1 步:选一个推特搜索 API 接口

截至 2026 年 10 月 26 日,X 的文档列出两个搜索接口:

对比项 最近搜索 全量搜索
路径 GET /2/tweets/search/recent GET /2/tweets/search/all
能查多久 过去 7 天 2006 年 3 月至今
谁能用 所有开发者 按量计费和企业版
每次返回 10 到 100 条 10 到 500 条
查询长度 512 个字符 1,024 个字符
每 15 分钟,按应用 450 次 300 次,且每秒 1 次

企业版的两个接口,查询都能写到 4,096 个字符。

第 2 步:用 X API 的语法写查询

查询是一串运算符,写法和 x.com 的搜索框很像,但不完全一样:

  • 词和短语: python、"open source"、(rust OR golang),用 -spam 排除。
  • 账号和对话: from:github、to:github、@github、list: 和 conversation_id:。
  • 推文类型: is:retweet、is:reply、is:quote、has:media、has:links 和 lang:en。
  • 互动数: min_likes:、min_reposts: 和 min_replies:,2026 年 5 月 4 日加入。

推文类型这一组不能单独用。X 把它们叫作“必须搭配”的运算符,所以 has:media 旁边要有一个词或 from:。

还要注意优先级。空格表示 AND,而且比 OR 先结合,所以 apple OR iphone ipad 的意思是 apple OR (iphone ipad)。

x.com 上的 min_faves: 在 API 里会被 400 拒绝,要写 min_likes:。每个 x.com 运算符在 v2 里叫什么,见推特高级搜索语法大全。

第 3 步:给两个接口各发一次请求

最近搜索的请求就在本页开头,它要的令牌怎么拿,见推特 API 申请教程。全量搜索要加上 ISO 8601 格式的日期:

curl "https://api.x.com/2/tweets/search/all?query=from%3Agithub&start_time=2020-01-01T00%3A00%3A00Z&end_time=2021-01-01T00%3A00%3A00Z&max_results=100" \
  -H "Authorization: Bearer $X_BEARER_TOKEN"

我们跑了什么,没跑什么。 我们这里没有 X API 的 key。2026 年 10 月 22 日,我们不带令牌发了两个搜索请求和两个计数请求,X 每次的回答都一样:

{ "title": "Unauthorized", "type": "about:blank", "status": 401, "detail": "Unauthorized" }

所以本文里 X 的细节,都来自 X 的文档。

不加参数时,每条推文只返回 id、text 和 edit_history_tweet_ids。要更多字段,就加上 tweet.fields=created_at,public_metrics 和 expansions=author_id。

第 4 步:用 next_token 翻页

还有更多结果时,响应里会带 meta.next_token。把它作为 next_token 传回去,直到它不再出现。

X 的翻页指南还写了三点:

  • 结果按时间倒序,最新的在前。
  • next_token 不会过期,同一个令牌每次都返回同一页。
  • 要轮询新推文,下次把第一页的 meta.newest_id 作为 since_id 传入。

下面的循环限制了页数,宽泛的查询也不会让账单失控:

import os, requests
URL = "https://api.x.com/2/tweets/search/recent"
HEAD = {"Authorization": f"Bearer {os.environ['X_BEARER_TOKEN']}"}

def search_recent(query, max_pages=5):
    params = {"query": query, "max_results": 100, "tweet.fields": "created_at"}
    for _ in range(max_pages):
        r = requests.get(URL, params=params, headers=HEAD, timeout=30)
        r.raise_for_status()
        page = r.json()
        yield from page.get("data", [])
        token = page["meta"].get("next_token")
        if not token:
            return
        params["next_token"] = token

2026 年 10 月 22 日,我们用一个模仿 X meta 字段的本地模拟服务器测了它:读完两页就停了。

每页 100 条,一页就是 $0.50。所以 max_pages=5 让一次运行最多花 $2.50。

第 5 步:先计数,再花钱读推文

计数接口告诉你一个查询能匹配多少条推文,但不返回推文本身:

  • GET /2/tweets/counts/recent 覆盖过去 7 天,所有开发者都能用。
  • GET /2/tweets/counts/all 能回到 2006 年,限按量计费和企业版。
  • granularity 按 minute、hour 或 day 分组,默认是 hour。
  • 全量计数每 31 天一页,同样用 next_token 翻页。
curl "https://api.x.com/2/tweets/counts/recent?query=from%3Agithub&granularity=day" \
  -H "Authorization: Bearer $X_BEARER_TOKEN"

每个时间段都有 start、end 和 tweet_count。X 提醒,计数可能和搜索结果对不上,因为搜索还会做额外的合规过滤。

推特搜索 API 要多少钱?

截至 2026 年 10 月,搜索每返回一条推文,X 收 $0.005。同一条推文在同一个 UTC 日里返回两次,只收一次钱。

通过搜索读取 10,000 条推文,2026 年 10 月
X 最近搜索或全量搜索$50
TwitterAPI.io$1.50
Weir,$5 积分包约 $2.10

用 X API 费用计算器算算你自己的用量。

第 6 步:用 Weir 的 POST /v1/x/search 搜推文

Weir 是我们做的只读 API,读公开的 X 和 Reddit 数据,看这一节时请记住这一点。它的搜索收 JSON 字段,不用拼运算符字符串。

字段如下:

  • 账号: fromUsers、toUsers 和 mentions,每个最多 10 个用户名,或者用 listId。
  • 词: query、phrase、anyWords、excludeWords、hashtags 和 language。
  • 门槛: minLikes、minReposts 和 minReplies。
  • 推文类型: onlyOriginal 去掉回复,onlyReplies、onlyLinks 和 onlyText 再缩小范围。
  • 时间: since 和 until 是精确的时间点,也可以用 sinceId 和 untilId。
  • 翻页: sort 选 latest 或 top,limit 最多 100,再加上 cursor。

query 里也能直接写 x.com 的运算符,所以 min_faves: 在这里能用。

curl --request POST \
  --url https://api.weirapp.io/v1/x/search \
  --header "Authorization: Bearer $WEIR_API_KEY" \
  --header 'Content-Type: application/json' \
  --data '{"fromUsers":["github"],"query":"-filter:nativeretweets","onlyOriginal":true,"limit":3}'

我们在 2026 年 10 月 22 日通过 Weir 的 MCP 服务器跑了它,MCP 收的字段完全一样。它返回了 GitHub 最新的 3 条推文,花了 4 积分:调用 1 积分,每条推文 1 积分。其中一条,有删减:

{
  "id": "2112938664959562081",
  "author": { "username": "github", "followersCount": 2724485 },
  "likeCount": 518,
  "bookmarkCount": 410,
  "viewCount": 70748
}

把响应里的 meta.nextCursor 作为 cursor 传回去,请求体其他部分不变,直到它变成 null。在 X 上,最后一页常常还带着 cursor,所以完整翻完会多一次空的 1 积分调用。

  • 转推默认会返回。 上面的 -filter:nativeretweets 把它们排除了。
  • 门槛是 X 自己的过滤。 需要精确门槛时,在代码里再检查一遍 likeCount。

最近搜索、全量搜索还是 Weir:该用哪个?

按任务选:

如果你需要 用 价格,2026 年 10 月
过去 7 天,按 X 的条款 X 最近搜索 每 1,000 条 $5
更早的推文,每次 500 条 X 全量搜索 每 1,000 条 $5
随时间变化的匹配数量 X 计数接口 每次 $0.005 或 $0.010
任意年份,不用 X 开发者应用 Weir 搜索 每 1,000 条 $0.11 到 $0.21

Weir 的区间从 $1,000 积分包算到 $5 积分包,已含每次调用的积分。

X API 搜索推文报错或返回空,怎么办?

  • 401 Unauthorized: Bearer Token 缺失或不对,就像我们上面的测试。
  • 某个运算符报 400: min_faves: 这类 x.com 写法会被拒绝,改用 min_likes:。
  • 全量搜索返回空页: 没设 start_time,X 只搜了最近 30 天。
  • 429 Too Many Requests: 等到响应头 x-rate-limit-reset 给出的 Unix 时间再试,详见推特 API 速率限制。

什么时候不适合用 Weir

  • 需要和 X 签合同。 用 X 自己的搜索接口。
  • 要推文数量统计或私有指标。 只有 X 的 API 能给。
  • 每次请求必须返回 500 条。 Weir 每页大约 20 条。
  • 只看单价。 TwitterAPI.io 标价每 1,000 条推文 $0.15,搜索也用 from: 这类运算符,还能发推。

Weir 只读公开数据,不能发推,和 X、Reddit 都没有关联,也没有获得它们的授权,访问方式可能会变。你的用途是否合规,请看 X 的条款,本文不是法律建议。

常见问题

Twitter Search API 怎么用?

先拿到 Bearer Token,再向 GET /2/tweets/search/recent 发请求,把查询写进 query 参数。响应里有 next_token 就接着翻页。要查 7 天以前的推文,改用 /2/tweets/search/all,并设好 start_time。

推特搜索 API 免费吗?

不免费。X 的价格页没有免费档,截至 2026 年 10 月,搜索每返回一条推文收 $0.005。X 的更新日志说,新的按量计费账号最多能拿 $70 赠送积分。

X API 搜索推文能查多久以前的?

最近搜索只覆盖过去 7 天。按量计费和企业版账号的全量搜索能回到 2006 年 3 月,但不设 start_time 时只返回最近 30 天。

一次请求能拿多少条推文?

截至 2026 年 10 月,最近搜索每次最多 100 条,全量搜索最多 500 条。按量计费账号每个月最多读 300 万条推文。

推特搜索 API 会返回转推吗?

关键词搜索不会。X 的更新日志说,从 2026 年 5 月 4 日起,转推不再出现在关键词搜索的结果里。在 x.com 和 Weir 上,转推默认会返回,加上 -filter:nativeretweets 就能去掉。

参考来源

以下均为英文页面,2026 年 10 月 26 日核对: