Facebook Comment Scraper avatar

Facebook Comment Scraper

Pricing

from $1.40 / 1,000 results

Go to Apify Store
Facebook Comment Scraper

Facebook Comment Scraper

Scrape every comment and reply from public Facebook posts, reels, videos and photos with no login or cookies. Get text, author, reactions, media, links and contacts. Rebuild threads, filter by date or keyword, bulk URLs. JSON for sentiment analysis and lead research.

Pricing

from $1.40 / 1,000 results

Rating

0.0

(0)

Developer

Data WiKi

Data WiKi

Maintained by Community

Actor stats

0

Bookmarked

12

Total users

1

Monthly active users

3 days ago

Last modified

Categories

Features

Limited permissions

Share

๐Ÿš€ What is Facebook Comment Scraper?

Facebook Comment Scraper is an Apify Actor that turns public Facebook posts, reels, videos and photos into a table of comments and replies. Paste post links, choose how many comments you want, and get the text, author, reactions, media, links and contacts of every row as JSON, CSV or Excel. You need no login and no cookies.

  • Replies as their own rows: each reply keeps a parent comment id and a depth, so you can rebuild whole threads.
  • Reactions included: the total and the Like, Love and Haha breakdown are saved for every comment.
  • Filters that save money: keep only comments in a date window, with a keyword, with enough reactions, or with media.
  • Bulk and resumable: extract Facebook comments from many links in one run, and a capped run returns resume cursors so a later run can continue.
  • Live results: rows appear in the Output table the moment they are found.

Click Start with the prefilled links to see a first result before you change anything.

๐Ÿ“Š What data can you extract from Facebook?

As a Facebook comments scraper, the Actor returns one row per comment or reply. Field names below match the dataset schema exactly.

FieldDescriptionExample
post_urlLink of the post the comment belongs tohttps://www.facebook.com/CNN/posts/1510975140138256
post_idFacebook id of the post1510975140138256
post_ownerName of the page or profile that published the postCNN
post_comments_totalTotal comments Facebook reports for the post114
comment_idId of the comment or reply111
comment_urlDirect link to the comment or reply.../posts/1510975140138256?comment_id=111
textComment text in its original languageGreat video!
created_atPosting time, ISO format, UTC2025-12-07T08:25:31.000Z
timestampPosting time as a Unix timestamp1765095931
author_nameDisplay name of the commenterAlex Example
author_idFacebook id of the commenter1000000000001
author_urlProfile link of the commenterhttps://www.facebook.com/1000000000001
author_profile_pictureProfile picture linkhttps://scontent.example/pic.jpg
author_genderGender shown on the profile, when publicmale
author_is_verifiedWhether the commenter has a verified badgefalse
author_badgesEarned badges such as top fan[]
is_post_ownerTrue when the commenter owns the postfalse
reactions_countTotal reactions (when reactions are included)12
reactions_breakdownCount per reaction type (when reactions are included){"Like": 10, "Love": 2}
replies_countNumber of replies under the comment4
is_replyTrue when the row answers another commentfalse
depth0 for a top-level comment, 1 or more for replies0
parent_comment_idId of the comment a reply answersnull
reply_to_nameName of the person a reply answersAlex Example
mediaPhotos, GIFs, stickers or videos attached to the comment[{"type": "Photo", "url": "..."}]
shared_linkOutside link shared in the commenthttps://www.youtube.com/watch?v=example123
shared_link_previewTitle, source, description and image of a shared link cardnull
shared_postFacebook post shared inside the commentnull
mentionsPeople or pages tagged in the comment[]
mentions_countHow many people or pages are tagged0
hashtagsHashtags used in the comment[]
urlsWeb links written in the comment[]
emailsEmail addresses written in the comment[]
phonesPhone numbers written in the comment[]
video_timestamp_secSecond of the video the comment points at (videos and reels)71

Each run also fills a second table, the posts overview, with one row per link you gave: input_url, status, stop_reason, post_id, post_url, post_owner, post_comments_total, rows_collected, duplicates_skipped and resume_cursor. Those overview rows are not charged.

