Facebook Post Comments Scraper avatar

Facebook Post Comments Scraper

Pricing

from $3.00 / 1,000 comment scrapeds

Go to Apify Store
Facebook Post Comments Scraper

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

Khadin Akbar

Maintained by Community

Actor stats

0

Bookmarked

39

Total users

9

Monthly active users

4 days ago

Last modified

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.

FieldTypeRequiredDescription
postUrlsarrayYesOne or more public Facebook post or reel URLs to read comments from.
maxCommentsintegerNoTotal comment-record limit across all posts. This is the primary cost cap. Default: 100.
maxCommentsPerPostintegerNoMaximum comments to collect from each individual post before moving to the next URL. Default: 1000.
includeReactionBreakdownbooleanNoAdds a reactions object with per-type counts when the provider returns it. Default: false.
providerstringNoBackend 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.

FieldTypeDescription
postUrlstringFacebook post or reel URL the comment belongs to.
commentIdstring or nullProvider-encoded comment identifier.
textstring or nullComment body written by the author.
authorNamestring or nullDisplay name of the commenter.
authorIdstring or nullProvider-encoded Facebook user identifier.
authorGenderstring or nullGender when the provider exposes it.
createdAtstring or nullISO 8601 timestamp when the comment was posted.
replyCountinteger or nullNumber of replies to the comment.
reactionCountinteger or nullTotal reactions across all types.
reactionsobject or nullPer-type reaction counts when enabled.
scrapeSourcestringProvider that returned the record: the routing options listed in the input schema.
scrapedAtstringISO 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 items
  • summary: run summary in the default key-value store
  • runSummary: 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 dataset for row-level comment analysis.
  • Use summary for a compact run result.
  • Use runSummary for provider attempts and diagnostic details.
  • scrapeSource identifies which backend returned each row.
  • scrapedAt marks 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:

  • maxComments controls the total comment-record cap across all posts.
  • maxCommentsPerPost controls per-post coverage.
  • Each emitted comment maps to one Comment scraped event.

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

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.