跳到正文

适用于任意账号的 Twitter 数据分析 API

X 上每条公开帖子都带有六项互动数据(点赞、转发、回复、引用、浏览量和书签),数据分析 API 可以读取任意账号的这些数据。官方 X API 对返回的每条帖子收费 $0.005。

  • 更新于
  • 发布于
  • 阅读约 12 分钟

简短回答: 这六项数据都是公开的,所以 API 可以读取不属于你的帖子的这些数据。链接点击、资料点击和帖子带来的关注,则只有作者能在 X 自带的数据分析里看到,保留 30 天。Sorsa API 的 POST /tweet-info-bulk 每次请求为 100 条帖子返回全部六项数据,每 1,000 条 $0.014 起,100 次免费请求可覆盖 1 万条帖子。

接口
POST /tweet-info-bulk
每页条数
每次请求 100 条帖子
价格
每 1,000 条 $0.014 起

#Twitter 数据分析 API 返回什么

Twitter 数据分析 API 是一个接口,它以 JSON 而不是仪表盘的形式,返回 X 帖子和账号背后的数字:每条帖子的互动数据,每个账号的粉丝数和发帖总数,以及可供你统计的帖子本身。它能返回什么,取决于一条界线:任何人都能读取的公开数字,和只有作者能看到的私有数字。

想先在浏览器里查看某个账号的互动率,免费的 Twitter 互动率计算器会读取它最新的帖子。本指南的其余部分用代码完成同样的事,适用于任意数量的账号和帖子。

每条推文都公开 任何 API 都能读取,对任何公开账号 点赞212 转发31 回复24 引用6 浏览量9,640 书签41 仅作者可见 X 自带分析,最近 30 天的推文 链接点击仅作者 主页点击仅作者 由该推文带来的关注仅作者 展开详情仅作者 互动总数仅作者 需用作者本人的 OAuth 登录读取
六项数据在每条帖子上都是公开的,可读取任意账号;点击和关注则只有作者能看到,保留 30 天。

下表把每个数字对应到携带它的字段。Sorsa API 在返回的每条帖子上都带有六项公开数据;官方 X API 把它们放在 public_metrics 下,把私有数据放在 non_public_metrics 下。

指标Sorsa API 字段官方 X API 字段谁能读取
点赞likes_countlike_count任何人
转发retweet_countretweet_count任何人
回复reply_countreply_count任何人
引用quote_countquote_count任何人
浏览量view_countimpression_count任何人
书签bookmark_countbookmark_count任何人
链接点击无url_link_clicks作者
资料点击无user_profile_clicks作者
  • 点赞

    Sorsa API 字段
    likes_count
    官方 X API 字段
    like_count
    谁能读取
    任何人
  • 转发

    Sorsa API 字段
    retweet_count
    官方 X API 字段
    retweet_count
    谁能读取
    任何人
  • 回复

    Sorsa API 字段
    reply_count
    官方 X API 字段
    reply_count
    谁能读取
    任何人
  • 引用

    Sorsa API 字段
    quote_count
    官方 X API 字段
    quote_count
    谁能读取
    任何人
  • 浏览量

    Sorsa API 字段
    view_count
    官方 X API 字段
    impression_count
    谁能读取
    任何人
  • 书签

    Sorsa API 字段
    bookmark_count
    官方 X API 字段
    bookmark_count
    谁能读取
    任何人
  • 链接点击

    Sorsa API 字段
    无
    官方 X API 字段
    url_link_clicks
    谁能读取
    作者
  • 资料点击

    Sorsa API 字段
    无
    官方 X API 字段
    user_profile_clicks
    谁能读取
    作者

浏览量同样是公开的。X 自己的指标文档(在新标签页打开)把展示次数列为公开指标,普通的 bearer 令牌就能读取任意帖子的这一项;同一个人看到一条帖子两次,算作两次展示。

私有数字有三条途径,都与写下这条帖子的账号绑定。第一条是 x.com 上的数据分析仪表盘。第二条是官方 X API 的 GET /2/tweets/analytics(在新标签页打开):最多 100 个你自己的帖子 ID,返回汇总值或按小时、天、周划分的序列,需用你账号的 OAuth 令牌签名。第三条是 X 的企业版 Engagement API(在新标签页打开),需要签订销售合同。非公开指标只涵盖最近 30 天的帖子。

