Facebook Comments Extractor ๐Ÿ—จ๏ธโšก: Data, Details & Analytics avatar

Facebook Comments Extractor ๐Ÿ—จ๏ธโšก: Data, Details & Analytics

Pricing

from $0.30 / 1,000 results

Go to Apify Store
Facebook Comments Extractor ๐Ÿ—จ๏ธโšก: Data, Details & Analytics

Facebook Comments Extractor ๐Ÿ—จ๏ธโšก: Data, Details & Analytics

๐Ÿ’  $0.5 / 1,000 results ยทโšก High-speed comment scraping for 100+ Facebook URLs per run โ€” extract comments, replies, shared links, and images across Posts, Videos, Reels, and Groups.

Pricing

from $0.30 / 1,000 results

Rating

4.9

(6)

Developer

TheDoor

TheDoor

Maintained by Community

Actor stats

8

Bookmarked

1.2K

Total users

230

Monthly active users

a day ago

Last modified

Share

โšก Facebook Comment Scraper โ€” 100+ Post URLs in One Run

Facebook comment scraping process

Scrape comments from 100+ Facebook URLs in one run at high speed, including replies, images, shared links, reaction totals, and author profiles. Supports Posts, Videos, Reels, Groups, and almost every common Facebook URL format. Built for AI agents, SaaS applications, and automation workflows.

โšก Fast & Reliable

Built for high-volume comment collection in AI agents, SaaS apps, and automation workflows:

  • โšก 100+ Facebook URLs in one run with asynchronous bulk processing
  • ๐Ÿš€ Thousands of comments in minutes with automatic retry on transient errors
  • ๐ŸŒ Almost all common URL types โ€” posts, photos, videos, reels, groups, share links, and profile posts
  • ๐Ÿ–ผ๏ธ Rich comment data โ€” author profiles, profile pictures, comment images, media, and shared links
  • ๐Ÿ“Š Engagement data โ€” reaction totals, per-type reactions, replies, timestamps, and direct comment URLs

Explore the full Facebook scraping toolkit

Need the posts before collecting comments? Use the Facebook Group Post Scraper for public group posts or the Facebook Page Scraper for page posts. Then send the resulting post URLs to this Actor to collect comments and replies.


๐Ÿ“‹ Supported URL Formats

URL typeExample patternAccepted
Shared post linkfacebook.com/share/p/{share_id}/โœ…
Shared video linkfacebook.com/share/v/{share_id}/โœ…
Shared reel linkfacebook.com/share/r/{share_id}/โœ…
Reelfacebook.com/reel/{reel_id}โœ…
Watch videofacebook.com/watch/?v={video_id}โœ…
Page videofacebook.com/{page}/videos/{video_id}โœ…
Group postfacebook.com/groups/{group}/permalink/{post_id}/โœ…
Group post (posts path)facebook.com/groups/{group}/posts/{post_id}/โœ…
Page postfacebook.com/{page}/posts/{post_id}โœ…
Page post with pfbidfacebook.com/{page}/posts/pfbid{...}โœ…
Legacy permalinkfacebook.com/permalink.php?story_fbid={post_id}&id={page_id}โœ…
Photo postfacebook.com/photo/?fbid={photo_id}โœ…
Legacy photo linkfacebook.com/photo.php?fbid={photo_id}โœ…

Shared links are automatically resolved to the underlying Facebook post before comments are collected. Reel links are normalized to the equivalent Watch surface when needed for reliable comment access.


๐Ÿ“ฅ Input Configuration

Simple Input Example

Fixed Number of Comments

{
"postUrls": [
"https://www.facebook.com/groups/344287045137154/permalink/901179039447949/",
"https://www.facebook.com/groups/n8n.automation/permalink/25205583905788653/",
"https://www.facebook.com/watch/?v=1510975140138256"
],
"orderingMode": "MOST_RELEVANT",
"targetComments": 100,
"includeReplies": true,
"includeReactions": true
}

This collects up to 100 comments per Post URL.

All Available Comments

{
"postUrls": [
"https://www.facebook.com/reel/787423957218284"
],
"orderingMode": "ALL",
"targetComments": -1,
"includeReplies": true,
"includeReactions": true
}

Use targetComments: -1 to collect all available comments. The Actor will continue through every available comment page instead of stopping at a fixed limit.

Limit Replies per Comment

{
"postUrls": [
"https://www.facebook.com/CNN/posts/1510975140138256"
],
"orderingMode": "MOST_RELEVANT",
"targetComments": 50,
"includeReplies": true,
"maxReplies": 10
}

This collects up to 50 comments, each with up to 10 replies (nested replies included).

Comments From the Last 7 Days

