Facebook Comments Scraper: With Replies avatar

Facebook Comments Scraper: With Replies

Pricing

from $0.17 / 1,000 comments

Go to Apify Store
Facebook Comments Scraper: With Replies

Facebook Comments Scraper: With Replies

Comments and replies from public Facebook posts, reels and videos, with reactions by type. $0.25 per 1,000 comments. Newest first, back to a date you choose.

Pricing

from $0.17 / 1,000 comments

Rating

0.0

(0)

Developer

Luzi

Luzi

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

11 days ago

Last modified

Features

Limited permissions

Share

Get the comments of public Facebook posts, reels and videos, with their replies and the replies to those, threaded. Every row carries the text, the time it was posted, the reactions by type (like, love, haha and the rest), the reply count, mentions and attachments such as GIFs, and the commenter's id, name, profile link and picture, plus the post's own text and counts. Newest first, back to a date you choose. No Facebook account, login or cookies needed.

Tested daily. Latest checks: 1,295 comments and replies from a Page post, a group post and a video in under 3.5 minutes; 1,076 from the last 12 hours of one post, newest first.

What does this Actor do?

You give it links to Facebook posts. For each post it reads the post's page, then its comments, newest first (or in the order you choose), and, if you ask, the replies under each comment. It saves one row per comment or reply until it reaches your limit, your date, or the end of the list.

Each row comes with:

  • the comment's text, the time it was posted (UTC), whether it was edited and its language
  • its reactions: the total and the count of each type
  • its number of replies, and for a reply: the comment it sits under, the comment or reply it answers, and that person's name
  • people and pages mentioned in it, and attachments such as GIFs, with their links
  • the commenter's id, name, profile link (when public), picture and verified badge
  • the post, as its page shows it: its owner, text, author (with link and picture), time and link, its reactions by type, comment and share counts, photos and videos, hashtags, mentions and links, the post it shares, and a group sale's item

Why use it?

  • Replies included, threaded. Turn on replies and each one links back to its comment and to the reply it answers, so you can rebuild every conversation.
  • Reactions by type. See which comments got laughs and which got anger, not just a total.
  • Only what's new. Give a date or a period ("6 hours") and the Actor reads newest first and stops at it, so a daily run reads only the newest comments.
  • Posts, reels and videos. Page and group posts, reels and videos, and permalink.php links.
  • Use the data anywhere. Download as JSON, CSV or Excel, or send it to your own tools through Apify's API and integrations.

How to use it

  1. Paste one or more post links into Post links.
  2. Optionally set Max comments per post, turn on Include replies, pick an Order, or fill in Only comments newer than.
  3. Click Start. When the run ends, open the Output tab to view the comments or download them.

Run it with no input to see a sample: up to 100 comments each from a NASA post and a reel, charged as usual.

A post's own link, as in your browser's address bar after you open the post:

  • a Page post: https://www.facebook.com/NASA/posts/pfbid02oiNe…
  • a group post: https://www.facebook.com/groups/1007033107457891/posts/1234567890123456/
  • a reel: https://www.facebook.com/reel/1557618349384047/
  • a video: https://www.facebook.com/watch/?v=1557618349384047
  • permalink.php?story_fbid=…&id=… links

A Page, profile or group link on its own is not a post: open the post and paste its link. Posts in private groups, and posts only friends can see, are not supported.

Use it with Facebook Posts Scraper's results