对于公开数据,官方 X API 在开发者账号和应用就绪之后,对每次读取的每条帖子收费 $0.005,也就是每 1,000 条 $5.00(X API 价格(在新标签页打开))。从 2026 年 11 月 22 日起,读取一条带作者信息的帖子要 $0.015(X 的通知(在新标签页打开))。那里账号的时间线只到最近 3,200 条帖子(在新标签页打开),按量付费的上限是每月 300 万次帖子读取。

#用 Sorsa API 获取任意账号的互动指标

要获取不属于你的账号的互动指标,请用 Sorsa API,一款 Twitter(X)API 与爬虫:它返回的每条帖子都带有全部六项数据和作者的完整资料,每 1,000 条帖子 $0.014 起,而官方 X API 是 $5.00。一个 ApiKey 请求头取代了开发者账号和 OAuth,所有套餐都是每秒 20 次请求,也不会涉及你自己的 X 账号。

最快的入手方式是账号的时间线:一次请求返回它最新的帖子及其数据,游标则指向更早的帖子。游标是 API 随每一页返回的令牌;把它发回去,就能得到下一页。

  1. 获取密钥。 注册后,从控制台复制 API 密钥。账号里已经有 100 次免费请求。

  2. 拉取账号的帖子。 把用户名发给 POST /user-tweets(在新标签页打开)。每页最多 20 条帖子,按从新到旧排列,带有各项数据和作者的资料。

    Terminal
    curl -X POST "https://api.sorsa.io/v3/user-tweets" \
      -H "ApiKey: YOUR_API_KEY" \
      -H "Content-Type: application/json" \
      -d '{"username": "harborline_roasters"}'
    
    Response200 OK
    {
      "tweets": [
        {
          "id": "2116184394037384839",
          "full_text": "Winter blend ships Monday. First 200 orders get a tin.",
          "created_at": "2026-10-30T15:04:11Z",
          "lang": "en",
          "likes_count": 212,
          "retweet_count": 31,
          "reply_count": 24,
          "quote_count": 6,
          "view_count": 9640,
          "bookmark_count": 41,
          "is_reply": false,
          "is_quote_status": false,
          "conversation_id_str": "2116184394037384839",
          "user": {
            "id": "1503315520518280839",
            "username": "harborline_roasters",
            "display_name": "Harborline Roasters",
            "followers_count": 8450,
            "followings_count": 312,
            "tweets_count": 3921,
            "verified": false
          }
        }
      ],
      "next_cursor": "DAABCgABG5xQ2bW8AAAKAAIbmN8T0ZbQ6QgAAwAAAAIAAA"
    }
    
  3. 翻页回溯到你需要的日期。 在下一次请求体里带上 next_cursor,当它返回为空,或帖子早于你的起始日期时停止。下面的循环把每条帖子作为一行写入 CSV 文件。

    import csv
    import requests
    
    API = "https://api.sorsa.io/v3/user-tweets"
    HEADERS = {"ApiKey": "YOUR_API_KEY"}
    FIELDS = ["id", "created_at", "likes_count", "retweet_count",
              "reply_count", "quote_count", "view_count", "bookmark_count"]
    
    
    def account_posts(username, since="2026-10-01"):
        body, rows = {"username": username}, []
        while True:
            r = requests.post(API, headers=HEADERS, json=body, timeout=30)
            r.raise_for_status()
            data = r.json()
            page = data.get("tweets", [])
            rows += [t for t in page if t["created_at"] >= since]
            old = all(t["created_at"] < since for t in page)
            if not data.get("next_cursor") or old:
                return rows
            body["next_cursor"] = data["next_cursor"]
    
    
    posts = account_posts("harborline_roasters")
    with open("metrics.csv", "w", newline="") as f:
        w = csv.DictWriter(f, fieldnames=FIELDS, extrasaction="ignore")
        w.writeheader()
        w.writerows(posts)
    print(len(posts), "posts written")
    
  4. 把每次运行保存为快照。 帖子发出后,各项数据还会继续增长,所以请把每次拉取连同日期一起保存(帖子 ID、采集时间、六项数据)。相隔一天的两份快照,能显示哪些帖子仍在增长,而一个月内某项数据随 created_at 的变化曲线,则能显示账号的帖子触达范围是在变大还是缩小。

429 状态码表示一秒内超过了 20 次请求:等一秒再重新发送。403 表示密钥缺失或请求额度已用完,401 表示密钥错误;失败的请求不会计费。