{
"postUrls": [
"https://www.facebook.com/realieltsvn/posts/pfbid0ifsVqVRZ9k1PJYvKNbcx218a3XYshG8ZqLmjW6i1mBhhEnj5c4EpeWmDCQuDTXMhl"
],
"commentsNewerThan": "7 days",
"targetComments": -1,
"includeReplies": true
}

Set commentsNewerThan to get only comments posted within a relative time, for example "24 hours", "7 days", or "30 minutes", the same format as postsNewerThan in our Page and Group Actors. Use targetComments: -1 to get every comment in that time. With includeReplies on, their replies are included.

Only New Comments on Your Next Run

{
"postUrls": [
"https://www.facebook.com/realieltsvn/posts/pfbid0ifsVqVRZ9k1PJYvKNbcx218a3XYshG8ZqLmjW6i1mBhhEnj5c4EpeWmDCQuDTXMhl"
],
"onlyNewComments": true,
"targetComments": -1,
"includeReplies": true
}

Your first run gets comments as usual. Every next run on the same post gets only comments posted after your last run, never the old ones, so you don't pay for them twice. This is ideal for scheduled runs that monitor a post. Replies to new comments are included; new replies to old comments are not. Each Apify account keeps its own progress per post.

With commentsNewerThan or onlyNewComments, comments are sorted newest first and orderingMode is ignored. targetComments still limits how many comments you get per run.

Input Options

FieldTypeRequiredDefaultDescription
postUrlsList of Post URLsYes-Facebook Post URLs, including posts, videos, reels, photos, groups, and share links. Use an array even for one post
orderingModeTextNo"ALL"Comment order: "MOST_RELEVANT", "NEWEST", or "ALL"
targetCommentsNumberNo100Maximum comments per URL. Use -1 to fetch all available comments
includeRepliesBooleanNofalseWhen true, also return replies (nested replies included); when false, return only top-level comments
maxRepliesNumberNo100Maximum replies per top-level comment (nested replies count too). Used only when includeReplies is true. -1 = all, 0 = none
includeReactionsBooleanNotrueInclude total reactions and reaction type counts
commentsNewerThanTextNo-Only comments posted within a relative time: "7 days", "24 hours", "30 minutes". Empty = all dates
onlyNewCommentsBooleanNofalseOnly new comments on your next run: each run on the same post gets only comments posted after your last run

orderingMode controls the order in which Facebook returns comments:

  • ALL โ€” every comment, in Facebook's ranked order (default)
  • MOST_RELEVANT โ€” Facebook's ranked comments, with comments Facebook filters out (such as likely spam) removed
  • NEWEST โ€” newest comments first

targetComments controls how many comments are collected per Post URL. Set it to -1 to fetch all available comments, regardless of the selected ordering mode. This is recommended when completeness is more important than run time or cost.

includeReplies controls reply collection. It is off by default, so only top-level comments are returned. Set it to true to also get replies, including nested replies. The Console displays this as a single on/off checkbox.

maxReplies limits the replies collected for each top-level comment, counting nested replies at every level. It applies only when includeReplies is true and is ignored otherwise. For example, targetComments: 50 with maxReplies: 10 returns up to 50 comments, each with up to 10 replies. The default is 100 replies per comment; use -1 to collect all replies.

Each Post URL is checked before comment collection begins. Unavailable or restricted posts are skipped, while other valid posts continue processing normally. Reel links are automatically normalized when needed for reliable comment access.

postUrls must always be an array. For one URL, use for example:

{
"postUrls": [
"https://www.facebook.com/reel/787423957218284"
]
}

๐Ÿ“ค Output Structure

Example Output

Each result represents one comment or reply. These examples show the main fields:

{
"post_url": "https://www.facebook.com/example-post-media",
"text": "Example comment with an attached photo",
"author_name": "Example User",
"comment_url": "https://www.facebook.com/example-post-media?comment_id=.....",
"media": [
{
"type": "Photo",
"url": "https://cdn.example.com/example-photo.jpg"
}
],
"reactions_count": 128,
"replies_count": 15
}
{
"post_url": "https://www.facebook.com/example-post-link",
"text": "Example reply containing a shared link",
"author_name": "Example Reply Author",
"comment_url": "https://www.facebook.com/example-post-link?comment_id=.....",
"media": [],
"shared_post": null,
"shared_link": "https://www.youtube.com/watch?v=example123",
"reactions_count": 4,
"replies_count": 2
}

Output Fields

