WeChat Article Metrics Scraper — 公众号文章阅读/点赞/分享/收藏数
Pricing
$0.06 / actor start
WeChat Article Metrics Scraper — 公众号文章阅读/点赞/分享/收藏数
📊 WeChat Article Metrics | The read and share counts behind an article Fetch public interaction metrics for any WeChat Official Account article: read count, like count, share count, collect count, comment count and star count. Two engines — a full-metrics default and a lighter h5 mode.
Pricing
$0.06 / actor start
Rating
0.0
(0)
Developer
wang wei
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
0
Monthly active users
6 days ago
Last modified
Categories
Share
WeChat Article Metrics Scraper
✨ What you get
EN — Fetch public interaction metrics for any WeChat Official Account article. Returns read count, like count, share count, collect count, comment count, and star count. Two engines: default returns full metrics; h5 is a fast path that returns only comment_count and elected_comment_count, with an optional pre-known comment_id to skip the HTML pre-fetch.
ZH — 抓取任意公众号文章的公开互动数据:阅读数、点赞数、分享数、收藏数、评论数、星标数。两种引擎:default 返回全量指标;h5 是快速路径,只返回评论数 + 精选评论数,可通过预知 comment_id 跳过 HTML 预抓(节省约一半延迟)。
💼 Use cases
- Reading the full interaction set for one article —
engine=defaultreturnsreadNum,likeCount,shareCount,collectCount,starNumandcommentCounton one row. - Getting comment numbers fast when you already have the thread ID —
engine=h5with a knowncommentIdskips the HTML pre-fetch and returnscommentCountandelectedCommentCountat roughly half the latency. - Telling the two like counters apart —
oldLikeCountis the legacy likes figure tracked separately from the modern in-articlelikeCount, so you can compare an old and a new measure of the same article. - Benchmarking a post against the publisher's other posts — pair the row with the article listing Actor and you have reach, likes, shares and collects for every URL an account has published.
✅ Who this is for
- Content analysts — who need per-article reach rather than follower counts, and who work from a list of URLs instead of a keyword.
- Agencies and consultancies — building a performance view of a client's or a competitor's best-performing posts.
- Editors — deciding which article to reuse or amplify, using shares and collects as the signal rather than reads alone.
- Anyone optimising for speed on comment-heavy posts — the fast path with a known
commentIdis the cheapest way to check comment volume before pulling the thread.
❌ Who this is NOT for
- You are reading
engine=h5output as zeros — the fields the fast path does not expose come back asnull, not0, andunavailablenames them explicitly. Null means not retrieved, not no engagement. - You want a trend line — a run returns the current counters for one URL and nothing else. There is no history here; build a series by scheduling the Actor and storing each run's values yourself.
- You plan to add up
likeCountandoldLikeCount— they are two different counters on the same article, not two halves of one total. Summing them double-counts and misleads. - You read
starNumas article bookmarks — star is the user favouriting the official account from that article, whereascollectCountis the article's own collect count. They measure different behaviours. - You want video metrics — this Actor covers WeChat Official Account articles. Interaction data for a 视频号 video sits on the Channels Actors, and each article is a separate one-URL run.
🚀 Quick start
- Console: paste any article URL (or use the default) and click Start.
- API:
curl -X POST "https://api.apify.com/v2/acts/<ACTOR_ID>/runs?waitForFinish=60" \-H "Authorization: Bearer <APIFY_TOKEN>" \-H "Content-Type: application/json" \-d '{"url":"https://mp.weixin.qq.com/s/...", "engine":"default"}'
- CLI:
apify call wechat-article-metrics-scraper \-i '{"url":"https://mp.weixin.qq.com/s/...", "engine":"h5", "commentId":"12345"}'
Free users: 5 runs/day. Paid users: 1 PPE event per run (article-metrics-result).
📥 Input parameters
| Field | Type | Default | Notes |
|---|---|---|---|
url | string | https://mp.weixin.qq.com/s/TSNQKkRpN1qbKsT7BvzqIw | Article URL. Both short (/s/<sn>) and long (/s?__biz=...&mid=...) forms accepted. |
engine | string | "default" | default = full metrics via /fetch_article_stats. h5 = /fetch_article_stats_h5 fast path; returns only comment_count + elected_comment_count. |
commentId | string | "" | Pre-known comment_id from /fetch_article_detail response's commentId field. Only used when engine=h5; speeds up the data provider call by skipping the HTML pre-fetch. Leave empty to let Data provider fetch the article HTML itself. |
raw | string | "false" | false = omit raw Data provider payload; true = attach rawData for debugging. |
Where to get a URL
- From a friend's share: copy the URL directly.
- From the Article Detail Scraper: pass any URL you have, get back
commentId+ body. - From the Account Articles Scraper: each row's
urlfield is an article URL.
📤 Output
engine=default
{"url": "https://mp.weixin.qq.com/s/TSNQKkRpN1qbKsT7BvzqIw","engine": "default","readNum": 19839,"likeCount": 74,"oldLikeCount": 123,"shareCount": 693,"collectCount": 108,"starNum": 46,"commentCount": 3,"electedCommentCount": null,"unavailable": [],"collectedAt": "2026-09-16T12:00:00.000Z"}
engine=h5
{"url": "https://mp.weixin.qq.com/s/...","engine": "h5","readNum": null,"likeCount": null,"oldLikeCount": null,"shareCount": null,"collectCount": null,"starNum": null,"commentCount": 4,"electedCommentCount": 2,"unavailable": ["read_num", "like_count", "old_like_count", "share_count", "collect_count", "star_num"],"collectedAt": "2026-09-16T12:00:00.000Z"}
Field notes
- For
engine=h5, fields the H5 page doesn't expose come back asnull(not zero). Theunavailablearray lists the names the data provider explicitly marked unavailable. oldLikeCountis the legacy "likes" count tracked separately from the modern in-article likes.starNumis "star" (星标) — users who favorited the official account from this article.electedCommentCountis the count of comments hand-picked by the publisher (精选评论).
💰 Billing
1 PPE event per Actor run (article-metrics-result). Engine choice doesn't affect pricing — both call the data provider once.
📚 Resources
$npm test
Runs unit assertions (input validation, body shape, normalize across default / h5 / raw=true / raw=false, null handling) plus 9 integration scenarios (mock fetch drives the full run() flow including default/h5 engines, commentId forwarding, free-tier gating, Data provider errors).
✅ unit.js: all assertions passed.integration.js: 9 scenarios passed.
📜 Notes & caveats
Use it together with the other WeChat Actors
| Where in the pipeline | Actor | Console |
|---|---|---|
| step ① listing | Account Articles Scraper | …/vxAjW6anQJQWk7xTF |
| step ② detail | Article Detail Scraper | …/5vrr8dBcnclIva0Lx |
| step ③ metrics (you are here) | Article Metrics Scraper | …/actor |
| step ④ comments | Article Comments Scraper | …/comments |
| step ① profile (alt) | Account Profile Scraper | …/3JV499ECEjb5un854 |
You are here: Article Metrics Scraper (step ③) — pair it with a Detail Scraper output to get the body's commentId and pass it here as commentId for fast-path engine=h5.