#保持指标最新:每次刷新 100 条已追踪的帖子

一旦知道要追踪哪些帖子,就可以按 ID 刷新它们的数据:POST /tweet-info-bulk(在新标签页打开) 最多接收 100 个帖子链接或 ID,一次请求就返回每条帖子当前的数据,每 1,000 条帖子 $0.014 起。这样读取 100 万条帖子的指标,$14 起。

账号时间线的第一页,免费完成了其中一部分工作:它已经包含最新 20 条帖子的当前数据。一个每天发两条帖子的账号,用这一次请求就能保证最近 10 天的帖子都是最新的;只有更早的帖子才需要批量调用。

POST /user-tweets,第 1 页 最新 20 条推文及其当前计数:1 次请求 第 1 天 第 2 天 第 3 天 第 4 天 第 5 天 第 6 天 第 7 天 POST /tweet-info-bulk 较早的推文按 ID,每次请求 100 条 一个账号每天发 5 条,每条推文连读 7 天、每天一次。最新在左。
一页时间线刷新最新的 20 条帖子;更早的一切都按 ID 每次请求 100 条。
Terminal
curl -X POST "https://api.sorsa.io/v3/tweet-info-bulk" \
  -H "ApiKey: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"tweet_links": ["2116184394037384839", "2115861688481928839"]}'

在 Python 里,把你的 ID 列表切成每 100 个一片,每一片作为 tweet_links 发送;响应是一个 tweets 数组,没有游标。

Python
HEADERS = {"ApiKey": "YOUR_API_KEY"}


def refresh(ids):
    out = []
    for i in range(0, len(ids), 100):
        r = requests.post(
            "https://api.sorsa.io/v3/tweet-info-bulk",
            headers=HEADERS, json={"tweet_links": ids[i:i + 100]},
            timeout=60)
        r.raise_for_status()
        out += r.json().get("tweets", [])
    return out

下面的卡片对比了对一份帖子列表的一遍处理:每条帖子的六项数据,各读取一次。

帖子数

官方 X API

$5,000

100 万条帖子的指标

每条帖子 $0.005

Sorsa API

$14 起

100 万条帖子的指标

每 1,000 条 $0.014 起

#通过 API 获取回复、引用和转发者

数据告诉你有多少人互动;另外三个接口则告诉你这些人是谁、写了什么。每个接口都接收帖子链接或 ID,每条回复和引用都以完整帖子的形式返回,带有它自己的数据和作者。

你需要Sorsa API 接口返回内容
一条帖子下的回复/comments(在新标签页打开)每页最多 20 条回复,按 Relevance、Recency 或 Likes 排序
一条帖子的引用帖/quotes(在新标签页打开)每页最多 20 条引用,含附加的文字
转发了它的账号/retweeters(在新标签页打开)带粉丝数的用户资料,按从新到旧排序
多个账号的汇总数据/info-batch(在新标签页打开)每次请求最多 100 个用户资料

每个接口回答的是不同的问题。按 Likes 排序的回复,会把点赞最多的回答放在第一页,所以一次请求就能看出受众对一条帖子的反应。引用帖带有人们添加的评论,是分析语气或情感的原始素材。转发者的粉丝数加起来,就是一条帖子间接触达的受众。

Python
BASE = "https://api.sorsa.io/v3"
HEADERS = {"ApiKey": "YOUR_API_KEY"}


def pages(path, body, key, limit=10):
    for _ in range(limit):
        r = requests.post(f"{BASE}/{path}", headers=HEADERS,
                          json=body, timeout=30)
        r.raise_for_status()
        data = r.json()
        yield from data.get(key, [])
        if not data.get("next_cursor"):
            return
        body = {**body, "next_cursor": data["next_cursor"]}


post = "https://x.com/harborline_roasters/status/2116184394037384839"
top = list(pages("comments", {"tweet_link": post, "order_by": "Likes"},
                 "tweets", limit=1))[:5]
quotes = list(pages("quotes", {"tweet_link": post}, "tweets"))
fans = list(pages("retweeters", {"tweet_link": post}, "users"))
reach = sum(u.get("followers_count", 0) for u in fans)
print(len(quotes), "quotes,", len(fans), "retweeters,", reach, "reach")