๐Ÿ’ก Use cases for Facebook comment data

  • Facebook comments sentiment analysis: export text, created_at, reactions_count and reactions_breakdown, then score how an audience feels about a post or a campaign.
  • Facebook comments giveaway: save author_name, author_url, comment_url and created_at of every entry, then check the list against your contest rules. The same fields let you extract names from Facebook comments for a simple entry list.
  • Facebook brand monitoring comments: schedule a run with newerThan and keywords to catch new mentions of your product or name.
  • Facebook comment lead research: read the emails and phones fields to see who left contact details in public comments, and respect privacy rules before you use them. It lets you extract emails from Facebook comments only when people wrote them there.
  • Facebook competitor comment analysis: compare text, replies_count and reactions_count on rival posts. Sorting the same table by reactions supports a Facebook comment engagement analysis.
  • Facebook customer feedback analysis: use parent_comment_id and depth to follow a complaint and its answers from first comment to last reply.
  • Facebook comments for LLM training data: the clean text field with thread ids suits language-model experiments, once you have checked that you may use the content.
  • Facebook comment moderation report: filter by keywords, then review urls, author_badges and media to list comments that need a moderator.

๐Ÿ› ๏ธ How to scrape Facebook comments

  1. Create an Apify account and open Facebook Comment Scraper in the Apify Store.
  2. Paste one or more public post, reel, video or photo links into Post links to scrape Facebook post comments in bulk.
  3. Choose Comment order and set Comments per post. Use -1 to download all Facebook comments of a post.
  4. Keep Include replies and Include reactions on, or turn them off for a smaller table.
  5. Add a date window, keywords, minimum reactions or the media-only switch if you want fewer rows.
  6. Click Start and watch the Output table fill.
  7. Download Facebook comments to Excel, CSV or JSON from the Output tab.

Link types that work: /posts/, /permalink, /reel/, /videos/, /watch, /photo, /share/ and fb.watch links, including posts of public groups. Profile, group home and search links get a status row and no comments. To download Facebook comments from a post, one link is enough. Video and watch links also work, so the Actor doubles as a Facebook video comments scraper.

๐Ÿ’ฐ How much does it cost to scrape Facebook comments?

Facebook Comment Scraper uses pay per event pricing. One event, main_result, is charged for every comment or reply row saved. The Actor also charges apify-actor-start once per run at $0.00005, because it runs with 1,024 MB of memory.

Apify planPrice per 1,000 rowsPrice per row
Free$2.00$0.002
Bronze$1.80$0.0018
Silver$1.60$0.0016
Gold$1.40$0.0014
Platinum$1.40$0.0014
Diamond$1.40$0.0014

Example: 1,000 rows at the Free price cost 1,000 x $0.002 = $2.00, and the same 1,000 rows at the Gold price cost 1,000 x $0.0014 = $1.40. Add $0.00005 for the start event. Apify platform usage (compute) is billed on top of the events above. If a request is blocked and the Actor switches to a proxy, that can add proxy cost.

Only saved rows are charged. The posts overview rows are not charged, and rows removed by your filters are not charged. If you set a maximum cost per run in Apify, the run stops cleanly when the limit is reached and keeps the rows it has saved. See the Pricing tab for the current prices.

โฌ‡๏ธ Input

The only required field is Post links (urls). As a Facebook post comment scraper, the Actor accepts many links of mixed types in one run. Everything else is optional.

{
"urls": [
"https://www.facebook.com/CNN/posts/1510975140138256",
"https://www.facebook.com/reel/1397741784161219"
],
"orderingMode": "ALL",
"targetComments": 10,
"includeReplies": true,
"maxRepliesPerComment": 0,
"includeReactions": true,
"minReactions": 0,
"onlyWithMedia": false
}
FieldDefaultWhat it does
urlstwo example linksPublic Facebook post, reel, video, photo or share links
orderingModeALLMOST_RELEVANT, NEWEST or ALL; ALL returns the most replies
targetComments10Comments to save per post; -1 or 0 means everything. Replies come on top and do not count
includeRepliestrueSave replies as their own rows right after the comment
maxRepliesPerComment0Most replies kept under each comment; 0 keeps every reply
includeReactionstrueAdd reactions_count and reactions_breakdown
newerThan, olderThanemptyA date such as 2025-06-01 or a relative value such as 3 days
keywordsemptyKeep only comments containing any of these words or phrases
minReactions0Keep only comments with at least this many reactions
onlyWithMediafalseKeep only comments with a photo, GIF, sticker or video
resumeCursors{}Paste the resumeCursors object from an earlier SUMMARY to continue
proxyConfigurationno proxyOptional; if a request is blocked, the Actor switches to a proxy by itself

๐Ÿ’ก On a first run, keep targetComments low and check the table before a big run.

๐Ÿ’ก To extract Facebook post comments from a certain period only, set newerThan and olderThan; the two dates must leave a real window between them.

How to download Facebook comments by date

Set newerThan to a date or a relative value, and olderThan if you also want an upper bound. The Actor then keeps only comments inside that window, and with NEWEST order it stops once comments become older than your date.

โฌ†๏ธ Output

