Twitter 话题标签追踪 API
要通过 API 追踪 Twitter 话题标签,就搜索 #tag 并按最新排序,读完每一页结果,再按天和按作者统计帖子;官方 X API 读取这些内容每 1,000 条帖子收费 $5.00。
简短回答: X 没有话题标签接口,所以每个追踪器都是去搜索这个标签;X 的近期计数接口返回 7 天的总数,不含帖子和作者。要按天统计一个标签并给作者排名,可以用 Sorsa API 的 POST /search-tweets:每次请求约 20 条帖子,含作者,每 1,000 条 $0.07 起,起步有 100 次免费请求。
- 接口
POST /search-tweets- 每页数量
- 每次请求约 20 条帖子
- 价格
- 每 1,000 条 $0.07 起
#话题标签追踪如何通过 API 工作
话题标签追踪,就是收集某段时间内带有同一个标签的所有公开帖子,再把这些帖子变成三个答案:每天出现了多少条、是谁发的、哪些被读得最多。没有哪个 X API 有专门针对话题标签的接口。所有路线都要经过搜索,把标签写进查询里。
想不写代码快速看一眼,免费的 Twitter 话题标签分析工具可以显示任意标签过去 24 小时或 7 天的每小时帖子数、热门声音和热门帖子。本指南其余部分用代码生成同样的报告,适用于任意时间段和任意数量的标签。
在搜索查询里,#tidewaterdevdays 匹配 X 把这个词识别为话题标签的帖子,不区分大小写。不带 # 的 tidewaterdevdays 还会命中不加井号就写出来的帖子,所以只想统计带标签帖子的活动报告要保留 #。标签在第一个不是字母、数字或下划线的字符处结束,所以 #c++ 就是标签 #c,而日语、阿拉伯语或其他文字的标签则照写即可。其他各种过滤条件,从语言到最低点赞数,都在我们的 Twitter 搜索运算符指南里。
搜索有两种排序。Latest 从最新往回走遍每一个匹配项,统计需要的就是这个。Top 只返回互动最高的匹配项,所以适合做精选榜,不适合做计数器。
官方 X API 也有两个计数接口:GET /2/tweets/counts/recent 覆盖最近 7 天,GET /2/tweets/counts/all 覆盖存档,按分钟、小时或天给出总数(X 的计数概览(在新标签页打开))。它们只返回数字,别的什么都没有:没有帖子,没有作者,没有浏览量。X 自己还补充说,计数可能与搜索结果不完全一致。需要说清是谁推动了一个标签、或哪条帖子承载了它的追踪器,就要读取帖子本身。
#用 Sorsa API 四步追踪话题标签
Sorsa API 是一款 Twitter(X)API 与爬虫,它通过一个接口 POST /search-tweets 运行 X 的搜索语法,并返回每条帖子及其作者的完整资料。把所有页面读一遍,就能得到全部三项输出,所以计数、作者排名和热门帖子从不需要单独的请求。
做话题标签追踪,可以用 Sorsa API:一个 API 密钥,无需开发者账号,每次请求约 20 条帖子,含作者,每 1,000 条帖子 $0.07 起,所有套餐统一每秒 20 次请求。
-
获取密钥。 注册后从控制台复制你的 API 密钥。前 100 次请求免费,无需绑卡。
-
发送查询。 把标签和时间段放进
query,并要求最新帖子优先。#原样放进 JSON 请求体,不需要 URL 编码。Terminal curl -X POST "https://api.sorsa.io/v3/search-tweets" \ -H "ApiKey: YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{"query": "#tidewaterdevdays since:2026-10-19 until:2026-11-02", "order": "latest"}'Response200 OK { "tweets": [ { "id": "2115444854355529755", "full_text": "Day one of #tidewaterdevdays, slides below #devrel", "created_at": "2026-10-28T14:05:31Z", "lang": "en", "likes_count": 312, "retweet_count": 41, "reply_count": 18, "quote_count": 6, "view_count": 28410, "is_reply": false, "user": { "id": "1366674638239301632", "username": "maren_codes_at_night", "display_name": "Maren", "followers_count": 18240, "verified": false } } ], "next_cursor": "DAADDAABCgABHVvqb2SWYBsKAAIdW-l6pZbQkAAIAAIAAAAC" } -
沿着 cursor 往下读。 把
next_cursor放进下一次请求的请求体里发回去,直到某个响应不再带它。页面大小会变化,所以要以 cursor 缺失为停止条件,不要以短页为准。403 表示密钥缺失或请求额度已用完;429 表示一秒内超过 20 次请求,等一秒再重试。 -
给帖子分组。 每个帖子 ID 只保留一行,然后按天和按作者统计。下面的脚本完成全部工作并打印报告。
import re from collections import Counter from datetime import datetime, timezone import requests URL = "https://api.sorsa.io/v3/search-tweets" HEADERS = {"ApiKey": "YOUR_API_KEY"} TAG = re.compile(r"#\w+") def collect(query): """Yield every post the search returns, newest first.""" body = {"query": query, "order": "latest"} while True: r = requests.post(URL, headers=HEADERS, json=body, timeout=30) r.raise_for_status() page = r.json() yield from page.get("tweets", []) cursor = page.get("next_cursor") if not cursor: return body["next_cursor"] = cursor def utc_day(post): stamp = post["created_at"].replace("Z", "+00:00") t = datetime.fromisoformat(stamp) return t.astimezone(timezone.utc).date().isoformat() def track(tag, since, until): posts = {} for p in collect(f"{tag} since:{since} until:{until}"): posts[p["id"]] = p # one row per post ID per_day, by_author, views, tags = Counter(), Counter(), Counter(), Counter() for p in posts.values(): per_day[utc_day(p)] += 1 by_author[p["user"]["username"]] += 1 views[p["user"]["username"]] += p.get("view_count") or 0 tags.update(m.lower() for m in TAG.findall(p["full_text"])) top = sorted(posts.values(), key=lambda p: p.get("view_count") or 0) return per_day, by_author, views, tags, top[::-1][:10] per_day, by_author, views, tags, top = track( "#tidewaterdevdays", "2026-10-19", "2026-11-02") for day, n in sorted(per_day.items()): print(day, n) print("Top authors:", by_author.most_common(5)) print("Most viewed:", views.most_common(5)) print("Related tags:", tags.most_common(10))
接口的参数和响应字段见 POST /search-tweets 参考文档(在新标签页打开)。搜索除话题标签之外还能做什么,从关键词查询到查找帖子的其他方式,请看 Twitter 搜索 API指南。
#按天统计话题标签的帖子数
要按天统计一个话题标签,就用 Latest 排序读取时间段内的每条帖子,每个帖子 ID 只保留一行,再按每条帖子 created_at 的 UTC 日期给这些行分组。查询里的日期只决定抓取哪些帖子;每条帖子上的日期才决定它被计在哪一天。
这种区分在边界处很重要。since: 和 until: 按 UTC 工作,并且 until: 不含它自己的那一天,所以 since:2026-10-28 until:2026-10-29 只是 10 月 28 日一天。接近午夜的帖子仍可能出现在相邻的窗口里,所以脚本按 created_at 统计,并按 ID 去重,而不是相信窗口。
较长的时间段,最快的读法是每天一个窗口。每天之间互不依赖,所以可以并排运行:一个密钥每秒处理 20 次请求,约 400 条帖子,一个每天 5,000 条帖子的标签,一整年约 76 分钟就能读完。历史可追溯到 2006 年,所以今天开始的追踪器,数去年的活动和数这周的一样容易。
有三个查询选择会改变计数,请把它们与数字一起记下来:
- 转发。 X 搜索默认不含单纯转发,但保留回复。加上
include:nativeretweets可以把转发也算进去,并通过retweeted_status区分它们。 - 回复。 加上
-filter:replies,只统计发起对话的帖子。 - 变体。 用
OR把不同写法和姊妹标签连起来:(#tidewaterdevdays OR #tidewater2026)。
在这个例子里,一个虚构的会议标签从 10 月 19 日的 420 条帖子,升到第一天 10 月 28 日的 4,812 条,14 天里共约 2.5 万条帖子,来自 9,214 位作者。把它们全部读完,在 Sorsa API 上 $1.76 起,而在官方 X API 上是 $126。
须知
X 用 UTC 给每条帖子标注时间,所以报告里的一天是一个 UTC 日。对纽约的团队来说,当地时间 10 月 28 日是从 UTC 28 日 04:00 到 29 日 04:00:如果报告按当地日期来算,请在分组之前把
created_at转换成你的时区。
#找出热门作者、热门帖子和相关话题标签
热门作者来自按 user.username 给同一批帖子分组:统计每个账号的帖子数,再把他们的浏览量和点赞数加起来,因为发帖最多的账号和被读得最多的账号很少是同一个。话题标签报告需要的每项指标,都来自随每条帖子到达的字段,所以没有一项需要额外请求。
| 指标 | 计算方式 | 字段 |
|---|---|---|
| 每日帖子数 | 每个 UTC 日期的帖子 ID 数 | created_at |
| 每小时帖子数 | 每个 UTC 小时的帖子 ID 数,用来观察热度如何上升 | created_at |
| 独立作者数 | 不重复的账号 | user.id |
| 按帖子数排名的热门作者 | 每个账号的帖子数 | user.username |
| 按覆盖面排名的热门作者 | 每个账号的粉丝数 | user.followers_count |
| 浏览量 | 带标签帖子的浏览量总和 | view_count |
| 互动 | 点赞、转发、回复和引用 | likes_count, retweet_count, reply_count, quote_count |
| 语言 | 每种语言的帖子数 | lang |
| 相关话题标签 | 在文本中找到的标签 | full_text |
每日帖子数
- 计算方式
- 每个 UTC 日期的帖子 ID 数
- 字段
created_at
每小时帖子数
- 计算方式
- 每个 UTC 小时的帖子 ID 数,用来观察热度如何上升
- 字段
created_at
独立作者数
- 计算方式
- 不重复的账号
- 字段
user.id
按帖子数排名的热门作者
- 计算方式
- 每个账号的帖子数
- 字段
user.username
按覆盖面排名的热门作者
- 计算方式
- 每个账号的粉丝数
- 字段
user.followers_count
浏览量
- 计算方式
- 带标签帖子的浏览量总和
- 字段
view_count
互动
- 计算方式
- 点赞、转发、回复和引用
- 字段
likes_count,retweet_count,reply_count,quote_count
语言
- 计算方式
- 每种语言的帖子数
- 字段
lang
相关话题标签
- 计算方式
- 在文本中找到的标签
- 字段
full_text
浏览量就是 X 显示在每条帖子下面的那个数字。对一个标签求和后,它是最接近其曝光量的公开数字,也比许多报告开头那个按粉丝数求和的“覆盖面”更可靠,因为粉丝并不会看到每一条帖子。两个都留着,并说明各是哪一个。
相信某次激增之前,先把帖子数和独立作者数对照着看。几十个账号发出的成千上万条帖子是一次推广,而一个被成千上万人各用一次的标签才是一场对话。按浏览量而不是帖子数给作者排序,通常会让真正有分量的声音排到前面。
相关话题标签来自帖子文本。entities 字段列出的是媒体和链接,不是标签,所以脚本用正则表达式从 full_text 中提取每个 #word 并计数。一个活动标签最常见的相邻标签,显示了应当加进查询的姊妹标签,以及它触达的社群。
#话题标签追踪要花多少钱
读取一个话题标签的帖子,在 Sorsa API 上每 1,000 条 $0.07 起,在官方 X API 上每 1,000 条 $5.00,约贵 70 倍,这还没算 X 对作者的收费。从 2026 年 11 月 22 日起,X 把随帖子返回的每个作者按用户读取费率 $0.010 计费,所以那里带作者的帖子每 1,000 条最高 $15.00(X 10 月 23 日的通知(在新标签页打开))。在 Sorsa API 上,作者资料包含在每条帖子里,不另外收费。
官方路线还需要获批的开发者账号、OAuth 应用和预付额度。它的按量付费方案每月读取 300 万条帖子封顶;热门标签超过这个数,就需要每月约 $42,000 起的 Enterprise 合同(X 的价目表(在新标签页打开))。Sorsa API 只需请求头里的一个密钥,从不索要你的 X 登录信息,并且每 1,000 条帖子的价格会随套餐变大而下降。
话题标签每天的帖子数
追踪时长
15 万条话题标签帖子 含每位作者的资料,各读取一次
$750
官方 X API
每 1,000 条帖子 $5.00
11 月 22 日起附带作者,最高 $2,250
低至 $10.50
Sorsa API
低至每 1,000 条帖子 $0.07
每条帖子都含作者
约 6 分钟 在 Sorsa API 上按每秒 20 次请求读取。 在官方 X API 上,这项任务没有超过每月 300 万条帖子的上限。
选择话题标签的热度和追踪时长。每张卡片按每条帖子读取一次计价;X 的作者费用显示在其价格下方。
多数标签比看上去要小。一个每天只有几百条帖子的产品或活动标签,每天大约 15 次请求就能追踪,100 次免费请求可以读取约 2,000 条帖子,足够你在付费之前评估任何标签的规模。
#让话题标签追踪器持续运行
要让追踪器保持最新,就按计划运行,并且只请求比你上次存下的最后一条更新的帖子,用 since_id: 设为那条帖子的 ID:#tidewaterdevdays since_id:2117039272883781709。这样每次运行只读取新的页面,所以安静的一小时只需一次请求。
根据标签的节奏选择间隔:进行中的活动每小时一次,现场活动期间每几分钟一次。Sorsa API 以轮询方式工作;它没有数据流或 webhook,而在每秒 20 次请求下,对几十个标签做一轮轮询,也只需几秒就完成。想在标签激增时向 Slack 或邮件发提醒,我们的 Twitter 实时监控指南搭建了调度器和推送。
把每条帖子存进以 ID 为键的表中,再次看到该帖子时更新那一行。帖子出现后,浏览量和点赞数还会继续增长好几天,所以在发布活动的最终数字之前,要重新读取最近两三天。
想知道一个标签何时爆发,可以查看 X 在你关心的地区的趋势榜:GET /trends 返回一个地区当前的榜单,Twitter 趋势 API指南介绍了如何监视它。要同时追踪多个标签,就并行地每个标签跑一个查询,这样每个计数保持独立。
#开始追踪你的话题标签
话题标签追踪器,就是以 Latest 排序搜索这个标签,每一页只读一遍,再按 UTC 日和按作者统计帖子。Sorsa API 负责读取,每 1,000 条帖子 $0.07 起,含每位作者,所有套餐统一每秒 20 次请求,历史可追溯到 2006 年;你的前 2,000 条帖子免费。
#常见问题
追踪 Twitter 话题标签该用哪个 API?
用 Sorsa API。它的 POST /search-tweets 接收带 X 搜索运算符的标签,每次请求返回约 20 条帖子,每条都带作者的完整资料,所以每日计数、热门作者和热门帖子都来自同样的页面。每 1,000 条帖子 $0.07 起,而官方 X API 是 $5.00,所有套餐统一每秒 20 次请求,只需一个 API 密钥,不需要开发者账号。
X 有话题标签 API 吗?
没有。X 没有专为话题标签设计的接口:你要通过搜索来追踪一个标签,在搜索接口的查询里写 #tag。官方 X API 另外提供计数接口,按分钟、小时或天返回总数,但不含帖子、作者或浏览量,所以要给推动一个标签的人排名,仍然需要读取帖子。
怎么查看一个话题标签在 Twitter 上被使用了多少次?
X 在它的应用里任何地方都不显示话题标签的总数。免费的 Twitter 话题标签分析工具会根据标签的最新帖子,估算它每小时的帖子数。想要任意时间段内的精确计数,就通过 API 用 Latest 搜索读取每一条帖子,按天统计,每个帖子 ID 只保留一行。
能实时追踪话题标签吗?
接近实时,靠轮询。每分钟或每隔几分钟运行一次搜索,用 since_id: 设为你手上最新的那条帖子,每次运行只返回自那以后出现的帖子。Sorsa API 没有数据流或 webhook;而在每秒 20 次请求下,对许多标签做一轮轮询仍然只需几秒。
话题标签能追踪到多久以前?
在 Sorsa API 上可以回溯到 2006 年:在查询里加上 since: 和 until: 日期,像读任何其他时间段一样读取。官方 X API 的近期搜索和近期计数覆盖最近 7 天;它的存档接口在按量付费和 Enterprise 权限下可以走得更远,每读取 1,000 条帖子 $5.00。
能同时追踪多个话题标签吗?
可以。并行地为每个话题标签跑一次搜索,在 Sorsa API 上每个密钥最多每秒 20 次请求,这样每个标签都有自己的计数。在一个查询里用 OR 连接标签也可行,得到的是合并后的一个计数;之后想拆分,就在帖子文本里查找每个标签。
#我们如何核实
2026 年 11 月 2 日,我们阅读了 X 的帖子计数接口文档和它的按量付费价目表,以及 X 10 月 23 日关于扩展字段计费的通知。本页的每个 Sorsa API 请求,都是根据我们 /search-tweets 和 /trends 的线上 API 参考文档写成的;响应、图表和账号都是用虚构数据做的示例,成本则来自我们定价页上的请求费率。