Facebook Comments Scraper - Comments & Replies, No Login
Pricing
from $1.20 / 1,000 comments
Facebook Comments Scraper - Comments & Replies, No Login
Returns the comments of public Facebook posts, reels, videos and photos: text, author, date, reactions by kind, and every reply with its place in the thread. Newest first, most relevant or all, with a date limit and an only-new mode for monitoring. No login, no cookies, no browser.
Pricing
from $1.20 / 1,000 comments
Rating
0.0
(0)
Developer
Ben
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
5 hours ago
Last modified
Categories
Share
💬 Facebook Comments Scraper
Returns the comments of public Facebook posts without a login, a cookie or a browser. Paste links of posts, reels, videos or photos and get one row per comment: text, author, date, reactions by kind and the number of replies. Turn on replies and each comment is followed by its whole thread. Read newest first, stop at a date, or run it on a schedule and receive only the comments that are new.
Price: $1.50 per 1,000 comments on the Apify Free plan, down to $1.20 from the Gold plan up. A reply is a row like a comment. A post that is not public costs nothing. Export to JSON, CSV or Excel, run on a schedule, call via API, or connect to Make, Zapier or n8n.
🔎 What is the Facebook Comments Scraper?
A public post shows its comments to any visitor, ten at a time, when you click "View more comments". This Actor makes the same requests the post makes: 1,000 comments of one post in a minute, several posts side by side. Your own Facebook account is never involved, so nothing can happen to it.
What data does it extract?
- Comment: id, link, text, time, picture or GIF
- Author: name, Facebook's visitor id, and the profile or page link where Facebook shows it
- Engagement: reactions in total and by kind (like, love, care, haha, wow, sad, angry), number of replies
- Thread:
depth(0 comment, 1 reply, 2 reply to a reply) andparentId, so a thread can be rebuilt - Post: id and link on every row
How it reads the site
The Actor does not open a browser. It sends the post's own data requests directly, so a run needs 512 MB of memory and a few seconds for the first rows. A limit is exact: ask for 15 comments and 15 rows are saved and charged, although Facebook hands them out in tens. The status message says how many comments and replies Facebook counts for the post, so you see how much more there is.
⬇️ Input
| Field | Type | Default | What it does |
|---|---|---|---|
posts | array | Links of public posts, reels, videos or photos. An empty input reads a sample post | |
maxResults | integer | 20 | Rows to save per post, up to 10,000. Replies count as rows |
sortBy | string | newest | newest, all (every comment, most relevant first) or top (Facebook's "Most relevant" view, which can leave out comments it rates low) |
includeReplies | boolean | false | Adds the replies under each comment, and the replies to those |
postedAfter | string | empty | Stop each post at the first comment older than this day (YYYY-MM-DD) or period (3 days, 2 weeks). Works with newest |
onlyNewComments | boolean | false | Skip every comment an earlier run with the same monitor name delivered |
monitorId | string | empty | Name of that memory |
These link forms were tested: …/posts/<id>, …/posts/pfbid…, /groups/<group>/posts/<id>, /reel/<id>, /watch/?v=<id>, /<page>/videos/<id>, /photo/?fbid=<id>, /permalink.php?story_fbid=… and share links (/share/r/…).
Example input
The 200 newest comments of two posts:
{"posts": ["https://www.facebook.com/NASA/posts/1645077636987606","https://www.facebook.com/reel/2141054613462232/"],"maxResults": 200}
Every comment with its replies, most relevant first:
{"posts": ["https://www.facebook.com/groups/sciencehumor/posts/29015572704745743/"],"maxResults": 1000,"sortBy": "all","includeReplies": true}
A watch that delivers only new comments every hour:
{"posts": ["https://www.facebook.com/NASA/posts/1645077636987606"],"maxResults": 100,"onlyNewComments": true,"monitorId": "launch-post"}
Coming from another Facebook comments Actor?
The input names startUrls, resultsLimit and includeNestedComments are read as well, so an input written for one of the common Facebook comments Actors runs here unchanged:
{"startUrls": [{ "url": "https://www.facebook.com/groups/sciencehumor/posts/29015572704745743/" }],"resultsLimit": 30,"includeNestedComments": true}
⬆️ Output
One row per comment or reply. A page's own comment under its post (the text is shortened here):
{"commentId": "1801443917842284","url": "https://www.facebook.com/humansofnewyork/posts/pfbid0313GMHTmgAdXukr8Wb8qFxtTy16i6GH8GN46bL9h5aGsh2FeZi7sAyxikGTPycByxl?comment_id=1801443917842284","postId": "1650977309926585","postUrl": "https://www.facebook.com/humansofnewyork/posts/pfbid0313GMHTmgAdXukr8Wb8qFxtTy16i6GH8GN46bL9h5aGsh2FeZi7sAyxikGTPycByxl","text": "If you would like to hire Gabby, you can reach her here: …","createdAt": "2026-09-18T14:25:12+00:00","authorName": "Humans of New York","authorId": "100050429952420","authorUrl": "https://www.facebook.com/humansofnewyork","reactions": 5136,"reactionCounts": { "like": 3620, "love": 1198, "care": 317, "wow": 1 },"replies": 88,"depth": 0,"parentId": null,"imageUrl": null,"position": 1,"scrapedAt": "2026-10-04T11:40:35.660233+00:00"}
A reply has depth 1 or 2 and the commentId of the comment it answers in parentId. position is the row's place in the post's list: each comment is followed by its replies. The run also writes a SUMMARY record that names the posts that were not public or had no comments and the reason a run stopped.
💰 What a run costs
| Apify plan | Per 1,000 comments or replies |
|---|---|
| Free | $1.50 |
| Bronze | $1.40 |
| Silver | $1.30 |
| Gold, Platinum, Diamond | $1.20 |
Apify's standard start event ($0.00005) is the only other charge; proxies are included. Not charged: a post that is not public, a post without comments, a comment already delivered in only-new mode, and comments older than your date limit. Set the run's maximum charge and the Actor stops at it with the rows it has saved.
⏱️ Measured on Apify (October 4, 2026)
| Run | Rows | Time |
|---|---|---|
| Empty input (sample post) | 20 | 7 s |
| 1,000 newest comments of one post | 1,000 | 60 s |
| Three posts (group post, page post, reel) with replies, plus one that does not exist | 180 | 22 s |
| Four posts by photo, share, video and permalink link, plus one of them named twice | 40 | 8 s |
| Everything since two days ago on one post | 20 | 6 s |
| Only-new watch on one post, second run | 0 new | 7 s |
All at 512 MB. An aborted and resumed run of 600 comments and replies saved no row twice.
🔔 Watching posts for new comments
Turn on onlyNewComments, give the watch a monitorId and put the run on a schedule. The first run delivers the latest comments up to maxResults. Later runs read each post from its newest comment and stop when they reach comments they have already delivered; comments that were on the post before the watch began are left alone. The memory is a key-value store named facebook-comments-monitor in your own account; delete a record there to start a watch over.
🤖 For AI agents
Smallest useful call:
{"posts": ["https://www.facebook.com/NASA/posts/1645077636987606"], "maxResults": 50}
Each row is one comment with text, createdAt, authorName, reactions, reactionCounts, replies, depth, parentId and url. posts takes several links at once. Add "includeReplies": true for whole threads. A post that is not public returns no rows; the status message and the SUMMARY record name it. No credentials are needed.
💡 Use cases
- 📣 Campaign and brand feedback: what people answer under a brand's or a competitor's posts, with the reactions each comment got.
- 🧭 Lead finding: comments in which people ask for a price, a link or a recommendation.
- 🧪 Sentiment and topic analysis: whole threads as input for a model or a spreadsheet.
- 🛟 Community care: a schedule that brings every new comment on your pinned or promoted posts.
⚠️ Limits, stated plainly
- Public posts only. A post shared with friends or in a private group shows a visitor nothing, and this Actor does not log in.
- Ten comments per request. That is what Facebook gives a visitor. One post yields about 1,000 comments a minute; reply threads take one or more requests each.
- Tested up to 1,000 comments of one post in a run. The limit per post is 10,000 rows; how deep Facebook lets a visitor page beyond what was tested is not known.
- Reply counts can be a little higher than the replies delivered. Facebook counts replies it does not show to visitors. In a test of 12 complete threads, ten matched their count and two were two or three short.
- Author ids are visitor ids. Facebook gives a visitor an anonymous id (
pfbid…) for most members; the profile link is present where Facebook shows it (45 of 180 rows in one test). - A watch brings new comments, not later replies to old ones. A reply written after its comment was delivered is not picked up.
- Facebook limits how often one address may ask. The Actor changes addresses by itself. If Facebook stops answering in the middle of a post, the rows saved so far stay and the status message names the post.
❓ FAQ
Do I need a Facebook account or cookies? No. The Actor reads public posts the way a visitor without an account sees them.
Which links can I paste? Post, reel, video, photo and share links of pages, profiles and public groups. A link to a page or a group itself is not a post and is skipped with a note.
Does it return replies? Yes, with includeReplies. Each comment is followed by its replies and the replies to those.
Which order should I choose? newest for date limits and monitoring. all when you want every comment and the most relevant ones first. top is Facebook's "Most relevant" view.
Why are there fewer rows than the count on the post? The count includes replies; without includeReplies only comments are returned. Raise maxResults if the status message says there is more.
What happens when I give the same post twice under two links? It is read once; the second link is named in the status message.
Can I run it every hour? Yes. With onlyNewComments a post without new comments is left after its two newest pages of comments.
How do I call it from code? With the Apify API or the Python and JavaScript clients; every run returns a dataset you can fetch as JSON or CSV. It also works as a tool through Apify's MCP server.
Is it legal? The Actor reads what Facebook shows to everyone without a login. Comments and names are personal data: GDPR, CCPA and similar rules apply to how you store and use them, and Facebook's terms apply to you as well. Collect only what you need and do not use it to contact people who did not ask for it.
🔗 You might also like
- Facebook Posts Scraper: posts of public pages and profiles, with the links this Actor takes
- Facebook Groups Scraper: posts of public Facebook groups
- Instagram Comments Scraper: comments of public Instagram posts and reels
- YouTube Comments Scraper: comments and replies of YouTube videos
Keywords: facebook comments scraper, facebook post comments, scrape facebook comments, facebook comment export, facebook replies, facebook reel comments, facebook video comments, comment reactions, facebook comments csv, facebook comments api alternative, no login facebook scraper, comment monitoring, social listening, sentiment analysis data, facebook group post comments