The scraped results are shown as a dataset in the Storage tab. The table view groups the fields into views (comments, reply threads, reactions, authors, media and links, contacts, post info) and does not show all fields, so open the full dataset for everything. The dataset works as a Facebook comments exporter. It downloads as JSON, CSV, Excel, XML or HTML.

The sample below is illustrative, with made-up values, and continues from the input above:

[
{
"post_url": "https://www.facebook.com/CNN/posts/1510975140138256",
"text": "Great reporting, thanks for sharing this.",
"author_name": "Alex Example",
"comment_url": "https://www.facebook.com/CNN/posts/1510975140138256?comment_id=111",
"media": [],
"shared_post": null,
"shared_link": null,
"reactions_count": 12,
"replies_count": 1,
"comment_id": "111",
"is_reply": false,
"depth": 0,
"parent_comment_id": null,
"reply_to_name": null,
"created_at": "2025-12-07T08:25:31.000Z",
"timestamp": 1765095931,
"author_id": "1000000000001",
"author_url": "https://www.facebook.com/1000000000001",
"author_profile_picture": "https://scontent.example/pic.jpg",
"author_gender": null,
"author_is_verified": false,
"author_badges": [],
"is_post_owner": false,
"reactions_breakdown": {"Like": 10, "Love": 2},
"shared_link_preview": null,
"mentions": [],
"mentions_count": 0,
"hashtags": [],
"urls": [],
"emails": [],
"phones": [],
"video_timestamp_sec": null,
"post_id": "1510975140138256",
"post_owner": "CNN",
"post_comments_total": 114
},
{
"post_url": "https://www.facebook.com/CNN/posts/1510975140138256",
"text": "Agreed, the second half was the best part.",
"author_name": "Sam Sample",
"comment_url": "https://www.facebook.com/CNN/posts/1510975140138256?comment_id=112",
"media": [],
"shared_post": null,
"shared_link": null,
"reactions_count": 3,
"replies_count": 0,
"comment_id": "112",
"is_reply": true,
"depth": 1,
"parent_comment_id": "111",
"reply_to_name": "Alex Example",
"created_at": "2025-12-07T09:02:10.000Z",
"timestamp": 1765098130,
"author_id": "1000000000002",
"author_url": "https://www.facebook.com/1000000000002",
"author_profile_picture": "https://scontent.example/pic2.jpg",
"author_gender": null,
"author_is_verified": false,
"author_badges": [],
"is_post_owner": false,
"reactions_breakdown": {"Like": 3},
"shared_link_preview": null,
"mentions": [],
"mentions_count": 0,
"hashtags": [],
"urls": [],
"emails": [],
"phones": [],
"video_timestamp_sec": null,
"post_id": "1510975140138256",
"post_owner": "CNN",
"post_comments_total": 114
}
]

To export Facebook comments to CSV, choose CSV in the Storage tab. Pick Excel there instead and you can extract Facebook comments to Excel without any code. Reply rows carry parent_comment_id and depth, which makes a Facebook comment threads and replies export easy to rebuild in a spreadsheet.

The run also saves a SUMMARY record with the totals (rows, rowsBilled, requests, durationSeconds, rejectedByFilter, posts and resumeCursors).

โš ๏ธ Limitations and error handling

  • As a Facebook comment extractor it only reads public content. Private, deleted, login-gated or restricted posts return a status row and no comments.
  • Facebook can report more comments than it shows to a visitor who is not logged in. The log then tells you that none are visible.
  • Very strict filters stop after a large scan (about 20,000 rows examined per post), and the run stores a resume cursor.
  • Heavy traffic can slow Facebook down. The Actor pauses, retries, and switches to a proxy when blocked. If requests keep failing, the run stops and keeps what it has saved.
  • Posts with the same id given twice are read once, and the skipped rows are counted in duplicates_skipped.

Every link you give gets one row in the posts overview. A failed link looks like this (illustrative):

{
"input_url": "https://www.facebook.com/example-page/posts/1234567890",
"status": "login required to view this post",
"stop_reason": null,
"post_id": null,
"post_url": null,
"post_owner": null,
"post_comments_total": null,
"rows_collected": 0,
"duplicates_skipped": null,
"resume_cursor": null
}
status valueMeaning
okComments were read; see stop_reason for why collecting ended
not a Facebook post/reel/video/photo URLThe link is not a Facebook post link
this is a <kind> URL, not a post - pass the permalink of a postA profile or group link was given instead of a post
unreachableThe post page could not be loaded
login required to view this postFacebook asks for a login before showing the post
post not found โ€” it was deleted or the link is wrongThe post does not exist
skipped (run stopped)The run ended before this link was processed

