Answers
How do I find Weibo bloggers (KOLs) in a niche?
Short answer
Search a handful of niche keywords with Weibo post search, group the posts by author, rank authors by how often they post and how much engagement they get, then look up the top ones with Weibo account profile. Twenty search pages plus 50 profile lookups cost $0.14.
An outdoor gear brand wants 30 Weibo bloggers who actually write about camping and hiking, not celebrities who once posted a tent photo. The useful signal is behaviour: who keeps posting on the topic, and whose posts people repost. Search gives you that directly, because every result carries its author.
Three steps
- Search the niche. Run Weibo post search for 4 or 5 keywords such as 露营装备, 徒步路线 and 户外测评. Use
sort=hotto surface established voices andsort=latestto catch smaller, active ones. - Rank authors. Group posts by
author.id. Count posts per author and add up their reposts and likes. Search results already include each author's follower count and verification flag. - Vet the shortlist. Call Weibo account profile with
view=fullfor the top 50 to read the bio, post count, verification reason (for example a job title or a certified outdoor guide) and IP location.
What it costs
| Step | Calls | Cost |
|---|---|---|
| 5 keywords × 2 sorts × 2 pages | 20 | $0.04 |
| Profiles for the top 50 | 50 | $0.10 |
| Whole run | 70 | {{cost:weibo.posts.search20+weibo.users.get50}} |
Code
import os, requests
from collections import defaultdict
API = "https://api.okdata.online"
H = {"Authorization": f"Bearer {os.environ['OKDATA_API_KEY']}"}
def call(path, **p):
r = requests.get(API + path, headers=H, params=p, timeout=30).json()
if r["code"] != "ok":
raise RuntimeError(f"{r['code']}: {r['message']}")
return r["data"]
authors = defaultdict(lambda: {"posts": 0, "engagement": 0, "name": None, "followers": None})
for kw in ["露营装备", "徒步路线", "户外测评", "轻量化徒步", "露营地推荐"]:
for sort in ("hot", "latest"):
for p in call("/v1/weibo/posts/search", query=kw, sort=sort)["items"]:
a = authors[p["author"]["id"]]
a["posts"] += 1
a["engagement"] += (p["metrics"]["reposts"] or 0) + (p["metrics"]["likes"] or 0)
a["name"], a["followers"] = p["author"]["name"], p["author"]["followers"]
top = sorted(authors.items(), key=lambda kv: (kv[1]["posts"], kv[1]["engagement"]), reverse=True)[:50]
for uid, a in top:
prof = call("/v1/weibo/users/get", id=uid, view="full")["item"]
print(a["name"], a["posts"], a["engagement"], prof["followers"], prof["ext"].get("verified_reason"))
The sample above fetches one page per keyword and sort; add a cursor loop for deeper lists.
What this cannot tell you
- Audience demographics, rate cards and past brand deals are not public data, so they are not here.
- The catalog has no Weibo account timeline. You see a blogger's posts that matched your keywords, not their whole feed.
- High followers with little engagement often means inactive or bought followers. Engagement per post is the better filter.
Other routes
Weibo's official marketplace for paid blogger posts shows audience data and handles contracts, which suits a brand ready to buy placements. Agencies keep curated lists for a fee. For a list of ten, browsing a topic page on Weibo by hand works. The cross-platform version of this workflow is on creator discovery.
Updated