Facebook Comments Scraper - Comments & Replies, No Login avatar

Facebook Comments Scraper - Comments & Replies, No Login

Pricing

from $1.20 / 1,000 comments

Go to Apify Store
Facebook Comments Scraper - Comments & Replies, No Login

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

Ben

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

5 hours ago

Last modified

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) and parentId, 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

FieldTypeDefaultWhat it does
postsarrayLinks of public posts, reels, videos or photos. An empty input reads a sample post
maxResultsinteger20Rows to save per post, up to 10,000. Replies count as rows
sortBystringnewestnewest, all (every comment, most relevant first) or top (Facebook's "Most relevant" view, which can leave out comments it rates low)
includeRepliesbooleanfalseAdds the replies under each comment, and the replies to those
postedAfterstringemptyStop each post at the first comment older than this day (YYYY-MM-DD) or period (3 days, 2 weeks). Works with newest
onlyNewCommentsbooleanfalseSkip every comment an earlier run with the same monitor name delivered
monitorIdstringemptyName 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 planPer 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)

RunRowsTime
Empty input (sample post)207 s
1,000 newest comments of one post1,00060 s
Three posts (group post, page post, reel) with replies, plus one that does not exist18022 s
Four posts by photo, share, video and permalink link, plus one of them named twice408 s
Everything since two days ago on one post206 s
Only-new watch on one post, second run0 new7 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

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