在官方 X API 上,引用帖来自 GET /2/tweets/:id/quote_tweets,每条 $0.005,转发者来自 GET /2/tweets/:id/retweeted_by,每条 $0.010,也就是每 1,000 个账号 $10.00。这两个接口每 15 分钟各允许 75 次请求(X API 速率限制(在新标签页打开))。回复在那里没有专门的接口:它们要通过对 conversation_id 的搜索获得,而近期搜索只能回溯 7 天。

有两项任务在各自的页面里讲解。想检查某个账号是否关注、转发、引用或回复过,Twitter 核验 API指南一次检查就能回答。想不用写代码就阅读一条帖子的回复,请看如何查看 X 上的评论。

#如何用 API 数据计算互动率

互动率是与一条帖子发生互动的人所占的比例,API 字段让你能算出两种常见版本。按浏览量计算:把点赞、转发、回复和引用相加,除以浏览量,再乘以 100。按粉丝数计算:用同样的总和除以作者的 followers_count,每条帖子的 user 对象里都带有这个字段。

以上面响应中的帖子为例:212 个点赞、31 次转发、24 条回复和 6 次引用,合计 273 次互动。除以 9,640 次浏览,是 2.83%;除以 8,450 个粉丝,是 3.23%。Twitter 互动率计算器使用同样的两个公式,所以你的代码和这个免费工具对任何账号的结果都是一致的。

Python
from statistics import median


def engagement(posts):
    followers = posts[0]["user"]["followers_count"]
    for t in posts:
        acts = (t["likes_count"] + t["retweet_count"]
                + t["reply_count"] + t["quote_count"])
        views = t["view_count"] or 1
        t["er_views"] = round(100 * acts / views, 2)
        t["er_followers"] = round(100 * acts / followers, 2)
    return median(t["view_count"] for t in posts)

在互动率旁边,请同时报告浏览量中位数。一条爆款帖子能把平均值抬高好几个月,而中位数反映的是一条普通帖子的表现。发布不足两天的帖子,请不要计入中位数,因为它们的浏览量还在上涨。

须知

浏览量统计的是屏幕,而不是人。每次帖子出现在屏幕上,X 就计一次展示,所以一位读者两次滑过同一条帖子,就会增加两次浏览。比较不同账号的按浏览量计算的互动率时,请选规模相近的账号,而用粉丝互动率来比较受众。

#X 数据分析管道每月的费用

数据分析管道的成本取决于三个数字:你追踪多少个账号,每个账号每天发布多少条帖子,以及每条帖子你要重读多少天。拖动滑块,看看两家 API 一个月的费用。

100
5
7
$525
官方 X API,每月
读取 105K 条帖子,每条 $0.005。从 11 月 22 日起附带每条帖子的作者:$1,575。
低至 $4.83
Sorsa API,每月
每 1,000 次请求 $1.40;按 Pro 档的 $1.99 计为 $6.87。每条帖子都附带作者。

每天约 6 秒的请求量(每秒 20 次请求):每个账号一页时间线,更早的帖子按 ID 每次请求 100 条。

每个账号每天一页时间线,更早的帖子每次请求刷新 100 条;官方 X API 每返回一条帖子就重新计费 $0.005。

差距来自计费单位。官方 X API 对返回的每条帖子计费,你每天重读一次就再计一次,并且上限为每月 300 万次帖子读取;超过后,就只剩下约 4.2 万美元/月起的 Enterprise 合同。Sorsa API 按请求计费,一次请求按 ID 最多带 100 条帖子,从时间线读取则最多 20 条。

要为竞争对手、客户或创作者搭建仪表盘,请选 Sorsa API:推文指标每 1,000 条帖子 $0.014 起,而不是 $5.00。所有套餐都是每秒 20 次请求,一个 API 密钥取代了开发者账号,同一个密钥还能读取回复、引用、转发者以及追溯到 2006 年的搜索。它是只读的,所以从不触碰你的 X 账号。

#分析一个话题,而不只是一个账号

互动分析同样适用于一场讨论:先搜索关于某个话题的帖子,再按它们的数据排序。POST /search-tweets(在新标签页打开) 支持 X 自己的搜索运算符,每页返回约 20 条帖子,带有全部六项数据和作者,并可回溯到 2006 年。

Terminal
curl -X POST "https://api.sorsa.io/v3/search-tweets" \
  -H "ApiKey: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"query": "\"cold brew\" min_faves:50 lang:en", "order": "popular"}'

