问答

怎么用 API 拿到任意一条推文的浏览量?

简短回答

把帖子链接或 ID 传给 X 帖子详情接口,就能拿到任何公开帖子的浏览、点赞、回复、转发和书签数,不管帖子是不是你发的,每条 $0.001。50 条投放帖子每天查一次、连查两周,共 700 次调用,$0.70。

一家代理商请了 10 位博主为新品发帖,客户要求两周内每天报一次每条帖子的浏览量。帖子在博主的账号上,代理商自己的后台看不到数据。X 帖子详情传入帖子链接或 ID,返回 X 在帖子下方公开展示的那些数字,任何公开帖子都可以查。

返回哪些数据

  • metrics.views:X 显示的浏览量
  • metrics.likes、metrics.reposts、metrics.comments(回复数)和 metrics.favorites(书签数)
  • 加上 view=full 后还有 ext.quotes(引用数)
  • 正文 text、发布时间 published_at、语言 lang、images 里的媒体,以及带粉丝数的作者信息

metrics.shares 永远是 null,因为 X 不展示分享数,响应的 meta.unavailable 里会写明。

按天追踪

import csv, datetime, os, requests

API = "https://api.okdata.online/v1"
H = {"Authorization": f"Bearer {os.environ['OKDATA_API_KEY']}"}

links = [line.strip() for line in open("campaign-posts.txt") if line.strip()]
today = datetime.date.today().isoformat()

with open("views.csv", "a", newline="", encoding="utf-8") as f:
    w = csv.writer(f)
    for link in links:
        body = requests.get(f"{API}/x/posts/get", headers=H, params={"url": link}, timeout=60).json()
        if body["code"] != "ok":
            w.writerow([today, link, body["code"]])  # not_found:已删除或受保护,不扣费
            continue
        m = body["data"]["item"]["metrics"]
        w.writerow([today, link, m["views"], m["likes"], m["reposts"], m["comments"], m["favorites"]])

x.com、twitter.com 的链接都可以,手机端链接也行。每天跑一次,CSV 就变成了每条帖子的增长曲线。

费用

任务 调用次数 费用
一条帖子 1 $0.001
50 条,查一次 50 $0.05
50 条,每天一次,连续 14 天 700 $0.70

如果这些帖子都带同一个话题标签或者都提到了同一个账号,用 X 帖子搜索翻一页($0.006)就能拿到约 20 条,指标一样齐全,比逐条查便宜。

注意事项

  • X 从 2022 年底才开始显示浏览量,更早的帖子没有这个数,views 为 null。
  • 已删除的帖子和受保护账号返回 not_found,不扣费。
  • 拿到的是 X 此刻对公众显示的数字。按来源拆分的曝光、链接点击、主页访问属于作者的私有分析数据,只有作者本人能看。

官方渠道

X 官方 API 的帖子公开指标里也有 impression_count,按量付费下每读一条帖子 0.005 美元。已经在用官方 API 的团队,直接用它就好。至于链接点击这类私有指标,不管走哪条路都需要作者本人授权。想从整体上盯住一场投放,可以看竞品监测方案。

更新于