FieldTypeDescription
post_urlstringSource Facebook URL
idstringUnique comment/reply ID
comment_urlstringDirect Facebook URL for the comment/reply
textstringComment text content
timestampintegerUnix timestamp (seconds)
comment_timestringISO 8601 datetime
author_namestringAuthor display name
author_idstringAuthor Facebook ID
author_profile_picturestringAuthor profile picture URL (100% coverage)
author_profile_urlstring|nullAuthor profile URL (when available)
image_urlstring|nullAttached image URL (~4% of comments)
mediaarrayAttached comment media with ID, type, URI, URL, and thumbnail when available
shared_postobject|nullNative Facebook post shared inside the comment, including URL, text, and media when available
shared_linkstring|nullShared external link URL (~7% of comments)
shared_link_titlestring|nullTitle of shared link
shared_link_sourcestring|nullSource domain (e.g., "youtube.com")
reactions_countintegerTotal reaction count
reaction_typesobjectCounts by type: like, love, haha, wow, care, sad, and angry
replies_countintegerNumber of direct replies
is_replybooleantrue if this is a reply, false if top-level comment
replyto_comment_idstringParent comment ID (only for replies)
depthintegerNesting level (0 = top-level, 1+ = nested reply)

Reaction Types

When reaction data is available, reaction_types contains the nonzero counts returned by Facebook:

{
"like": 10,
"love": 3,
"haha": 2
}

Supported keys are like, love, haha, wow, care, sad, and angry. Unknown Facebook reaction IDs are preserved as unknown_<reaction_id>.


โœจ What You Get

Complete Comment Data

  • ๐Ÿ“ Comment text and timestamps
  • ๐Ÿ‘ค Author names and profile pictures
  • ๐Ÿ–ผ๏ธ Attached images (when available)
  • ๐Ÿ”— Shared links with titles (YouTube, articles, etc.)
  • โค๏ธ Reaction counts (likes, loves, etc.)
  • ๐Ÿ’ฌ All replies and nested conversations

Easy to Use

  • Just paste Facebook URLs and click "Start"
  • Works with any public post, video, reel, or group
  • Get results in minutes, not hours
  • Download as JSON, CSV, Excel, or HTML
  • No coding or technical skills needed

Reliable & Fast

  • Automatically handles errors and retries
  • Processes multiple URLs at once
  • Extracts thousands of comments quickly
  • Works with all Facebook URL formats

๐Ÿš€ How to Use

Quick Start (No Coding Required)

  1. Open the actor in Apify Console
  2. Paste Post URLs - Copy and paste any Facebook post, video, reel, photo, or group URL
  3. Set options (optional):
    • How many comments to get (default: 100, use -1 for all)
    • Include replies? (default: no)
    • Max replies per comment (default: 100; -1 = all)
    • Sort by newest or most relevant
  4. Click "Start" and wait for results
  5. Download data - Get your results as JSON, CSV, Excel, or HTML

That's it! No technical knowledge needed.

๐Ÿ’ก Use Cases

  • Market Research: Analyze customer feedback and sentiment
  • Social Listening: Monitor brand mentions and discussions
  • Content Analysis: Study engagement patterns and trends
  • Lead Generation: Find potential customers in relevant groups
  • Competitor Analysis: Track competitor posts and engagement
  • Academic Research: Collect data for social media studies

This scraper only collects publicly available data from Facebook. Users are responsible for:

  • Complying with Facebook's Terms of Service
  • Following data protection laws (GDPR, CCPA, etc.)
  • Using scraped data ethically and legally
  • Respecting user privacy

See Apify's Terms of Service for more information.


โ“ FAQ

Can I submit many URLs at once?

Yes. Add all URLs to postUrls. The Actor can process 100+ URLs in one run.

Why did I receive fewer comments than requested?

The post may contain fewer comments, comments may be restricted, or Facebook may not expose the complete comment thread for that post.

Can I collect every comment?

Yes. Set targetComments to -1. The Actor will continue until no more comments are available.

Does includeReplies include nested replies?

Yes. When enabled, replies and nested conversations are included. When disabled, only top-level comments are returned.

Can I monitor a post and get only new comments?

Yes. Run the Actor on a schedule with onlyNewComments: true. Each run returns only top-level comments posted since the previous run, with their replies. New replies on older comments are not tracked yet.

Can I limit how many replies I get per comment?

Yes. Set maxReplies, for example 10. Each top-level comment then returns at most 10 replies, counting nested replies too. The default is 100; -1 returns all replies and 0 returns none. maxReplies only applies when includeReplies is true.

Why does a comment show more replies on Facebook than I received?

Facebook's reply and comment counters also count hidden, deleted, and spam-filtered replies. The Actor returns every reply Facebook actually shows.

Are private or login-restricted posts supported?

No. Public Facebook posts, videos, reels, photos, and group posts are supported.

What happens if a URL is unavailable or has no comments?

That URL is skipped and does not create an error record in the dataset. Other valid URLs continue processing.

๐Ÿ“ž Support

For bug reports, custom fields, or integration questions, contact tuananhhoangtran2010@gmail.com.