Already have post links in a Facebook Posts Scraper run? Skip the copying:

  1. Run the Facebook Posts Scraper, then open its run and copy the dataset id from the Storage tab (or paste the dataset's link).
  2. Paste it into Dataset id from a scraper run (datasetId) here. Or schedule this Actor after the other one and pass the id each time. If your account cannot read that dataset, paste its rows into Rows from a scraper run (datasetRows) instead.
  3. Click Start. The Actor reads each row's url as a link, adds it to Post links and reads its comments. Our Facebook Posts Actor writes the same url field, so its dataset works too.

Rows with no usable post link, such as a Page, profile or group link on its own, are skipped, and so are rows whose own comment count is 0. The status line says how many rows were read and how many were skipped. A link in both Post links and the dataset is read once. If Post links still holds the form's example links when you give a dataset, they are left out, and the status says so. At most 10,000 rows are read from one dataset. Comments are priced as usual: each comment saved is one row, whichever way the links reached us.

Input

FieldWhat it doesDefault
Post links (startUrls)The posts to read. Required.—
Max comments per post (maxCommentsPerPost)Stop after this many rows per post, replies included (to 50,000)100
Include replies (includeReplies)Also save the replies to each commentfalse
Order (sortOrder)newest, relevant (Facebook's default view) or allnewest
Only comments newer than (onlyCommentsNewerThan)A date, a time or a period such as 2 daysevery comment
Only new comments (onlyNewItems)Return only the comments an earlier run did not; see New items only belowoff

Example input:

{
"startUrls": [
{
"url": "https://www.facebook.com/NASA/posts/pfbid02oiNe7Qv1J9vDhhYw6bLqyVpF5fmy28wisVPKGgo3mMEh1HzBburWxYM48ppR3WQgl"
}
],
"maxCommentsPerPost": 1000,
"includeReplies": true,
"onlyCommentsNewerThan": "1 day"
}

New items only

Turn on Only new comments (onlyNewItems) for a scheduled run, or a re-run of the same task. Each run then returns only the comments it has not returned before: it reads each post back to a day before the last run that read it, and skips the comments an earlier run saved. Skipped comments are neither saved nor charged; each new comment is charged as usual. From the second run on, comments are read newest first, whatever Order is set to, and new replies under older comments are not returned in this mode: a post's walk ends at its first comment older than the last run.

  • Runs with other settings, or from another task, keep their own list, so two schedules on one post never skip each other's comments.
  • If a post stops at Max comments per post, the comments past that point are not returned later. Set the maximum above what one post gets between runs.
  • The list lives in your Apify account, in a key-value store named facebook-comments-scraper-monitor. Delete it to start afresh.

Output

One row per comment or reply. An example, with made-up values:

{
"comment_id": "1234567890123456",
"post_id": "1658876782274358",
"post_url": "https://www.facebook.com/NASA/posts/pfbid02oiNe7Qv1J9vDhhYw6bLqyVpF5fmy28wisVPKGgo3mMEh1HzBburWxYM48ppR3WQgl/",
"url": "https://www.facebook.com/NASA/posts/pfbid02oiNe7Qv1J9vDhhYw6bLqyVpF5fmy28wisVPKGgo3mMEh1HzBburWxYM48ppR3WQgl?comment_id=1234567890123456",
"text": "Beautiful shot!",
"created_at": "2026-10-17T05:18:46.000Z",
"depth": 0,
"thread_comment_id": null,
"parent_comment_id": null,
"reply_to_author_id": null,
"reply_to_author_name": null,
"author_id": "pfbid0AbCdEfGhIjKlMnOpQrStUv…",
"author_name": "Jane Doe",
"author_url": "https://www.facebook.com/people/Jane-Doe/pfbid0AbCdEfGhIjKlMnOpQrStUv…/",
"author_picture_url": "https://scontent.xx.fbcdn.net/…",
"author_type": "User",
"author_is_verified": false,
"reaction_count": 4,
"reactions": {
"like": 3,
"love": 1,
"care": 0,
"haha": 0,
"wow": 0,
"sad": 0,
"angry": 0,
"other": 0
},
"reply_count": 2,
"reply_count_visible": 2,
"edited": false,
"language": "en_XX",
"mentions": [],
"attachments": [],
"during_live_video": false,
"video_offset_seconds": null,
"post_owner_id": "100044561550831",
"post_owner_name": "NASA - National Aeronautics and Space Administration",
"post_text": "…",
"post_author_id": "100044561550831",
"post_author_name": "NASA - National Aeronautics and Space Administration",
"post_author_url": "https://www.facebook.com/NASA",
"post_author_picture_url": "https://scontent.xx.fbcdn.net/…",
"post_created_at": "2026-10-16T19:25:02.000Z",
"post_permalink": "https://www.facebook.com/NASA/posts/pfbid02oiNe7Qv1J9vDhhYw6bLqyVpF5fmy28wisVPKGgo3mMEh1HzBburWxYM48ppR3WQgl",
"post_comment_count": 1361,
"post_reaction_count": 122081,
"post_reactions": {
"like": 98000,
"love": 21000,
"wow": 2100,
"care": 600,
"haha": 300,
"sad": 50,
"angry": 31
},
"post_share_count": 7801,
"post_shared_text": null,
"post_shared_post": null,
"post_media": [
{
"type": "photo",
"id": "1234567890",
"url": "https://scontent.xx.fbcdn.net/…",
"width": 1080,
"height": 1350,
"image_text": "…"
}
],
"post_photo_count": 3,
"post_hashtags": [],
"post_mentions": [],
"post_links": [],
"post_sale": null,
"post_page_ad_library": { "id": "100044561550831", "is_business_page_active": false }
}
FieldWhat it holds
comment_idFacebook's id for the comment or reply
post_idThe post's id
post_urlThe post link the Actor read
urlA link to the comment
textThe text (empty for a GIF- or sticker-only comment)
created_atWhen it was posted, in UTC
depth0 for a comment, 1 for a reply, 2 for a reply to a reply
thread_comment_idFor a reply: the comment its thread sits under
parent_comment_idFor a reply: the comment or reply it answers
reply_to_author_idFor a reply: the id of the person it answers
reply_to_author_name… their name
author_idThe commenter's id
author_nameThe commenter's name
author_urlThe commenter's profile link (empty when it is not public)
author_picture_urlThe commenter's profile picture (the link expires after a while)
author_typeUser or Page
author_is_verifiedWhether the commenter has a verified badge
reaction_countReactions to the comment
reactionsReactions by type
reply_countReplies to the comment, as Facebook counts them
reply_count_visibleReplies Facebook shows to visitors
editedWhether the comment was edited
languageThe comment's language, as Facebook detects it
mentionsPeople, Pages and links tagged in the text, with their position
attachmentsAttachments such as GIFs, with their links
during_live_videoWhether it was written during a live video
video_offset_secondsOn a video: the moment of the video the comment was written at
post_owner_idThe id of the Page, profile or group the post belongs to
post_owner_name… its name
post_textThe post's text
post_author_idThe post's author
post_author_name… their name
post_author_url… their profile or Page link
post_author_picture_url… their picture
post_created_atWhen the post was posted, in UTC
post_permalinkThe post's own link, as Facebook gives it
post_comment_countThe post's comment count as Facebook shows it, replies included
post_reaction_countThe post's reactions
post_reactionsThe post's reactions by type
post_share_countThe post's shares
post_shared_textThe text of the post this one shares
post_shared_postThe post this one shares: its id, link, time, author and media
post_mediaThe post's photos and videos, with their links and sizes
post_photo_countHow many photos and videos the post has
post_hashtagsHashtags in the post
post_mentionsPeople and Pages tagged in the post
post_linksLinks written in the post
post_saleA group sale post's item: title, price, currency, sold or not
post_page_ad_libraryThe poster's Ad Library record: its id and whether it is active

Not included: who reacted, the commenter's friends or followers, and profile details beyond the above.

How much does it cost?

No surcharges and no paid options; an item that fails is not charged.

You pay for what you get:

  • $0.25 per 1,000 comments ($0.00025 a comment). A reply counts as a comment. Each is charged once per run.
  • No start fee, and nothing per post.

So 1,000 comments and replies from each of 4 posts cost $1. If you set a maximum cost for a run, the Actor stops when it reaches it and keeps every comment saved so far.

How long does a run take?

Expect about 350 comments and replies a minute. In testing, 1,295 rows from three posts took under 3.5 minutes, and 111 rows from two posts 25 seconds.

Good to know

  • You may get fewer comments than the post's count. Facebook's count includes replies and comments it does not show to visitors (hidden, filtered or deleted). Newest first reaches the most. With replies on, and no date window or only-new reading of the post, the run's status sets each post's rows against that count.
  • Replies: what visitors see. Facebook shows visitors most replies, and replies to replies inside the same thread. reply_count is Facebook's count, reply_count_visible what it shows.
  • Picture links expire. Profile pictures and attachments are signed links that stop working after some time. Download them soon after the run if you need them.
  • Post details vary by post kind. A regular post brings all of the post's fields; a reel or a video brings its text, author, time and, for a video, its counts. Fields a post's page does not show are empty.
  • Check your links first. A link that is not a Facebook post link stops the run before anything is read, and the message names it.
  • One post that cannot be read does not stop the run. The other posts carry on, and the run's status lists the posts that could not be read. The run fails only when no post could be read.
  • A date window sees new comments, not new replies under older ones. With Only comments newer than, the walk stops at the first older comment, so a reply posted today under last week's comment is not read.
  • One post under two links is read once. Its comments are saved under the first link; the second reads nothing new.
  • No comments is not an error. A post with no comments, or none newer than your date, saves nothing.

More Actors from us

Use it from an AI agent or the API

One call starts a run and returns its items (Apify waits up to 300 seconds; for a longer run, start it with POST /v2/acts/…/runs and read its dataset):

POST https://api.apify.com/v2/acts/luzivanlt~facebook-comments-scraper/run-sync-get-dataset-items?token=<YOUR_APIFY_TOKEN>

With the sample input as its JSON body:

{
"startUrls": [
{
"url": "https://www.facebook.com/NASA/posts/pfbid02oiNe7Qv1J9vDhhYw6bLqyVpF5fmy28wisVPKGgo3mMEh1HzBburWxYM48ppR3WQgl"
},
{
"url": "https://www.facebook.com/reel/1557618349384047/"
}
],
"maxCommentsPerPost": 100,
"includeReplies": false,
"sortOrder": "newest"
}

Its inputs, in the order of the input form:

InputWhat it takesDefault
startUrls (Post links)Links to public Facebook posts, as in your browser's address bar: Page and group posts (https://www.facebook.com/…/posts/…, groups/…/permalink/…, permalink.php?story_fbid=…&id=…), reels, videos (watch/?v=…), photos and share links (facebook.com/share/p/…).—
datasetId (Dataset id from a scraper run)The id of a run's dataset from Facebook Posts Scraper (apify/facebook-posts-scraper), so you do not copy post links by hand.—
datasetRows (Rows from a scraper run)Rows pasted from Facebook Posts Scraper (apify/facebook-posts-scraper) results, as a JSON list, when its dataset id is not readable by your account.—
maxCommentsPerPost (Max comments per post)Stop reading a post after this many comments, replies included.100
includeReplies (Include replies)Also save the replies to each comment, and the replies to those replies, each marked with the comment it answers.false
sortOrder (Order)Newest first reaches the most comments."newest"
onlyCommentsNewerThan (Only comments newer than)Leave empty for every comment.—
onlyNewItems (Only new comments)Turn this on for a scheduled run, or a re-run of the same task: each run then returns only the comments it has not returned before, reading each post back to a day before the last run that read it.—

Apify's MCP server, https://mcp.apify.com, lists it as luzivanlt/facebook-comments-scraper. To give an AI agent this Actor as a tool, add the server to the agent's MCP config:

{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com?tools=luzivanlt/facebook-comments-scraper"
}
}
}

The client signs in with OAuth, or add "headers": { "Authorization": "Bearer <APIFY_TOKEN>" }.

Charged per comment delivered; the sample input above costs at most $0.05.

FAQ

Do I need a Facebook account or cookies? No. The Actor reads the comments anyone can see on the post.

Can I get the posts of a Page or group? Not with this Actor: it reads the comments of the posts you give it.

Can I run it from my own code, on a schedule, or with other apps? Yes. Like any Apify Actor, you can start it through the Apify API, run it on a schedule, and connect it to other apps with Apify's integrations and webhooks.

This Actor reads only comments that anyone can see without logging in. The results include commenters' names, ids, profile links and pictures, which are personal data protected by laws such as the GDPR. Only collect personal data when you have a legitimate reason to, and check Facebook's terms and the laws that apply to you. If you are unsure, ask a lawyer.

Support

Found a problem or missing a feature? Open an issue on the Issues tab and include the run's link.


This Actor is not affiliated with, endorsed by or sponsored by Facebook or Meta.