Facebook Comments Scraper π₯$0.25/1K: Reel & Post Comments
Pricing
from $0.24 / 1,000 results
Facebook Comments Scraper π₯$0.25/1K: Reel & Post Comments
π₯ Save money: only $0.25 per 1,000 comments. β‘ High-speed scraping for Reel & Post Comments. Get replies, shared links and images from videos and groups too.
Pricing
from $0.24 / 1,000 results
Rating
4.9
(7)
Developer
TheDoor
Maintained by CommunityActor stats
8
Bookmarked
1.4K
Total users
278
Monthly active users
0.97 hours
Issues response
2 hours ago
Last modified
Categories
Features
Share
Facebook Comment Scraper
Facebook comment scraper for any public post link: Page posts, group posts, reels, videos, photos and share links. Paste the links, click Start, and get one row per comment with the author, the text, the exact time, the reactions and the reply count.
Before you start: it reads post links, not whole Pages or groups. A bare link like facebook.com/natgeo
is not accepted, because a Page has many posts and no single comment thread. Private groups,
friends-only posts and other restricted posts are skipped.
Also included: the count for each reaction type, replies to replies, only new comments on repeat runs so you don't pay again for comments you already got, and a live status line on the run page.
| π Works with | Page posts, group posts, reels, videos, watch links, photos and share links (/share/p/, /share/v/, /share/r/) |
| π― Links per run | Paste 100+ links of any type into one run, with no fixed cap. Up to 20 are read at the same time. A link that fails is skipped and the others keep going. |
| π Output | One row per comment, plus one row per reply if you turn replies on |
| π Data | Text, time, author, reactions by type, reply count, photos, shared links |
| βΎοΈ How many | All the comments Facebook shows a logged-out visitor: set Target comments to -1 |
| β‘ Speed | Up to 1,300 comments a minute across many links: 2,000 comments from 50 posts in about 90 seconds. 10,000+ comments from big posts in about 15 minutes. Measured at 2 GB memory. |
| π Account needed | None. Public content only. |
| π° Price | $0.25 per 1,000 results ($0.24 on Scale and Business plans). A reply counts as one result. Apify's free $5 a month covers about 20,000 results. |
What you get: seven comments from a run on 6 November 2026, showing the main columns, with names and profile links blurred.

| Using an AI agent? | |
|---|---|
| Actor | thedoor/facebook-comment-scraper |
| The one required field | postUrls, a list of links |
| Cap the bill | Set maxTotalChargeUsd on the run, for example 0.50 |
| Why a link gave nothing | Read the run's status message: it counts links with no comments and links that failed |
| MCP link | https://mcp.apify.com/?tools=fetch-actor-details,thedoor/facebook-comment-scraper |
What you can do with it
- Read what customers say under your own or a competitor's posts.
- Find people who ask about a product or service. Each comment comes with the author's name and profile link, so your sales team knows who to reach out to.
- Follow a post on a schedule and pay only for the new comments each time.
- Feed comments into a spreadsheet, a sentiment tool or an AI workflow.
How to use it
-
Paste your links into Post URLs, one per line.
-
Set Target comments, the number of comments per link. Start with 50 to see the data.
-
Turn on Include Replies if you want the answers under each comment.
-
Click Start. The status line at the top of the run shows each step:
Status line What is happening Checking links: 3 of 10Each link is checked: is it public, and does it have comments? Reading comments: 4 of 9 links done, 1,250 results so farComments are being collected. Results appear in the Output tab as they arrive. Done: 2,400 comments and 310 replies from 8 of 10 links. 1 link had no comments. 1 link could not be read fully...The run is finished, with what it got and why any link gave nothing. -
Download the results as JSON, CSV or Excel.
Need the post links first? Run the Facebook Page Scraper or the Facebook Group Post Scraper, then paste their post URLs here.
How much does it cost?
You pay $0.25 for every 1,000 results on the Free and Starter plans, and $0.24 on Scale and Business. Each comment is one result, and each reply is one result. The run start fee is $0.00005 per GB of memory, which is almost nothing.
| You collect | Cost |
|---|---|
| 100 comments from each of 10 posts (1,000 results) | about $0.25 |
| 100 comments from each of 10 posts, each with up to 10 replies (at most 11,000 results) | at most $2.75 |
| 20,000 results, the amount Apify's free $5 a month covers | about $5 |
Three ways to keep the bill under control:
- Target comments: the top-level comments per link.
-1reads the whole post, so check how many comments the post has first. - Max replies per comment: replies are extra results on top of Target comments. The most one link can
give is
targetComments x (1 + maxReplies). - Maximum cost per run: set it in the run options (
maxTotalChargeUsdin the API). The run stops there, and the results it already collected stay in your dataset.
π΅ Follow a post and pay only for new comments
If you check the same post more than once, turn on Only new comments for the next run
(onlyNewComments). Without it, every run reads the post again and charges you again for comments you
already have. With it, the Actor remembers the newest comment you got from each post, and each run
returns only what came after it.

