Facebook Comment Scraper
Pricing
from $1.40 / 1,000 results
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
Maintained by CommunityActor stats
0
Bookmarked
12
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Features
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.
| Field | Description | Example |
|---|---|---|
post_url | Link of the post the comment belongs to | https://www.facebook.com/CNN/posts/1510975140138256 |
post_id | Facebook id of the post | 1510975140138256 |
post_owner | Name of the page or profile that published the post | CNN |
post_comments_total | Total comments Facebook reports for the post | 114 |
comment_id | Id of the comment or reply | 111 |
comment_url | Direct link to the comment or reply | .../posts/1510975140138256?comment_id=111 |
text | Comment text in its original language | Great video! |
created_at | Posting time, ISO format, UTC | 2025-12-07T08:25:31.000Z |
timestamp | Posting time as a Unix timestamp | 1765095931 |
author_name | Display name of the commenter | Alex Example |
author_id | Facebook id of the commenter | 1000000000001 |
author_url | Profile link of the commenter | https://www.facebook.com/1000000000001 |
author_profile_picture | Profile picture link | https://scontent.example/pic.jpg |
author_gender | Gender shown on the profile, when public | male |
author_is_verified | Whether the commenter has a verified badge | false |
author_badges | Earned badges such as top fan | [] |
is_post_owner | True when the commenter owns the post | false |
reactions_count | Total reactions (when reactions are included) | 12 |
reactions_breakdown | Count per reaction type (when reactions are included) | {"Like": 10, "Love": 2} |
replies_count | Number of replies under the comment | 4 |
is_reply | True when the row answers another comment | false |
depth | 0 for a top-level comment, 1 or more for replies | 0 |
parent_comment_id | Id of the comment a reply answers | null |
reply_to_name | Name of the person a reply answers | Alex Example |
media | Photos, GIFs, stickers or videos attached to the comment | [{"type": "Photo", "url": "..."}] |
shared_link | Outside link shared in the comment | https://www.youtube.com/watch?v=example123 |
shared_link_preview | Title, source, description and image of a shared link card | null |
shared_post | Facebook post shared inside the comment | null |
mentions | People or pages tagged in the comment | [] |
mentions_count | How many people or pages are tagged | 0 |
hashtags | Hashtags used in the comment | [] |
urls | Web links written in the comment | [] |
emails | Email addresses written in the comment | [] |
phones | Phone numbers written in the comment | [] |
video_timestamp_sec | Second 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_countandreactions_breakdown, then score how an audience feels about a post or a campaign. - Facebook comments giveaway: save
author_name,author_url,comment_urlandcreated_atof 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
newerThanandkeywordsto catch new mentions of your product or name. - Facebook comment lead research: read the
emailsandphonesfields 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_countandreactions_counton rival posts. Sorting the same table by reactions supports a Facebook comment engagement analysis. - Facebook customer feedback analysis: use
parent_comment_idanddepthto follow a complaint and its answers from first comment to last reply. - Facebook comments for LLM training data: the clean
textfield 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 reviewurls,author_badgesandmediato list comments that need a moderator.
๐ ๏ธ How to scrape Facebook comments
- Create an Apify account and open Facebook Comment Scraper in the Apify Store.
- Paste one or more public post, reel, video or photo links into Post links to scrape Facebook post comments in bulk.
- Choose Comment order and set Comments per post. Use
-1to download all Facebook comments of a post. - Keep Include replies and Include reactions on, or turn them off for a smaller table.
- Add a date window, keywords, minimum reactions or the media-only switch if you want fewer rows.
- Click Start and watch the Output table fill.
- 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 plan | Price per 1,000 rows | Price 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}
| Field | Default | What it does |
|---|---|---|
urls | two example links | Public Facebook post, reel, video, photo or share links |
orderingMode | ALL | MOST_RELEVANT, NEWEST or ALL; ALL returns the most replies |
targetComments | 10 | Comments to save per post; -1 or 0 means everything. Replies come on top and do not count |
includeReplies | true | Save replies as their own rows right after the comment |
maxRepliesPerComment | 0 | Most replies kept under each comment; 0 keeps every reply |
includeReactions | true | Add reactions_count and reactions_breakdown |
newerThan, olderThan | empty | A date such as 2025-06-01 or a relative value such as 3 days |
keywords | empty | Keep only comments containing any of these words or phrases |
minReactions | 0 | Keep only comments with at least this many reactions |
onlyWithMedia | false | Keep only comments with a photo, GIF, sticker or video |
resumeCursors | {} | Paste the resumeCursors object from an earlier SUMMARY to continue |
proxyConfiguration | no proxy | Optional; if a request is blocked, the Actor switches to a proxy by itself |
๐ก On a first run, keep
targetCommentslow and check the table before a big run.
๐ก To extract Facebook post comments from a certain period only, set
newerThanandolderThan; 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 value | Meaning |
|---|---|
ok | Comments were read; see stop_reason for why collecting ended |
not a Facebook post/reel/video/photo URL | The link is not a Facebook post link |
this is a <kind> URL, not a post - pass the permalink of a post | A profile or group link was given instead of a post |
unreachable | The post page could not be loaded |
login required to view this post | Facebook asks for a login before showing the post |
post not found โ it was deleted or the link is wrong | The 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/runsand 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
newerThanto 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
| Actor | What it extracts | When to use it |
|---|---|---|
| Facebook Group Scraper | Posts, comments, replies and reactions of public groups | You want the posts of a whole public group, not only the comments of one post |
| Facebook Marketplace Scraper | Public Marketplace listings | You want public Marketplace listings with prices and locations |
| Instagram Comment Scraper | Comments on public Instagram posts and reels | You want comments from public Instagram posts and reels |
| Instagram Hashtag Scraper | Public Instagram reels by hashtag or keyword | You want to find public Instagram reels by hashtag before you read their comments |
| LinkedIn work profile scraper | Public profile details for professionals you identified | You want job and company details for a lead. |
| Tripadvisor review scraper | Public Tripadvisor reviews with stars, text, trip type and owner replies | When customer feedback sits in Tripadvisor reviews instead of Facebook comments |
| Search Facebook groups by topic | Group name, member count, privacy and category from keywords | You research communities before looking at single posts |
| Guest reviews of hotels and restaurants | Public reviews with stars, text, trip type and owner replies | When 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.
โ๏ธ Is it legal to scrape Facebook?
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.