Common stop_reason values are all comments collected, target reached, spend limit reached, repeated empty/duplicate pages and scan limit reached: N rows examined. A run that stops at target reached or at the scan limit saves a resume_cursor; paste it under Resume cursors to continue.

๐Ÿ”Œ Integrating Facebook Comment Scraper with other apps

  • API: start runs and read rows over HTTP with the Apify API. Call it as a Facebook comments API from your own code with POST https://api.apify.com/v2/actors/data_wiki~facebook-comment-scraper/runs and the input JSON above. The dataset API returns the rows as Facebook comments to JSON.
  • Schedules: repeat a run every day or week with Apify schedules and use newerThan to look only at new comments.
  • Webhooks: send a message or start a workflow when a run finishes with Apify webhooks.
  • Spreadsheets and apps: with the Google Sheets integration you can export Facebook comments to Google Sheets, and Make and Zapier connect the dataset to other apps. See all Apify integrations. For these apps the Actor acts as a Facebook comments export tool.
  • Cloud: the Actor is a Facebook comment scraper online that runs in the Apify cloud, so nothing has to be installed.
  • MCP: AI agents can find and call the Actor through the Apify MCP server at mcp.apify.com; see the Apify MCP guide.

๐Ÿ”— Other Facebook scrapers by data_wiki

ActorWhat it extractsWhen to use it
Facebook Group ScraperPosts, comments, replies and reactions of public groupsYou want the posts of a whole public group, not only the comments of one post
Facebook Marketplace ScraperPublic Marketplace listingsYou want public Marketplace listings with prices and locations
Instagram Comment ScraperComments on public Instagram posts and reelsYou want comments from public Instagram posts and reels
Instagram Hashtag ScraperPublic Instagram reels by hashtag or keywordYou want to find public Instagram reels by hashtag before you read their comments
LinkedIn work profile scraperPublic profile details for professionals you identifiedYou want job and company details for a lead.
Tripadvisor review scraperPublic Tripadvisor reviews with stars, text, trip type and owner repliesWhen customer feedback sits in Tripadvisor reviews instead of Facebook comments
Search Facebook groups by topicGroup name, member count, privacy and category from keywordsYou research communities before looking at single posts
Guest reviews of hotels and restaurantsPublic reviews with stars, text, trip type and owner repliesWhen the feedback you need sits in Tripadvisor reviews, not Facebook comments

To compare audience mood across networks, pair this Actor with the Instagram post comments tool. For whole group discussions, use the scraper for public Facebook groups.

Facebook Comment Scraper only reads what any visitor can see on public posts, and it does not read private content. Comments can still contain personal data such as names, profile links, emails and phone numbers. Collect and use them only with a legitimate reason, follow GDPR, CCPA and anti-spam rules where they apply, and respect the terms of the site. Apify explains the topic in its guides on the legality of web scraping and ethical web scraping. If you are unsure, ask a lawyer.

โ“ FAQ

How much does Facebook Comment Scraper cost?

You pay per saved row: $0.002 on the Free price down to $0.0014 on Gold and above, plus $0.00005 per run to start. The pricing section above has the full table and an example.

Do I need a login or cookies?

No. You never share an account or session data, because the Actor reads public pages only. That is why a Facebook comments scraper no login is needed for suits one-off research as well as scheduled jobs.

Can I get emails and phone numbers from comments?

Yes, when people wrote them in the comment text. The emails and phones fields hold what appeared in public comments; the Actor does not look anything up on its own.

How do I identify the most active commenters?

Export the rows and count author_id, or sort by reactions_count and replies_count. Set targetComments to -1 first so that every commenter is included.

Can I scrape Facebook group comments?

Yes, for public groups: paste links of posts inside the group, and the Actor reads their comments as one Facebook group comment scraper job per post. To collect whole group posts, use the Actor for whole public groups first.

Can I read reel comments without logging in?

Yes. Paste the reel link, and you can view Facebook reel comments without account access. Each row carries video_timestamp_sec when Facebook gives one, which is what a Facebook reel comments scraper should return.

Can I export Facebook comments to Excel?

Yes. Open the Storage tab, choose Excel and download the file. The same dataset serves as a Facebook comments downloader for any app that reads files.

Do I need proxies?

No. A run starts without a proxy and switches to a proxy when requests are blocked, which can add proxy cost. You can also choose your own proxy in the input.

Can I use Facebook Comment Scraper through an MCP server?

Yes. Add the Apify MCP server at https://mcp.apify.com, search for the Actor, and call it with the input fields shown above.

๐Ÿ’ฌ Your feedback

Found a bug or missing a field? Open an issue in the Issues tab of this Actor. Need a custom solution? Contact hello.datawiki@gmail.com.