- First run: comments as usual, newest first.
- Every next run: only comments posted since your last run. Reading stops at the first comment you already have, so the run also ends sooner.
- No new comments: 0 results and no result fee, only the tiny run start fee. The status line says so.
- A run fails partway: your place is kept, so the next run still picks up those comments.
| One post with 2,000 comments, checked daily for 30 days, 50 new comments a day | Results | Cost |
|---|---|---|
| Normal runs, the whole post every day | 60,000 or more | $15 or more |
With onlyNewComments | 3,450 | about $0.86 |
When it is worth using:
- Your own ad or launch post: answer new questions and complaints while the post is running.
- A competitor's announcement: collect new reactions day by day without paying for the old ones.
- A viral or news post: follow the conversation as it grows.
- A giveaway or support thread: pick up each new entry or question since the last check.
- Sentiment over time: add only the new results to your sheet, with no duplicates to clean.
To set it up:
- Paste the post link and turn on Only new comments for the next run.
- Set Target comments to
-1. - Click Save as a new task, then add a schedule to it. Hourly suits a viral post; daily or weekly suits a quiet one.
Good to know:
- Turn it on from the first run. Runs with the option off do not save your place.
- A low Target comments loses nothing. If a post gets 500 new comments and Target comments is 100,
each run returns the next 100 from where the last one stopped. Comments newer than those wait until
the backlog is done. Use
-1to get everything new in one run. - New replies under old comments are not returned. You get replies under new comments only.
- Your place is saved per Apify account and per post.
- Your place is saved when a post finishes. If the timeout or your cost limit stops a run in the middle of a post, the next run reads that post from the last saved place, so those comments come back and are charged again.
- It works together with
commentsNewerThan. A comment must pass both.
What you give it
{"postUrls": ["https://www.facebook.com/CNN/posts/1510975140138256","https://www.facebook.com/reel/787423957218284"],"targetComments": 50,"includeReplies": true,"maxReplies": 10}
| Field | Default | What it does |
|---|---|---|
postUrls | required | Facebook links, always as a list, even for one link. |
targetComments | 100 | Top-level comments per link, 1 or more. -1 gets them all. 0 stops the run with an input error. Replies are not counted here. |
includeReplies | off | Also get replies, including replies to replies. |
maxReplies | 100 | Replies per top-level comment, all levels counted. -1 gets them all, 0 gets none. |
orderingMode | ALL | ALL is Facebook's order with every comment. MOST_RELEVANT is the same without comments Facebook hides as likely spam. NEWEST is newest first. |
includeReactions | on | Add the reaction total and the count for each type. |
commentsNewerThan | empty | Only comments from a recent period, counted back from when the run starts: 30 minutes, 24 hours, 7 days. Leave it empty for all dates. The number must be above 0: 0 days stops the run with an input error. For today's comments use 24 hours. |
onlyNewComments | off | Only comments posted since your last run on that post. See the section above. |
With commentsNewerThan or onlyNewComments, comments come newest first and orderingMode is ignored.
Links it accepts: /posts/, /videos/, /reel/, /watch/?v=, /photo/?fbid=, photo.php,
permalink.php, /groups/.../posts/, /groups/.../permalink/, and share links (/share/p/,
/share/v/, /share/r/).
What you get back
One row per comment or reply. This is a real row from a run on 6 November 2026, with the author's details hidden:
{"post_url": "https://www.facebook.com/reel/787423957218284","id": "1229229358963577","comment_url": "https://www.facebook.com/reel/787423957218284?comment_id=1229229358963577","text": "And i have to use paper straw...","timestamp": 1760102853,"comment_time": "2025-10-10T13:27:33.000Z","author_name": "...","author_id": "...","author_profile_picture": "...","author_profile_url": "...","image_url": null,"media": [],"shared_link": null,"shared_link_title": null,"shared_link_source": null,"shared_post": null,"reactions_count": 295,"reaction_types": { "like": 290, "haha": 5 },"replies_count": 10,"is_reply": false,"depth": 0}
What each field means:
| Field | In plain words |
|---|---|
post_url | The link you pasted, so you can see which post the comment came from. |
id | The comment's unique number. Use it to spot the same comment across runs. |
comment_url | A direct link that opens this comment on Facebook. |
text | What the person wrote. |
comment_time | When it was written, as a readable date and time in UTC. |
timestamp | The same time as a number, handy for sorting in code. |
author_name | The name of the person or Page that wrote it. |
author_id | That author's Facebook id. |
author_profile_url | A link to the author's profile. null when Facebook gives no public link. |
author_profile_picture | A link to the author's profile picture. |
reactions_count | All reactions on the comment added up. |
reaction_types | The same reactions split by type: like, love, haha, wow, care, sad, angry. Only types with a count appear; {} means no reactions. |
replies_count | How many direct replies the comment has. |
is_reply | false for a comment, true for a reply. |
depth | How deep it sits: 0 is a comment, 1 a reply, 2 a reply to a reply. Facebook shows at most 2 levels, so a reply to a level-2 reply is also 2. |
replyto_comment_id | On replies only: the id of the comment or reply it directly answers (its direct parent). |
image_url | The photo attached to the comment, if any. |
media | Everything attached to the comment: photos, videos or stickers. [] means nothing is attached. |
shared_link | A link the person shared in the comment. |
shared_link_title, shared_link_source | That link's title and its website, for example youtube.com. |
shared_post | A Facebook post shared in the comment, with its link and text. |
reactions_count and reaction_types are left out when includeReactions is off. Other fields with no
value come back as null.
The Output tab also has ready views: top-level comments only, replies only, comments with images, and comments with links.
When you get few or no results
The status line tells you how each link ended, and the Log tab lists the links under COMPLETED,
NO_COMMENTS and FAILED. Links that give nothing add no rows to your dataset and cost nothing.
| What you see | What it means | What to do |
|---|---|---|
Input error: Comments newer than cannot be 0... | 0 days or 0 weeks would keep only comments from this very second. The run stops before reading, with no result fee. | Use a time such as 24 hours or 7 days, or leave the field empty for all dates. |
Input error: Target comments must be 1 or more... | 0 or a number below -1 asks for no comments. The run stops before reading. | Use 1 or more, or -1 for all comments. |
Input error: Add at least one Facebook post link... | The list of links is empty. | Paste at least one link. |
1 link had no comments | The post is readable and has no comments. | Nothing to fix. |
1 link had no comments in your time frame | Nothing was posted in the period you set, or the post has no comments. | Widen Comments newer than, or leave it empty. |
1 link had no new comments | With onlyNewComments, nothing new since your last run. | Nothing to fix. |
1 link could not be read fully | The post is private, deleted or blocked, or the link is not a post. Results read before the problem are kept. | Open the link in a private browser window. If you can see the post there, run it again. |
| Fewer comments than the post shows | Facebook's counter includes deleted comments and comments hidden from logged-out visitors. | Nothing to fix. |
| The run stopped early | It reached the run timeout or your maximum cost per run. | Raise the limit and run again. |
What it does not do
- Posts, not Pages. A link to a whole Page or group is not accepted. Get the post links first with the scrapers above.
- Public content only. Private groups, friends-only posts and other restricted posts are skipped, and the other links still run.
- It does not remove duplicates between links. Two links to the same post, such as a
/posts/link and a/watch/link, are read and charged twice. - Reply counts can be higher than the replies you get.
replies_countcomes from Facebook and can include replies hidden from logged-out visitors. - A run has a time limit. The default is 1 hour with 4 GB of memory. A very big post may need a longer timeout: at 400 to 700 comments a minute, one hour reads about 24,000 to 42,000 comments. If the timeout is reached, the results collected so far stay in your dataset.
- No email or phone numbers. Commenters' contact details are not returned.
- It is not an official Facebook tool. theDoor is independent and is not affiliated with or endorsed by Facebook or Meta.
Questions people ask
Why did I get fewer comments than the post shows? Facebook's counter also counts deleted comments and comments hidden from visitors who are not logged in. You get the comments Facebook shows to a logged-out visitor. See When you get few or no results.
Why did I get more rows than Target comments?
Replies are extra rows on top of targetComments. Lower maxReplies or turn replies off.
Can I get every comment?
Set targetComments to -1 to get all the comments Facebook shows a logged-out visitor.
Can I call it from code, Make, n8n or an AI agent? Yes. The API tab has Python, JavaScript and HTTP examples. In Python:
# pip install apify-clientfrom apify_client import ApifyClientclient = ApifyClient("YOUR_APIFY_TOKEN")run = client.actor("thedoor/facebook-comment-scraper").call(run_input={"postUrls": ["https://www.facebook.com/CNN/posts/1510975140138256"],"targetComments": 50,},max_total_charge_usd=0.50, # the most this run may spend)for row in client.dataset(run["defaultDatasetId"]).iterate_items():print(row["comment_time"], row.get("reactions_count"), (row.get("text") or "")[:80])
Is it legal? It reads only public comments. Comments and author names are personal data under GDPR and similar laws, so collect them only for a clear reason and keep only what you need.
Support
Open the Issues tab and paste the link you used and the run ID.