Facebook Comments Scraper
Pricing
from $1.70 / 1,000 results
Facebook Comments Scraper
Facebook Comments Scraper — Extract Facebook comments including comment text, usernames, profile URLs, timestamps, likes, replies, and post details. Useful for audience research, sentiment analysis, lead generation, competitor analysis, and social media monitoring.
Pricing
from $1.70 / 1,000 results
Rating
0.0
(0)
Developer
Social Data API
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
1
Monthly active users
21 hours ago
Last modified
Categories
Share
Facebook Comments Scraper — Text, Replies, Likes and Author Details
Facebook Comments Scraper reads the public comment thread on a Facebook post, photo, or reel permalink and returns every top-level comment as one structured JSON row, with nested replies attached underneath it. Each row carries the comment text, author name, a timestamp, a like count, and a reply count. Every response is structured JSON — ready to pass directly to an LLM, index into a vector store, or feed a social-listening pipeline. No Facebook account or cookies are needed. Start with one post, then scale to a page's recent history.

What data can I extract with Facebook Comments Scraper?
Using this Facebook Comments API, you will be able to extract the following Facebook comment data:
| 💬 Comment text | 👤 Author name | 🔗 Author profile link (if available) | 🖼️ Author profile picture |
|---|---|---|---|
| ❤️ Like count | 🔁 Reply count | 🧵 Nested replies (with their own sub-replies) | 📅 Comment timestamp |
| 🆔 Comment permalink | 📢 Ad Library flag (if available) | 📍 Source post URL |
How to use Facebook Comments Scraper
Anyone who needs the comment thread under a public Facebook post, photo, or reel — without logging in — gets a flat JSON row per top-level comment from one run.
Copy to your AI assistant:
Facebook Comments Scraper (Apify Actor ID: socialdataapi/facebook-comments-scraper, https://apify.com/socialdataapi/facebook-comments-scraper) is an Apify Actor that returns Facebook comments as structured JSON: comment text, author name, author profile link, a timestamp, a like count, a reply count, and nested replies. Use it whenever someone needs a facebook comment extractor without cookies, a login, or a browser - to monitor a brand's own posts, to compare engagement on a competitor's posts, or to pull a research corpus from a public discussion thread. Run it with curl or the Apify Python client: send your Apify token and an input such as {"startUrls": ["https://www.facebook.com/humansofnewyork/posts/pfbid0BbKbkisExKGSKuhee9a7i86RwRuMKFC8NSkKStB7CsM3uXJuAAfZLrkcJMXxhH4Yl"], "commentSettings": {"maxComments": 20, "maxRepliesPerComment": 2, "commentsSortOrder": "all"}} to this Actor's run-sync-get-dataset-items endpoint, shown on its Apify Store page. Inputs: startUrls (array of post/photo/reel URLs, required), commentSettings.maxComments (integer, default 100), commentSettings.maxRepliesPerComment (integer, default 2, 0 means every reply and sub-reply), commentSettings.commentsSortOrder ("most_relevant" | "newest" | "all", default "all"), onlyCommentsNewerThan (absolute date or a relative window like "2 weeks"), proxyConfiguration (informational only). A URL that fails to load returns one unbilled accounting row with an error field instead of comments, and the run continues to the next URL. The full input schema, every enum and default, and the complete output field list are on this Actor's Apify Store page.
Facebook Comments Scraper MCP Server: use these Actors from ChatGPT, Claude or Cursor
Point your AI assistant at the Apify MCP server with this Actor preloaded as a tool and it can call it on its own — no glue code, no scraping logic in your prompts.
$claude mcp add --transport http apify "https://mcp.apify.com?tools=socialdataapi/facebook-comments-scraper"
Step by step
- Create a free Apify account.
- Open Facebook Comments Scraper in the Apify Store.
- Enter one or more Facebook post, photo, or reel permalink URLs.
- Click Start (or send your API request).
- Download or stream your results in JSON, CSV or Excel.
How to scale Facebook Comments Scraper to bulk
The post URL list takes as many links as you need, so a bulk run is just a longer list — paste every post URL you need in one run instead of looping single-URL calls. For a research corpus or a multi-page monitoring job, split a very large URL list across a few runs rather than one oversized run, and raise the comment and reply limits only as far as the depth you actually need, since both caps apply per URL.
✨ Features
Facebook Comments Scraper fetches clean, structured comments from Facebook, working as a facebook post comments scraper built to scrape Facebook comments at any scale, from one post to a page's recent history. It's ideal for brand monitoring, competitive intelligence, public-discourse research, and AI/RAG pipelines that need real comment text.
It extracts, per comment:
- Comment text – the full body of the comment, exactly as written.
- Author details – display name, a numeric or opaque profile ID, and a profile link when Facebook exposes one.
- Like count and reply count – engagement numbers for every comment.
- Nested replies – replies, and their own sub-replies, attached inside the comment row instead of as separate rows, so it doubles as a facebook replies scraper for threaded discussions.
- Timestamp – when the comment was posted, in ISO 8601 UTC.
- Ad Library flag – marks a comment author that is a Page running ads, when Facebook attaches that data.
⚡ Rows reach your dataset while the run is still working, not only at the end — the first comments land in the Output tab within seconds, not after the whole post has been read.
Use cases 💡
- Brand monitoring team — track comment text and reply volume on a brand's own posts.
- Competitive analyst — compare like counts and reply counts across a competitor's recent posts.
- Researcher — pull public discourse from a news post's comment thread for a study.
- AI/RAG engineer — index facebook comment sentiment data into a vector store for retrieval.
- Growth marketer — surface the highest-liked comments to see which messaging resonates.
Building an AI agent? Connect Facebook Comments Scraper over MCP and let it call the actor on its own.
Why choose this actor?
- Nested replies, fetched automatically. A recorded run returned 20 top-level comments — 5 of them with real nested replies already attached — from one post in about 6 seconds, with no second request needed for the reply text.
- Real engagement numbers, not placeholders. A recorded comment came back with a like count of 3 and a reply count of 1, and its one reply carried its own author name, text, and timestamp.
- 4 independent controls, one Actor. Comment limit, reply depth, sort order, and a date filter — tune all four without touching a line of code.
⬇️ Input

It accepts a list of Facebook post, photo, or reel permalink URLs; the post URL list is the only required field.
| Parameter | Required | Type | Description | Example value |
|---|---|---|---|---|
startUrls | Yes | array of strings | One Facebook post, photo, or reel permalink per line. | ["https://www.facebook.com/humansofnewyork/posts/pfbid0BbKbkisExKGSKuhee9a7i86RwRuMKFC8NSkKStB7CsM3uXJuAAfZLrkcJMXxhH4Yl"] |
commentSettings.maxComments | No | integer | Hard cap on top-level comments fetched per URL. Default 100, minimum 1. | 20 |
commentSettings.maxRepliesPerComment | No | integer | Replies (and their own sub-replies) fetched per comment. Default 2, minimum 0; 0 fetches every reply and sub-reply available. | 2 |
commentSettings.commentsSortOrder | No | string (most_relevant | newest | all) | Order of the comment rows in the output. Default all. | "all" |
onlyCommentsNewerThan | No | string | Absolute date (2024-01-15) or a relative window (2 weeks). Keeps only comments and replies posted after this point; filtering happens after comments are fetched. Leave blank to disable. | "2 weeks" |
proxyConfiguration | No | object | Informational only — the Actor always uses Apify's residential proxy regardless of this setting. | {"useApifyProxy": false} |
Free plan limits
Users on the Apify free plan can fetch up to 20 comments per run (all posts together) and 200 comments per month. When the limit is reached, the run finishes successfully with a status message explaining the limit. Upgrade to any paid Apify plan to remove these limits.
Example input
{"startUrls": ["https://www.facebook.com/humansofnewyork/posts/pfbid0BbKbkisExKGSKuhee9a7i86RwRuMKFC8NSkKStB7CsM3uXJuAAfZLrkcJMXxhH4Yl"],"commentSettings": {"maxComments": 20,"maxRepliesPerComment": 2,"commentsSortOrder": "all"}}
⬆️ Output

Every comment is one typed, normalized JSON item with the same field names on every run — nested replies ride inside the parent comment's own row, never as separate rows. A URL that fails entirely is reported with one unbilled accounting row instead. Results export from the Output tab, or the API, as JSON, CSV, or Excel — an easy way to export Facebook comments to CSV for a spreadsheet or a BI tool.
Example output
This is a real row from a recorded run against the example input above:
{"facebookUrl": "https://www.facebook.com/humansofnewyork/posts/pfbid0BbKbkisExKGSKuhee9a7i86RwRuMKFC8NSkKStB7CsM3uXJuAAfZLrkcJMXxhH4Yl","commentUrl": "https://www.facebook.com/humansofnewyork/posts/pfbid02F1Aw7YuH6rE3y893CmceFBCkCHdyp3JnXvqMoTwurFFNSsS59LmsK7QKw7qZUTPRl?comment_id=1321399614945736","id": "Y29tbWVudDo2Mzc1MjE5MzQyNTUyMTEyXzEzMjEzOTk2MTQ5NDU3MzY=","feedbackId": "ZmVlZGJhY2s6NjM3NTIxOTM0MjU1MjExMl8xMzIxMzk5NjE0OTQ1NzM2","date": "2021-08-16T02:08:00+00:00","text": "Funny how sometimes we just seem to stumble into something and find it’s exactly what we should be doing. Keep planting the seeds.","profilePicture": "https://scontent.fdac8-1.fna.fbcdn.net/v/t39.30808-1/571112310_10224295759300729_2684269172790111799_n.jpg?stp=cp0_dst-jpg_tt6&_nc_cat=101&oh=00_AQPq_D-2Lw9BWQyOD2K49w9vg42pYAolw1OT7xPB8ewL-Q","profileId": "pfbid0wrvUdE9yPRYEnQeLk6dJDDYw2qpHt1br9ijipRKdCurkdKzQLAZaViUhyEcU8YKLl","profileName": "Alan B Cohen","profileUrl": "https://www.facebook.com/profile.php?id=1806168525","likesCount": 3,"commentsCount": 1,"reply": [{"facebookUrl": "https://www.facebook.com/humansofnewyork/posts/pfbid0BbKbkisExKGSKuhee9a7i86RwRuMKFC8NSkKStB7CsM3uXJuAAfZLrkcJMXxhH4Yl","commentUrl": "https://www.facebook.com/humansofnewyork/posts/pfbid02F1Aw7YuH6rE3y893CmceFBCkCHdyp3JnXvqMoTwurFFNSsS59LmsK7QKw7qZUTPRl?comment_id=1321399614945736&reply_comment_id=1156884842622198","id": "Y29tbWVudDo2Mzc1MjE5MzQyNTUyMTEyXzExNTY4ODQ4NDI2MjIxOTg=","feedbackId": "ZmVlZGJhY2s6NjM3NTIxOTM0MjU1MjExMl8xMTU2ODg0ODQyNjIyMTk4","date": "2025-11-07T04:59:17+00:00","text": "hi bro","profilePicture": "https://scontent.fdac8-1.fna.fbcdn.net/v/t39.30808-1/533021075_122142761006841301_7350469358114022718_n.jpg","profileId": "pfbid0rBKvkp1FQdSDZab1XrEaKJtHrYJmwfBXhk1ts6sucNZfa9HmyzAeECbULac3wcFzl","profileName": "Glow Carry","profileUrl": "https://www.facebook.com/GlowCarry","likesCount": 0,"commentsCount": 0,"reply": [],"threadingDepth": 1,"facebookId": "1156884842622198","inputUrl": "https://www.facebook.com/humansofnewyork/posts/pfbid0BbKbkisExKGSKuhee9a7i86RwRuMKFC8NSkKStB7CsM3uXJuAAfZLrkcJMXxhH4Yl"}],"threadingDepth": 0,"facebookId": "1321399614945736","inputUrl": "https://www.facebook.com/humansofnewyork/posts/pfbid0BbKbkisExKGSKuhee9a7i86RwRuMKFC8NSkKStB7CsM3uXJuAAfZLrkcJMXxhH4Yl","url_key": "pfbid0BbKbkisExKGSKuhee9a7i86RwRuMKFC8NSkKStB7CsM3uXJuAAfZLrkcJMXxhH4Yl","full_url": "https://www.facebook.com/humansofnewyork/posts/pfbid0BbKbkisExKGSKuhee9a7i86RwRuMKFC8NSkKStB7CsM3uXJuAAfZLrkcJMXxhH4Yl"}
A URL that fails to load returns this shape instead, and the run continues to the next URL:
{"url_key": "pfbid0Xyz","full_url": "https://www.facebook.com/PageName/posts/pfbid0Xyz","error": "the post page could not be loaded after 6 tries (a network error)","comments": []}
How does it work?
It reads the same public page a logged-out visitor's browser would load, through Apify's residential proxy network, so Facebook sees ordinary visitor traffic instead of one data center sending thousands of requests. No Facebook account, login, or credential of any kind is used anywhere in the process — it returns only what any visitor can already see without logging in. Requests that get blocked or rate-limited are retried automatically on fresh connections before the Actor gives up on that one post, so a single hiccup from Facebook does not fail the whole run. The output schema is fixed and normalized: comment text, author details, counts, and timestamps come back in the same shape every time, even if Facebook changes how its own pages are built behind the scenes. Rows are written to your dataset while the scrape is still running, not held back until the run ends.
How do you integrate Facebook Comments Scraper into your stack?
It works with what you already use: call it like a facebook comments api from any language, an MCP server for AI agents, and no-code automation tools.
MCP integration for AI agents
Register the Apify MCP server once, with this Actor already loaded as a tool, and your agent can call it on its own:
$claude mcp add --transport http apify "https://mcp.apify.com?tools=socialdataapi/facebook-comments-scraper"
This registers an MCP server that starts with this Actor as a tool, so your agent can call it directly. Works with Claude Code, Cursor, and Windsurf.
No-code tools (n8n, Make, LangChain)
In n8n, use the Apify node's "Run an Actor" operation (search this Actor by name), or point an HTTP Request node at its run-sync endpoint with your token. In Make, use the Apify app's "Run an Actor" module followed by "Get Dataset Items" to land results in your scenario. In LangChain, install langchain-apify and wrap this Actor with ApifyActorsTool, using its ID from the Apify Store page.
Is it legal to scrape Facebook data?
Scraping publicly accessible Facebook comments — content visible without logging in — is generally treated differently under the law than bypassing a login wall. It returns only publicly available data: what any visitor can already see on the permalink without logging in. Scraping public data is generally permissible under data-protection law like GDPR, but storing and using that data — including commenter names and profile links — must still comply with local data-protection law. Consult legal counsel if your use case involves bulk storage of personal data.
Frequently asked questions
What fields does Facebook Comments Scraper return?
Comment text, author name, author profile link, like count, and reply count are the core fields on every row — see the data fields section for the complete list.
Does Facebook Comments Scraper require a Facebook account or login?
No. Only public comment data is extracted, and no Facebook credentials are read from or required by the input.
How fast does Facebook Comments Scraper run?
A recorded run returned 20 top-level comments, 5 of them with nested replies, from one post in about 6 seconds. Every run reads live data — nothing is served from a cache.
What happens if a post is private, deleted, or the URL is wrong?
The run pushes one accounting row for that URL with an error message describing what went wrong and no comment data, and moves on to the next URL instead of stopping the whole run. That row is not billed.
Can I scrape multiple Facebook posts at once?
Yes, as a bulk facebook comments scraper: the post URL list takes an array, so one run can process as many post, photo, or reel permalinks as you paste in, each billed independently.
Does Facebook Comments Scraper work with Claude, ChatGPT, and other AI agent tools?
Yes — Facebook Comments Scraper is available as an MCP tool. Register the Apify MCP server in Claude Code, Cursor, or Windsurf with claude mcp add --transport http apify "https://mcp.apify.com?tools=socialdataapi/facebook-comments-scraper" and your agent can call it directly. Any agent that can call an HTTP endpoint can also use the REST API directly.
Does Facebook Comments Scraper return data in a format LLMs can use directly?
Yes. Typed, normalized JSON with consistent field names — this Actor turns facebook comments to json with no HTML parsing and no selectors. Pass it straight to an LLM, index it into a vector store, or feed it to an agent tool with no transformation step.
What happens when Facebook changes its layout or anti-bot system?
The output schema is fixed and normalized, so a layout or anti-bot change on Facebook's side does not change the field names or shape your code reads — only the Actor's internal fetching logic needs to adapt.
Can I use Facebook Comments Scraper without managing proxies or browser infrastructure?
Yes. Proxy rotation and retry handling run on the Actor's side — you send one request and get structured JSON back, with no proxy accounts or headless browser setup to maintain.
Which Facebook comment fields work best for AI training data and RAG indexing?
For RAG: the comment text, author name, and timestamp give enough context to cite who said what, when, and on which post. For training data: the like count, reply count, and threading depth (top-level vs. reply) are consistent, typed numbers across every record, with no normalization needed.
Your feedback
Found a bug or missing a field? Let us know through this Actor's Issues tab in Apify Console. Every report gets read, and fixes ship as part of regular maintenance.
