WeChat Article Comments Scraper — 公众号文章评论 + 回复抓取 avatar

WeChat Article Comments Scraper — 公众号文章评论 + 回复抓取

Pricing

$0.08 / actor start

Go to Apify Store
WeChat Article Comments Scraper — 公众号文章评论 + 回复抓取

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

wang wei

Maintained by Community

Actor 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 次上游调用)。


When to use this Actor

GoalActor
List every article on an accountWeChat Account Articles Scraper
Read a single article's full body + authorWeChat 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 WeChatWeChat Universal Search Scraper

Input

FieldTypeDefaultNotes
urlstringhttps://mp.weixin.qq.com/s/TSNQKkRpN1qbKsT7BvzqIwArticle URL. Short (/s/<sn>) and long (/s?__biz=...&mid=...) forms accepted.
modestring"comments"comments = top-level only. with-replies = comments + reply chains (1 extra upstream call per comment that has replies).
commentIdstring""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.
maxCommentsint100Hard cap on total comments pulled across paginated requests. 1-500.
maxRepliesint50Hard cap on replies per comment (mode=with-replies). 1-200.
rawstring"false"false = omit raw upstream payload; true = attach rawData for debugging.

Where to get a URL


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 / electedTotal come from the upstream's first response (total in the system). fetchedCount is how many made it into this run (≤ maxComments).
  • contentId / replyId / commentId / appmsgId are always strings (big-integer safe per JSON serialization rules).
  • ipRegion is the human-readable form (country_name / province_name / city_name); ipIds carries the parallel numeric codes (country_id / province_id / city_id).
  • replies is [] when mode=comments even if replyTotal > 0. Use mode=with-replies to fetch them.
  • hasMore=true means upstream still has more comments / replies beyond maxComments / maxReplies. Re-run with higher caps to drain.

How to run

  1. Console: paste any article URL (or use the default) and click Start.
  2. 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"}'
  3. 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 pipelineActorConsole
step ① listingAccount Articles Scraper…/vxAjW6anQJQWk7xTF
step ② detailArticle Detail Scraper…/5vrr8dBcnclIva0Lx
step ③ metricsArticle 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.