问答
怎么用 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 的团队,直接用它就好。至于链接点击这类私有指标,不管走哪条路都需要作者本人授权。想从整体上盯住一场投放,可以看竞品监测方案。
更新于