Answers
How do I find WeChat Official Accounts in a niche to advertise with?
Short answer
Search a few niche keywords with Official Account search, which returns up to 10 accounts per call with average headline reads and posting rate (view=full), charged $0.058 per account returned. Then read the last 10 articles of your shortlist with article history at $0.04 each. Five keywords and 15 shortlisted accounts cost at most $3.50.
A camping gear brand has a budget for six Official Account placements and needs a list of accounts its buyers actually read. The first pass is a keyword search: Official Account search with words like 露营, 户外装备 or 徒步 returns matching accounts, and with view=full each comes with the numbers you sort on, average headline reads, average likes, articles per week and the last time it published. The second pass reads what the best candidates actually publish, through article history.
Step by step
- Cast the net. Search four to six keywords, including the words your customers use rather than your category name. Different phrasings surface different accounts.
- Sort and cut. Drop accounts that haven't published in a month. Sort the rest by
ext.avg_top_read. Checkext.ownerto spot accounts run by your competitors or by media companies that sell bundles. - Read before you pay. For the top 15, pull the last 10 articles. Look at what goes in the headline slot, how reads hold up from piece to piece, and whether they have run ads for brands like yours.
import os, requests
API = "https://api.okdata.online"
H = {"Authorization": f"Bearer {os.environ['OKDATA_API_KEY']}"}
def search(word):
body = requests.get(API + "/v1/wechat_mp/accounts/search", headers=H, timeout=60,
params={"query": word, "view": "full"}).json()
return body["data"]["items"] if body["code"] == "ok" else []
found = {}
for word in ["露营", "户外装备", "徒步"]:
for acc in search(word):
found[acc["id"]] = acc # the same account can match several words
ranked = sorted(found.values(), key=lambda a: a.get("ext", {}).get("avg_top_read") or 0, reverse=True)
for a in ranked[:15]:
e = a.get("ext", {})
print(a["name"], a["id"], e.get("avg_top_read"), e.get("articles_per_week"), e.get("last_published_at"))
Cost
| Step | Calls | Cost, at most |
|---|---|---|
| 5 keyword searches, a full page each | 5 | $2.90 |
| Last 10 articles of 15 shortlisted accounts | 15 | $0.60 |
| Both | 20 | {{cost:wechat_mp.accounts.search5+wechat_mp.accounts.articles.list15}} |
Search is charged per account returned, so a narrow keyword that returns four accounts costs less than a broad one that fills the page. Further pages of the same keyword are separate calls.
What the search won't tell you
- It finds accounts, not articles. An account that wrote one great camping piece but is mainly about cars won't show up for 露营.
- Follower numbers in the results are third-party estimates. Headline reads are the better guide; see how to check follower counts.
- Prices, audience demographics and past ad clients are not in any public data. You get those by asking.
Other routes
WeChat's own search in the app (搜一搜) is free and good for a quick look at ten accounts. The official advertising marketplace for Official Account placements lists accounts that accept ads, with backend-verified data and set prices, which makes it the safer channel once you are ready to book. Agencies that specialise in WeChat placements keep their own lists. Use the API when you want a wide, sortable first list fast; the creator discovery guide covers the same job on Xiaohongshu, Douyin and Bilibili.
Updated