Facebook Post Comments Scraper
Pricing
from $3.00 / 1,000 comment scrapeds
Facebook Post Comments Scraper
Scrape public comments from Facebook post and reel URLs into clean records with author, text, timestamps, reactions and reply counts. No login or cookies needed.
Pricing
from $3.00 / 1,000 comment scrapeds
Rating
0.0
(0)
Developer
Khadin Akbar
Maintained by CommunityActor stats
0
Bookmarked
39
Total users
9
Monthly active users
4 days ago
Last modified
Categories
Share
What is Facebook Post Comments Scraper?
Facebook Post Comments Scraper is an Apify Actor for social media, AI, and MCP workflows that accepts one or more public Facebook post or reel URLs and returns one record per comment. Each record represents one comment on one post, with fields such as author name, comment text, created timestamp, reaction count, reply count, optional reaction breakdown, and provider diagnostics. The output is a clean dataset that can be read directly in Apify, through Apify MCP, or via the Apify API.
Best fit and connected workflows
This Actor fits workflows that start with a specific Facebook post or reel and need structured public comment data for review, analysis, or downstream automation. It is well suited for:
- Comment-thread review on a single post or reel URL.
- Audience-response analysis using author names, comment text, timestamps, reaction counts, and reply counts.
- AI-agent workflows that need one comment per dataset item through Apify MCP.
- Pipelines that join comment records with other Apify Actors for broader social media research.
For adjacent workflows, use the appropriate Apify Actor for the content source you want to read. This Actor is focused on public comments under a single post or reel URL.
Practical scenario
Maya manages a brand post published as a Facebook reel. She starts with the reel URL, sets a total comment cap, and enables reaction breakdown because she wants to compare comment engagement patterns. The dataset returns authorName, text, createdAt, reactionCount, replyCount, and scrapeSource for each comment. Maya can then filter high-reaction comments, review reply-heavy threads, and export the dataset into a reporting or analysis workflow.
Input
The input accepts public Facebook post or reel URLs. Each item in postUrls should point to one post, not a page feed or profile feed. Plain URL strings and { "url": "..." } objects are both accepted.
| Field | Type | Required | Description |
|---|---|---|---|
postUrls | array | Yes | One or more public Facebook post or reel URLs to read comments from. |
maxComments | integer | No | Total comment-record limit across all posts. This is the primary cost cap. Default: 100. |
maxCommentsPerPost | integer | No | Maximum comments to collect from each individual post before moving to the next URL. Default: 1000. |
includeReactionBreakdown | boolean | No | Adds a reactions object with per-type counts when the provider returns it. Default: false. |
provider | string | No | Backend selector: the routing options listed in the input schema. Default: auto. |
Valid focused JSON example
{"postUrls": ["https://www.facebook.com/reel/753347914167361"],"maxComments": 200,"maxCommentsPerPost": 500,"includeReactionBreakdown": true,"provider": "auto"}
Output
Each dataset item represents one scraped comment.
| Field | Type | Description |
|---|---|---|
postUrl | string | Facebook post or reel URL the comment belongs to. |
commentId | string or null | Provider-encoded comment identifier. |
text | string or null | Comment body written by the author. |
authorName | string or null | Display name of the commenter. |
authorId | string or null | Provider-encoded Facebook user identifier. |
authorGender | string or null | Gender when the provider exposes it. |
createdAt | string or null | ISO 8601 timestamp when the comment was posted. |
replyCount | integer or null | Number of replies to the comment. |
reactionCount | integer or null | Total reactions across all types. |
reactions | object or null | Per-type reaction counts when enabled. |
scrapeSource | string | Provider that returned the record: the routing options listed in the input schema. |
scrapedAt | string | ISO 8601 timestamp when the record was emitted. |
Illustrative JSON record
{"postUrl": "https://www.facebook.com/reel/753347914167361","commentId": "Y29tbWVudDoxMjM=","text": "This is incredible, thanks for sharing!","authorName": "Jane Doe","authorId": "100001","createdAt": "2026-06-01T12:30:00.000Z","replyCount": 4,"reactionCount": 27,"scrapedAt": "2026-06-26T00:00:00.000Z"}
The output schema also exposes three top-level run outputs:
dataset: dataset itemssummary: run summary in the default key-value storerunSummary: detailed run summary in the default key-value store
How it works
This Actor reads public Facebook comments through managed data providers. The live contract shows two provider options: the primary and fallback data providers, with auto trying a primary data provider first, then a fallback provider. The actor uses pre-configured owner environment variables for provider keys, so the input only needs Facebook post or reel URLs and your chosen limits.
The dataset view surfaces the main review columns: author, comment text, date, reactions, replies, post URL, and scrape source. The live contract also defines validated dataset writes and run-summary outputs for diagnostics.
Pricing
This Actor uses Pay per event pricing with Apify platform usage included. The primary charged event is Comment scraped, billed for each comment record written to the dataset. There is also a small Actor start event charged once when the run begins.
Example: if a run writes one hundred and twenty comments, the billed event count includes one Actor start event and one hundred and twenty Comment scraped events with Apify platform usage included. See the live Pricing tab for current pricing details and usage information.
Use with AI agents (MCP)
This Actor is available as an Apify Actor usable through Apify MCP. The exact Actor identity is khadinakbar/facebook-comments-scraper.
Tool description: fetch public comment records for one or more Facebook post or reel URLs and return structured rows containing author, text, timestamps, reactions, reply counts, and provider source fields.
Scrape the public comments from this Facebook reel URL and return the dataset rows with author name, comment text, created time, reaction count, reply count, and source. Use the run summary to note which provider returned the records and whether any posts were empty or provider-routed differently.
Output interpretation:
- Use
datasetfor row-level comment analysis. - Use
summaryfor a compact run result. - Use
runSummaryfor provider attempts and diagnostic details. scrapeSourceidentifies which backend returned each row.scrapedAtmarks when the record was emitted.
Provenance and scope:
- Input is limited to public Facebook post and reel URLs.
- Each dataset row corresponds to one comment record.
- Provider diagnostics are part of the workflow and help explain which backend produced the row.
Pagination and cost guidance:
maxCommentscontrols the total comment-record cap across all posts.maxCommentsPerPostcontrols per-post coverage.- Each emitted comment maps to one
Comment scrapedevent.
Apify API example
import { ApifyClient } from "apify-client";const client = new ApifyClient({token: process.env.APIFY_TOKEN,});const run = await client.actor("khadinakbar/facebook-comments-scraper").call({postUrls: ["https://www.facebook.com/reel/753347914167361"],maxComments: 100,provider: "auto"});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log("Run ID:", run.id);console.log("First items:", items);
Best results and outcome guidance
Use a single public post or reel URL per entry in postUrls. Set maxComments to match the amount of data you want to collect across all posts, and use maxCommentsPerPost when you want to balance coverage across multiple URLs. Turn on includeReactionBreakdown when per-type reaction counts matter for your analysis. Choose provider: auto for automatic backend selection, or pin one provider when you want a fixed backend path.
Continue the workflow
- Then use Facebook Followers Scraper to extend Facebook Post Comments Scraper research with a complementary engagement contract.
- Then use Facebook Group Members Scraper to extend Facebook Post Comments Scraper research with a complementary engagement contract.
Design note
I found that the dataset contract requires postUrl, scrapeSource, and scrapedAt for every record, which makes provenance and timing visible even when other fields are null.
FAQ
What kind of URL should I provide?
A public Facebook post or reel URL for a single post thread.
What fields are most useful for analysis?
authorName, text, createdAt, reactionCount, replyCount, and scrapeSource are the main analysis fields, with reactions available when enabled.
How can I tell which backend returned a comment?
Check scrapeSource in each dataset row and the run summary for provider-attempt details.
How can I work with this Actor in Apify MCP?
Connect the Actor through Apify MCP and pass a public post or reel URL plus optional caps. The dataset output is structured for agent consumption.
What if I want to review a compact summary instead of rows?
Read the summary or runSummary records from the run's key-value store.
Responsible use
Use this Actor only for public Facebook comments and in line with applicable laws, platform terms, and rights of data subjects. Review your own data-handling requirements before storing, sharing, or analyzing comment records.