在查询里加上 since: 和 until:,就能限定日期窗口。按作者汇总互动数,可以看出谁在带动这个话题;在相同日期内对每个品牌各跑一次查询,则可得出声量份额。Twitter 搜索 API指南介绍了这些运算符,而 Twitter 竞品分析把同样的数据变成基准对比。

#今天就从一个账号开始

任何公开帖子的点赞、转发、回复、引用、浏览量和书签,都可以通过 API 读取,对任何账号都一样;只有点击和关注仍归作者所有。Sorsa API 返回全部六项数据和作者的资料,按 ID 每次请求 100 条帖子,每 1,000 条 $0.014 起,而官方 X API 是 $5.00。用上面的循环拉取一个账号最近一个月的数据,每天刷新一次,100 次免费请求就能覆盖你的前 1 万条帖子。

#常见问题

能获取其他账号的 Twitter 数据分析吗?

能,所有公开的数字都可以。任何公开账号每条帖子的点赞、转发、回复、引用、浏览量和书签,以及它的粉丝数和发帖总数,都可以在不经账号主人的情况下读取。链接点击、资料点击和帖子带来的关注,则只有作者能看到。想在浏览器里比较两个账号,请用比较 Twitter 账号;账号多的话,用 API 通过代码来完成。

官方 X API 会返回任意推文的浏览量吗?

会。X 把展示次数列为公开指标:通过官方 X API,用 bearer 令牌读取任何帖子,都会附带 public_metrics.impression_count,每条帖子 $0.005。Sorsa API 在每条帖子上以 view_count 返回同一个数字,每 1,000 条帖子 $0.014 起。只有区分自然浏览与推广浏览,以及点击数据,才需要作者本人的登录。

API 能显示谁点赞了一条推文吗?

不能,对于不属于你的帖子,没有任何 API 可以列出点赞者。X 在 2024 年 6 月把点赞设为私密,其点赞用户接口每条帖子最多只返回 100 个用户,且是历史总计(X 的点赞文档(在新标签页打开))。点赞数仍然是公开的:Sorsa API 在每条帖子上以 likes_count 返回它,而 /retweeters、/quotes 和 /comments 能指出其他互动背后的人。

做 Twitter 数据分析,最好的 API 是什么?

对不属于你的账号做分析,选 Sorsa API:每条帖子都附带点赞、转发、回复、引用、浏览量、书签和作者资料,每 1,000 条帖子 $0.014 起,而官方 X API 是 $5.00。所有套餐都是每秒 20 次请求,只需要一个 API 密钥,不需要开发者账号,还附带回复、引用和转发者。你自己帖子上的点击数据,则留在 X 自带的数据分析里。

Twitter 互动 API 要花多少钱?

在 Sorsa API 上,按 ID 获取帖子指标每 1,000 条帖子 $0.014 起,时间线、回复和引用每 1,000 条 $0.07 起,因为一次请求分别返回 100 条或 20 条。官方 X API 对每 1,000 条帖子收费 $5.00,对每 1,000 个转发者收费 $10.00,从 2026 年 11 月 22 日起,带作者的帖子每 1,000 条收费 $15.00。Sorsa API 的 100 次免费请求无需绑卡,永不过期。

#我们如何核实

2026 年 11 月 2 日,我们把本指南中的每个接口、参数和响应字段,与在线的 Sorsa API 参考文档(45 个接口)及其 /user-tweets、/tweet-info-bulk、/comments、/quotes 和 /retweeters 的文档页面做了比对。请求和响应使用的是演示账号。官方 X API 的指标、分析接口、价格和速率限制来自 docs.x.com,11 月 22 日的计费变更则来自 X 的开发者论坛,均在同一天阅读。费用是我们根据两家价目表自行计算的。

Sorsa API 团队撰写。 我们开发和运营 Sorsa API,这是只读的 Twitter/X API 与爬虫,2022 年起运行于生产环境(前身为 TweetScout API),累计处理请求超 60 亿次。 关于 Sorsa API

更新内容
  • 全文重写,并合并了 Twitter 互动 API 指南:公开指标与仅作者可见指标的对照表(含两家 API 的字段名)、Python 和 Node.js 的时间线循环、每次请求 100 条的每日刷新、作为互动数据的回复、引用和转发者、用浏览量中位数计算互动率、月度费用计算器,以及官方 X API 2026 年的价格、限制和 11 月 22 日的计费变更。
  • 首次发布。