问答

怎么获取抖音评论者的 IP 属地,并按省份统计?

简短回答

okdata 抖音视频评论接口返回的每条评论都带 ip_location,也就是抖音在评论旁展示的省份,所以按省份统计就是对采到的评论计数。每页约 20 条,$0.002 一次,1,000 条评论共 $0.10;小红书评论也有同样的字段。

一个区域性的食品品牌,想在决定下一家门店开在哪座城市之前,先看看在自家抖音视频下评论的人都在哪里。抖音在每条评论旁边都标了 IP 属地,数据是现成的。可爬虫经常把它弄丢:搜索结果里本来就没有,有的工具从评论里取数时也没映射这个字段。通过 API 取到的每条评论都带这个字段,按省份统计就是数一数。

字段在哪

抖音视频评论的每条评论都带 ip_location,内容就是抖音展示的样子,通常是省份或地区名,比如广东、四川。视频搜索结果里没有这个字段,它属于评论(另外,加 view=full 时账号信息的 ext 里也有)。

步骤

  1. 选视频:自家的,或者用视频搜索找品类下的热门视频。
  2. 逐条视频翻评论。
  3. 统计 ip_location 的分布。想看“谁认同”而不是“谁在说”,就按点赞数加权。

费用

任务 调用次数 费用
1,000 条评论 50 $0.10
20 条视频 × 5 页 100 $0.20
同样的研究做在 20 篇小红书笔记 × 5 页 100 $2.00

脚本

import os, requests
from collections import Counter

URL = "https://api.okdata.online/v1/douyin/videos/comments/list"
HEAD = {"Authorization": f"Bearer {os.environ['OKDATA_API_KEY']}"}
where = Counter()
for vid in ["7301234567890123456"]:
    params = {"id": vid, "fields": "ip_location,likes"}
    for _ in range(5):
        body = requests.get(URL, headers=HEAD, params=params, timeout=60).json()
        where.update(c["ip_location"] or "unknown" for c in body["data"]["items"])
        if not body["page"]["has_more"]:
            break
        params["cursor"] = body["page"]["next_cursor"]
print(where.most_common(10))

解读时要小心

  • 这是抖音按评论者 IP 标注的属地,精确到省一级。VPN、出差、移动网络都会让它不准,也说明不了城市或区县。
  • 有的评论没有属地标注,统计时记为未知,不要直接丢掉。
  • 评论者不等于观众。会留言的人偏向活跃粉丝,结果应该理解为“讨论发生在哪里”。
  • 只有一级评论;回复数按条记录,但回复本身不返回。

其他选择

如果是自己的账号,抖音创作者中心里能看到观众的地域分布,回答“我的受众在哪”更合适。星图能看到你可能合作的达人的粉丝地域。要比较竞品视频之间的地域差异,公开评论就是能拿到的数据;可以参考口碑分析方案。

更新于