问答

知道微博 UID,怎么拿到粉丝数和账号资料?

简短回答

把数字 UID 传给微博账号信息接口(/v1/weibo/users/get),就能拿到粉丝数、关注数、微博数、认证、昵称和简介,每个账号 $0.002。500 个账号刷新一遍共 $1.00;加 view=full 还能拿到认证说明和主页上显示的 IP 属地。

代理商甩过来一张表,里面是去年合作过的 500 个微博博主,每人一个 UID。客户要求续约之前先看一眼现在的粉丝数。一个个点开主页,得花一整天;用微博账号信息写个循环,几分钟跑完,留下一份干净的 CSV。

返回哪些字段

字段 含义
name、bio 昵称和简介
followers、following 粉丝数和关注数,以微博给出的为准
posts 账号的微博总数
verified 有没有认证标识
ext.verified_reason 认证说明,比如职位或公司名(需要 view=full)
ext.ip_location 主页上显示的 IP 属地(需要 view=full)
ext.location、ext.gender 主页上填写的所在地和性别(需要 view=full)

累计获赞数拿不到,返回 null,并写在 meta.unavailable 里。

UID 从哪来

这个接口只认数字 UID,不认链接,也不认昵称。主页地址形如 weibo.com/u/1234567890 的,那串数字就是 UID。用了个性域名的账号要多一步:用微博搜索搜一条他发过的微博,读结果里的 author.id。

费用

账号数 调用次数 费用
1 1 $0.002
50 50 $0.10
500 个,每月刷新一次,持续一年 6,000 $12.00

已注销或被封的账号返回 not_found,不扣费。

批量查询

import csv, os, requests

URL = "https://api.okdata.online/v1/weibo/users/get"
KEY = os.environ["OKDATA_API_KEY"]
MONTH = "2026-11"

with open("uids.txt") as f, open("profiles.csv", "w", newline="", encoding="utf-8") as out:
    w = csv.writer(out)
    w.writerow(["uid", "name", "followers", "following", "posts", "verified", "reason", "ip"])
    for uid in (line.strip() for line in f if line.strip()):
        r = requests.get(URL, params={"id": uid, "view": "full"}, timeout=30, headers={
            "Authorization": f"Bearer {KEY}",
            "Idempotency-Key": f"wb-profile-{uid}-{MONTH}",
        }).json()
        if r["code"] != "ok":
            w.writerow([uid, r["code"]]); continue
        a = r["data"]["item"]
        w.writerow([uid, a["name"], a["followers"], a["following"], a["posts"],
                    a["verified"], a["ext"].get("verified_reason"), a["ext"].get("ip_location")])

幂等键里带了月份,脚本中途崩了重跑,已经查过的账号直接回放结果,不会重复扣费。

容易忽略的地方

  • 接口目录里没有微博账号的微博列表,所以没法在这里拉某个博主最近发了什么。提到他的微博、或者他在某个关键词下发的内容,可以通过搜索找到。
  • 粉丝数里包含不活跃的粉丝和买来的粉丝。花钱买曝光之前,拿它和博主微博的点赞、转发对比一下。
  • 只返回公开的主页数据,需要登录才能看的内容一概没有。

其他选择

微博官方的广告投放平台能看到接商单博主的粉丝画像,这是这个接口做不到的;代理商的达人数据库也能看,按订阅收费。账号不到 20 个的话,直接点开主页看比写代码快。从找博主到筛博主的完整流程,见达人发现方案。

更新于