WeChat Article Comments Scraper — 公众号文章评论 + 回复抓取
Pricing
$0.08 / actor start
WeChat Article Comments Scraper — 公众号文章评论 + 回复抓取
EN — Pull public comments and reply threads from a WeChat Official Account article. mode=comments for top-level comments only; mode=with-replies adds per-comment reply chains. Free users: 5 runs/day. ZH — 抓取公众号文章公开评论 + 回复链。mode=comments 只拉一级评论;mode=with-replies 拉一级 + 二级回复。
Pricing
$0.08 / actor start
Rating
0.0
(0)
Developer
wang wei
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
WeChat Article Comments Scraper
EN — Pull public comments and reply threads from any WeChat Official Account article. mode=comments returns top-level comments only (cheapest); mode=with-replies adds per-comment reply chains (one extra upstream call per comment that has replies).
ZH — 抓取任意公众号文章的公开评论和回复链。mode=comments 只返回一级评论(最便宜);mode=with-replies 在每条有回复的评论下追加二级回复链(每条需要时多 1 次上游调用)。
- Console: https://console.apify.com/actors/ier1jWLNCkvLh8vpS
- Short link: opspilot.cc/wechat-article-comments-scraper
When to use this Actor
| Goal | Actor |
|---|---|
| List every article on an account | WeChat Account Articles Scraper |
| Read a single article's full body + author | WeChat Article Detail Scraper |
| Read the account's profile (IP region, original count, ban status) | WeChat Account Profile Scraper |
| Pull interaction metrics (read / like / share) | WeChat Article Metrics Scraper |
| Pull comments + reply threads (this Actor) | — |
| Search across all of WeChat | WeChat Universal Search Scraper |
Input
| Field | Type | Default | Notes |
|---|---|---|---|
url | string | https://mp.weixin.qq.com/s/TSNQKkRpN1qbKsT7BvzqIw | Article URL. Short (/s/<sn>) and long (/s?__biz=...&mid=...) forms accepted. |
mode | string | "comments" | comments = top-level only. with-replies = comments + reply chains (1 extra upstream call per comment that has replies). |
commentId | string | "" | Pre-known comment_id from /fetch_article_detail response's commentId. Speeds up upstream by skipping HTML pre-fetch. Leave empty to let upstream fetch the article HTML. |
maxComments | int | 100 | Hard cap on total comments pulled across paginated requests. 1-500. |
maxReplies | int | 50 | Hard cap on replies per comment (mode=with-replies). 1-200. |
raw | string | "false" | false = omit raw upstream payload; true = attach rawData for debugging. |
Where to get a URL
- From the Article Detail Scraper: pass any URL, get back
commentId+ body. - From the Account Articles Scraper: each row's
urlfield.
Output (one row per Actor run)
{"url": "https://mp.weixin.qq.com/s/TSNQKkRpN1qbKsT7BvzqIw","mode": "with-replies","commentId": "3884868893382230017","appmsgId": "2247780992","totalCount": 28,"electedTotal": 22,"fetchedCount": 10,"hasMore": false,"continueFlag": 0,"commentsPages": 1,"comments": [{"contentId": "921450079049482451","nickName": "IFGSLL","content": "懂了,这就下单 4070TI","likeNum": 20,"createTime": 1741148721,"ipRegion": { "country": "中国", "province": "江苏", "city": "" },"ipIds": { "country": "156", "province": "", "city": "" },"isElected": 1,"isTop": 0,"identityName": "oHQDtwGndOC9slgFqApFtbjJEdxk","replyTotal": 1,"replies": [{"replyId": "2","nickName": "🦄Savior","content": "还没降价,再等等","createTime": 1741149962,"ipRegion": { "country": "中国", "province": "河南", "city": "" },"ipIds": { "country": "156", "province": "", "city": "" },"identityName": "oHQDtwJjKLALca6GJyICQCRhAvKg","fromAi": 0,"replyIsElected": null}]}],"collectedAt": "2026-09-16T12:00:00.000Z"}
Field notes
totalCount/electedTotalcome from the upstream's first response (total in the system).fetchedCountis how many made it into this run (≤maxComments).contentId/replyId/commentId/appmsgIdare always strings (big-integer safe per JSON serialization rules).ipRegionis the human-readable form (country_name / province_name / city_name);ipIdscarries the parallel numeric codes (country_id / province_id / city_id).repliesis[]whenmode=commentseven ifreplyTotal > 0. Usemode=with-repliesto fetch them.hasMore=truemeans upstream still has more comments / replies beyondmaxComments/maxReplies. Re-run with higher caps to drain.
How to run
- Console: paste any article URL (or use the default) and click Start.
- API:
curl -X POST "https://api.apify.com/v2/acts/ier1jWLNCkvLh8vpS/runs?waitForFinish=60" \-H "Authorization: Bearer <APIFY_TOKEN>" \-H "Content-Type: application/json" \-d '{"url":"https://mp.weixin.qq.com/s/...", "mode":"with-replies"}'
- CLI:
apify call wechat-article-comments-scraper \-i '{"url":"https://mp.weixin.qq.com/s/...", "mode":"with-replies", "maxComments":200}'
Free users: 5 runs/day. Paid users: 1 PPE event per upstream page (article-comments-result).
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 | Article Metrics Scraper | …/y3ZqhBdIY2LzGtkVK |
| step ④ comments (you are here) | Article Comments Scraper | …/ier1jWLNCkvLh8vpS |
| step ① profile (alt) | Account Profile Scraper | …/3JV499ECEjb5un854 |
You are here: Article Comments Scraper (step ④) — pair it with an Article Detail / Metrics output for the URL, or pass any URL you already have.
Pricing
PPE: 1 event per upstream page fetched. article-comments-result event is charged with count = (comments pages) + (reply batches). Mode comments typically produces 1-3 PPE per run; mode with-replies produces (comments pages) + (number of comments with replies) PPE per run.
Tests
$npm test
Runs unit assertions (input validation, body shape, normalize across comments / with-replies / raw=true / raw=false, §98 string coercion, ip_wording flattening, null handling) plus 9 integration scenarios (mock fetch drives the full run() flow including default/with-replies modes, commentId forwarding, maxComments cap, free-tier gating, upstream errors).
✅ unit.js: all assertions passed.integration.js: 9 scenarios passed.