作者:Sorsa 编辑部

更新于 2026 年 7 月 4 日: 新增 100 次免费请求的起步选项,把 Sorsa 价格改用每千条推文的批量费率表述,并对照我们维护的定价参考重新核查了官方 X API 的按量付费数字。

核心要点: Twitter 分析 API 通过代码而非仪表盘返回推文和账号指标。来源有三个:X 的原生分析(账号级数据仅限 Premium)、官方 X API v2 的 public_metrics 字段(任意公开帖子上的点赞、转发、回复、引用、展示量、书签),以及返回同样公开指标的第三方 REST API。

如果你搜过 “twitter analytics API”,多半已经踩过那个坑:这个说法至少涵盖三套不同的系统,而多数人真正想要的那套(针对自己不拥有的账号的程序化互动数据)恰恰是通过官方渠道最难低价拿到的。Sorsa API 这个 Twitter/X API 替代方案,填的就是这个缺口。对它的 /user-tweets 接口一次请求,就返回多达 20 条带完整互动指标和作者完整资料的推文,所有套餐统一 20 次/秒,几分钟就能配好,没有应用审批队列。价格从批量接口的每 1,000 条推文 $0.02 起,官方 X API 则是每 1,000 条帖子 $5.00,而且官方侧每条帖子和每份作者资料都作为单独资源计费。注册即送 100 次免费请求,无需绑卡,够你在选套餐之前把全部 40 个接口都测一遍。

这个 API 是我们自己开发和运营的,下面的工作流也都对照线上官方接口测过。所以这份对比用的是真实的当前数字,不是取整的营销话术。下面讲每个选项能给你什么、在哪里失效,以及怎么自己把数据拉下来。

目录:

人们说的 “Twitter 分析 API” 指什么 {#what-people-mean-by-a-twitter-analytics-api}

“Twitter 分析 API” 其实指三套容易混淆的独立系统。一是 X 内置的分析仪表盘(可视化、账号级、需要 Premium),二是官方 X API v2(返回原始指标字段的 REST 接口),三是 X Ads API(面向广告主的广告指标)。三者面向不同受众、返回不同数据、访问规则也不同。选错哪一套,是项目卡壳最常见的原因。

X 的原生分析仪表盘

X 内的仪表盘(通过 Creator Studio 或 x.com/i/account_analytics 打开)显示一个 28 天的账号概览:展示量、资料访问、粉丝变化和互动率,外加逐帖拆解。这个仪表盘背后没有 API、不能导出、不能自动化。

访问方式在 2024 年变了。桌面端完整的账号级仪表盘现在需要 X Premium 订阅,逐帖统计则对所有人仍然免费,可以在每条帖子上和移动端 App 里查看。所以免费账号并没有像某些指南说的那样被完全挡在分析之外。只是没有 Premium 就到不了账号级概览,而且仪表盘里没有任何东西能通过程序访问。想做任何自动化的东西,就得用下面两个 API 选项之一。

官方 X API v2

官方 X API v2 通过 REST 接口返回推文和用户数据,跟分析相关的指标有两类。

public_metrics 用一个仅应用的 bearer 令牌就能对任意公开帖子取到:点赞、转发、回复、引用、展示量(字段名 impression_count)和书签。这正是多数开发者真正需要的。

organic_metricsnon_public_metrics 只限已认证账号发布的帖子,且需要 OAuth 2.0 用户上下文认证。它们额外提供仅所有者可见的拆解:资料点击、URL 链接点击,以及详细的媒体查看计数。X API 采用按量付费,读取一条帖子每资源 $0.005,读取一份用户资料每资源 $0.010,没有免费额度,额度需预先购买。

有一点值得澄清,因为很多 AI 生成的答案里都这么写。那个带 90 天范围和 15 个以上指标的“帖子分析接口”其实属于 X Ads API,具体是面向推广内容的异步分析任务,不是通用的自然帖子接口。要拿任意公开帖子上的自然互动,你用的字段是 public_metrics

X Ads API

X Ads API 是面向广告主的独立系统,追踪活动级指标,比如推广展示量、CPM、点击率、转化和受众分层。它提供用于实时优化的同步调用,外加覆盖更长日期范围、返回可下载报告的异步任务。如果你没在 X 上跑付费活动,这套系统跟你无关。本指南剩下的部分讲怎么通过代码拿公开推文和用户指标。

通过 API 能拉取哪些推文指标 {#which-tweet-metrics-you-can-pull-through-an-api}

通过 API,你可以对任意公开账号拉取一条帖子上的每一个公开互动指标:点赞、转发、回复、引用、展示量(浏览量)和书签。资料点击、链接点击、详细视频留存这类仅所有者可见的指标,只对已认证的账号持有者开放。没有公开 API 会返回历史粉丝曲线,那个得你自己从周期性快照里攒。

下面是每个来源实际暴露的内容:

指标X 仪表盘X API v2 public_metricsX API v2 organic_metricsSorsa API
点赞仅自己账号任意公开帖子仅自己的帖子任意公开帖子
转发仅自己账号任意公开帖子仅自己的帖子任意公开帖子
回复仅自己账号任意公开帖子仅自己的帖子任意公开帖子
引用任意公开帖子任意公开帖子
展示量(浏览量)仅自己账号任意公开帖子仅自己的帖子任意公开帖子
书签任意公开帖子任意公开帖子
资料 / 链接点击仅自己账号仅自己的帖子
粉丝数仅自己账号任意公开用户不适用任意公开用户

有两点很突出。X API v2 的 public_metrics 字段确实好用:用一个 bearer 令牌,你就能读到任意公开帖子的核心互动指标。局限在成本和结构上。帖子读取每条 $0.005,1 万条推文的指标就要 $50,而且每条推文都是一笔单独的资源费,作者资料还要在此之上再按用户读取计费。

按请求计费的替代方案改变了这笔账,为任意公开帖子返回所有这些公开指标,并把完整作者资料(粉丝、关注、推文数、简介、认证状态)放进同一个响应,不额外收费。一次请求返回 20 条带完整互动数据和作者上下文的推文,不用为推文和用户分别调用。诚实的取舍是:公开数据 API 给不了仅所有者可见的 organic_metrics 拆解(资料点击、链接点击),而且只读,所以覆盖的是分析,不是发帖。对于大量读取互动、而非审计自家付费活动的团队,这个取舍偏向按请求计费的路线,这也是为什么多数为做分析而从官方 API 迁走的数据管道都落在这里。

深入 X API v2 的 public_metrics 对象 {#inside-the-x-api-v2-public_metrics-object}

X API v2 的 public_metrics 对象保存一条帖子的六个公开互动总数:like_countretweet_countreply_countquote_countimpression_count(浏览量)和 bookmark_count。这个 API 默认只返回帖子的 idtext,所以你必须用 tweet.fields=public_metrics 查询参数显式索取这个对象,否则它不会出现在响应里。

这六个字段,用大白话讲:

  • like_count:帖子的总点赞数。
  • retweet_count:直接转发,不含引用推文。
  • reply_count:话题串里的总回复数。
  • quote_count:帖子被引用推文的次数。
  • impression_count:总浏览量,就是 X 在界面里标为“浏览量”的那个数。
  • bookmark_count:帖子被加书签的次数。

有两个行为会绊倒多数开发者。第一,如果你查询的 ID 属于一条转发而不是原创帖子,public_metrics 里的值大多返回 0。要读到底层帖子的真实数字,用 expansions=referenced_tweets.id 把原帖取出来,从被引用的原帖上读指标。第二,API 指标滞后于屏幕上的计数:一个点赞或转发可能要几分钟到几小时才在 API 响应里登记,所以把这些数字当作近实时,而不是即时。

还值得知道:那个单独的 v2 分析面只报告自然指标;一条帖子的推广(付费)总数仍然通过标准帖子查询上的 public_metrics 返回,不走分析产品。

同样这六个指标也从 Sorsa 响应格式里返回,在每个推文对象上分别叫 likes_countretweet_countreply_countquote_countview_countbookmark_count,而且转发和引用的嵌套已经解析好。你直接从嵌套对象上读被引用帖子的真实数字,不用再挂一个 expansions 参数。

如何用 Python 拉取推文分析 {#how-to-pull-tweet-analytics-with-python}

用 Python 拉取推文分析,就是向一个指标接口发一个已认证的 HTTP 请求,再从 JSON 响应里读互动字段。用官方 X API v2,你对单条帖子索取 tweet.fields=public_metrics;用按请求计费的 REST API,你可以一次调用就取回一整条时间线的推文,每条都带指标和作者数据。

选项 1:官方 X API v2

要拿某条特定推文的公开指标,用 public_metrics 字段发一个已认证的 GET 请求:

python
import os
import requests

bearer_token = os.environ["X_BEARER_TOKEN"]
tweet_id = "1882368585664626774"

url = f"https://api.x.com/2/tweets/{tweet_id}"
params = {"tweet.fields": "public_metrics,created_at"}
headers = {"Authorization": f"Bearer {bearer_token}"}

response = requests.get(url, headers=headers, params=params)

if response.status_code == 200:
    metrics = response.json()["data"]["public_metrics"]
    print(f"Likes:     {metrics['like_count']}")
    print(f"Retweets:  {metrics['retweet_count']}")
    print(f"Replies:   {metrics['reply_count']}")
    print(f"Views:     {metrics['impression_count']}")
    print(f"Bookmarks: {metrics['bookmark_count']}")
else:
    print(f"Error: {response.status_code} - {response.text}")

这是按帖工作的。认证方式是用一个 bearer 令牌对任意帖子取 public_metrics,或用 OAuth 2.0 用户上下文对你自己的帖子取 organic_metrics。成本是每条帖子读取 $0.005,而拉一个用户最近 100 条推文要好几次分页请求,每次都按返回的资源计费。

选项 2:按请求计费的 REST API

对一个时间线接口调用一次,你就拿到多达 20 条带全部互动指标和作者完整资料的推文。配置花一分钟;请求本身是一个 POST:

python
import requests

api_key = "YOUR_SORSA_API_KEY"
url = "https://api.sorsa.io/v3/user-tweets"

payload = {"username": "elonmusk"}
headers = {"ApiKey": api_key}

response = requests.post(url, json=payload, headers=headers)

if response.status_code == 200:
    for tweet in response.json()["tweets"]:
        interactions = (
            tweet["likes_count"]
            + tweet["retweet_count"]
            + tweet["reply_count"]
            + tweet["quote_count"]
        )
        views = tweet["view_count"]
        rate = (interactions / views * 100) if views else 0
        print(f"{tweet['full_text'][:50]}... "
              f"views={views:,} rate={rate:.2f}%")
else:
    print(f"Error: {response.status_code}")

在 Pro 套餐上,一次时间线调用取多达 20 条推文花 $0.00199,在这个搜索式基准上约合每 1,000 条推文 $0.10,每个推文对象里的作者资料不额外收费。批量接口更低:/tweet-info-bulk 接口一次请求接收多达 100 个 ID,把已知 ID 的采集压到每 1,000 条推文 $0.02 起,比在任一 API 上循环单帖查询都便宜得多。

如何从 API 数据计算互动率 {#how-to-calculate-engagement-rate-from-api-data}

从 API 数据算互动率,就是把公开互动之和除以展示量,再乘 100:(点赞 + 转发 + 回复 + 引用) / 浏览量 × 100。对一个 5 万粉丝以上的账号,在这个基于展示量的公式上,率超过约 0.2% 通常算健康。这个数字低于 X 的原生仪表盘,因为后者还把资料点击、链接点击和媒体展开算进分子。

一个可复用、能在批量推文数据上跑的函数:

python
def engagement_rate(tweet: dict) -> float:
    interactions = (
        tweet.get("likes_count", 0)
        + tweet.get("retweet_count", 0)
        + tweet.get("reply_count", 0)
        + tweet.get("quote_count", 0)
    )
    views = tweet.get("view_count", 0)
    if not views:
        return 0.0
    return round(interactions / views * 100, 4)

举个算好的例子:一条有 891 个赞、142 次转发、38 条回复、23 次引用、浏览量 28.45 万的帖子,率是 (891 + 142 + 38 + 23) / 284500 × 100 = 0.38%。这个公式只用公开指标,所以数字在各账号间保持一致、可比,尽管读起来比仪表盘的混合数字要低。

本节是“指标和率”的参考。如果你要的是这些计数背后的人和文本,也就是真实的回复、引用推文和转发用户资料,那是另一件事,见 Twitter 互动 API 指南。想不写代码快速查一下,免费的互动率计算器会跨一个账号的近期推文算这个率。

除了原始计数还能分析什么 {#what-you-can-analyze-beyond-raw-counts}

在逐帖计数之外,API 数据能支撑仪表盘显示的那些分析维度。常见的包括随时间的粉丝增长、粉丝与关注比、受众所在地和语言、最佳发帖时间规律。再往上还有话题标签和主题表现、对比竞品的声量占比,以及识别最高价值的粉丝。这些都是靠定期采集正确的接口、再在你自己的代码里聚合来实现的,因为分析层在你的技术栈里,不在 API 里。

常见维度怎么映射到真实数据:

  • 粉丝增长。 没有 API 返回历史粉丝曲线,所以你要定期通过 /info 接口给资料拍快照、存下 followers_count。每日快照对多数报表就够了。
  • 受众地理与语言。 按国家的粉丝分布是定向的标准输入,按国家分析粉丝一文有详细介绍。
  • 竞品对标与声量占比。 拉每个对手的时间线,算出发帖量和平均互动,再跨账号聚合来排声量占比。
  • 情感与主题分析。 给提及背后的观点分类,本身就是一条独立的管道(抽取、清洗、打分),在 Twitter 舆情分析里走了一遍,这里不重复。
  • 最高价值粉丝。 具体到加密和 Web3 受众,Sorsa Score 按影响力给账号的粉丝排名,让你看清受众里谁真正要紧。
  • 带触达筛选的品牌提及。 /mentions 接口支持 min_likesmin_retweets 和日期界限,所以你分析的是有真实触达的提及,而不是零互动的噪音。

可视化建在这之上。一个常见的技术栈是:用 requests 拉推文、载入 pandas DataFrame、算率和滚动平均,再用 matplotlib 画趋势。API 交给你干净的 JSON,上面那些维度是你从中推导出来的。

实战:在固定预算内做竞品监测 {#in-practice-competitive-monitoring-on-a-flat-budget}

有一个我们常见的模式。某家中型 DTC(直接面向消费者)营销机构,要替一个客户追踪约 15 个竞品账号,每周推文量、互动率和品牌提及触达都要。他们之前的方案跑在旧的 X API Pro 套餐上,$5,000/月,而 X 转向按量付费之后,成本变得难以预测,因为每次资源抓取都单独计费。

我们围绕三次调用重构了整条管道。一个每周任务对每个竞品调 /user-tweets,采集最近 20 条带指标的推文,也就是每周 15 次请求。品牌提及来自按 min_likes 和一个 since_date 过滤的 /mentions,所以报告只浮现有触达的提及。每个账号每月一次 /info 快照,追踪粉丝随时间的增减。

总量约为每月 7,000 次请求,舒舒服服落在 $49/月的 Starter 套餐内。成本下降是实打实的,不是一次性的:对这类读密集型工作,固定套餐比官方按资源定价最多可便宜 50 倍,依据是公布的费率,不是一句承诺。数据也比他们旧报告更细,因为引用数和书签数在每个推文对象里都有。同样的三接口结构支撑着多数机构的报表工具;分析逻辑、异常标记和趋势检测都在 JSON 之上的代码里。成本可预测地增长,同一条管道也能扩展成一整套竞品追踪方案。

学术研究访问怎么了 {#what-happened-to-academic-research-access}

X 在 2023 年对新申请者停掉了免费的学术研究 API 访问。在那之前有访问权的研究者保留权限,但不再签发新的学术账号。唯一剩下的特殊通道,是给在《数字服务法》(第 40 条)下研究系统性风险的欧盟关联研究者,而这条通道的批准范围很窄。其他所有人都用付费的按量付费档位或第三方 API。

如果你的研究只需要公开推文指标和互动数据,不涉及私人用户信息或 firehose 流式,第三方 REST API 是可行之路。你拿到的是带同样公开指标的结构化 JSON,没有长达数月的审批,还完整覆盖可回溯至 2006 年的历史推文数据;研究团队可以申请折扣的学术研究访问。返回的指标反映每条帖子的当前状态,这是任何 API 上回溯性采集指标时的标准行为。

常见问题 {#frequently-asked-questions}

能获取别人推文的分析数据吗?

能,但只有公开指标。X API v2 的 public_metrics 字段(点赞、转发、回复、引用、浏览量、书签)用一个 bearer 令牌对任意公开推文都能取到。仅所有者可见的 organic_metrics 拆解(外加资料和链接点击)只限已认证账号发布的帖子。Sorsa 这类第三方 API 为任意公开帖子或账号返回同样的公开指标。

Twitter 分析仪表盘免费吗?

部分免费。自 2024 年起,X 桌面端完整的账号级分析仪表盘需要 X Premium 订阅。逐帖统计对所有用户仍然免费,可以在每条帖子上和移动端 App 里查看。所以免费账号仍能看到单条帖子的表现,但没有 Premium 到不了 28 天的账号概览,而且仪表盘没有任何部分能通过程序访问。

X API 读取推文指标要花多少钱?

X API 采用按量付费,没有免费额度。读取一条帖子每资源 $0.005,读取一份用户资料每资源 $0.010。你预先买额度,按调用扣除,没有月度订阅。拉 1 万条带作者的推文约 $150,因为每条推文和每份作者资料都单独计费。

X 上浏览量和展示量有什么区别?

对公开推文数据,“浏览量”和“展示量”是同一个数字:一条帖子在屏幕上出现了多少次。X API v2 在 public_metrics 里把这个字段叫 impression_count,Sorsa API 叫它 view_count。而在 X Ads API 里,“展示量”专指付费广告的投放,那是一个单独的指标,两者不该混为一谈。

2026 年高性价比地大规模拉取 X 互动数据,该怎么做?

多数团队用按请求计费的第三方 API。Sorsa API 无论哪个接口都按一次调用一次请求计费,所有套餐统一 20 次/秒。每次 /user-tweets 调用返回多达 20 条带完整指标和作者资料的推文,Pro 套餐上约合每 1,000 条推文 $0.10。对已知 ID 的批量采集,/tweet-info-bulk 一次请求接收 100 条推文,把成本降到每 1,000 条推文 $0.02 起。

第三方 API 能在分析上取代 X API v2 吗?

读取公开互动的话,大体上能。Sorsa API 为任意公开账号返回同样的六个公开指标,并把完整作者资料免费打包进每个推文响应,而官方 API 对此单独收费。真正的局限是:只读,不发帖、不发私信;而作为公开数据 API,它不暴露仅所有者可见的 organic_metrics 拆解。对分析负载来说,这些很少要紧。

能通过 API 获取历史推文分析吗?

能。官方 X API v2 全量存档搜索和 Sorsa 的 /search-tweets 都能取回可回溯至 2006 年的推文,每条返回的推文都带着当前的互动指标。这些数字反映当前状态,所以你看到的是一条 2020 年帖子现在有多少赞,不是当时有多少。想追踪随时间的变化,就在你自己的数据库里存周期性快照。

如何开始 {#getting-started}

如果你想在写代码之前先看看有哪些可能,先从无需 API 密钥的免费工具入手:

  • 在线试用工具 Playground 让你从浏览器测试任意接口,看到带每个指标的实时推文数据。
  • 互动率计算器从一个账号的近期推文算出它的率,无需密钥。

注册即送 100 次免费请求,无需绑卡,够你测遍全部 40 个接口。准备好写代码时,拿一个 API 密钥,跟着快速上手几分钟内发出第一次请求,无需应用审批,从第一个套餐起就是统一 20 次/秒。付费套餐从 $49 含 1 万次请求(Starter)和 $199 含 10 万次(Pro)起,批量接口上每千条推文成本 $0.02 起。与官方 API 的完整成本对比见 2026 年 Twitter API 定价,配置方面的问题可以在 Discord 上找到团队。


审校:Keksich(Sorsa 创始人,X API 研究者)

本文是怎么写成的:代码和指标映射来自我们开发并运营 Sorsa API 的自身工作,以及对照线上官方接口测试请求。官方那一侧,我们查了 X 的 public_metrics 数据字典和指标文档,以及 X Ads API 分析文档里关于活动指标和 90 天报告的细节。原生仪表盘的访问划分(账号级要 Premium、逐帖免费)对照 2026 年初发布的当前 X 分析指南做了确认;X API 的按量付费费率来自我们维护的定价参考,并与 X 的开发者定价交叉核对。X 上的定价和访问经常变,所以这里每个数字都于 2026 年 7 月 4 日重新核实。维护这些内容的团队信息见关于页面