Facebook Comments Scraper

Export public Facebook post comments for social listening, moderation analysis, campaign reporting, and creator intelligence workflows.

Data fields

FieldTypeDescription
commentIdstringValue exported as commentId.
sourcePostUrlstringValue exported as sourcePostUrl.
postTitlestring | nullValue exported as postTitle.
authorNamestring | nullValue exported as authorName.
authorUrlstring | nullValue exported as authorUrl.
commentTextstring | nullValue exported as commentText.
relativeDatestring | nullValue exported as relativeDate.
likeCountinteger | nullValue exported as likeCount.

Input preview

startUrlsPublic Facebook post URLs *
maxCommentsPerPostMaximum comments per post
maxItemsMaximum comments per post (legacy alias)

API and agents

This actor can be run through Apify API, datasets, webhooks, schedules, and the official Apify MCP server.

How this actor works

See example inputs, outputs, API usage, and practical limits before running this actor on Apify.

Open Apify page

Export public Facebook post comments into a structured dataset for social listening, creator intelligence, moderation review, campaign reporting, and brand monitoring.

Use this Actor when you need a repeatable way to collect visible public comments from one or more Facebook post URLs, download them as CSV/JSON/Excel, or call them from a workflow as a Facebook comments API alternative.

At a glance

  • Primary job: Export Facebook comments data from public post URLs.
  • Input: One or more public Facebook post URLs plus a per-post comment limit.
  • Output: One dataset row per saved comment with author name, comment text, relative date, likes, source post URL, raw visible text, and scrape timestamp.
  • Best for: Social listening, engagement analysis, moderation triage, creator intelligence, dashboards, alerts, and research exports.

Who is it for?

  • Social listening teams tracking public reactions to brand, creator, media, or campaign posts.
  • Moderation and community teams reviewing public comment text, authors, and source URLs in downstream tools.
  • Analysts and researchers building repeatable Facebook comments exports for dashboards, notebooks, alerts, or archives.

Common workflows

  • Brand monitoring: Schedule repeat runs for campaign or announcement posts and compare newly visible comments over time.
  • Creator intelligence: Export audience replies from public creator posts for topic, sentiment, or engagement analysis.
  • Moderation review: Send comment text, author names, and source URLs to review queues or BI tools.
  • Automation: Use the Apify API, webhooks, MCP, or dataset exports to feed alerts, warehouses, notebooks, and reporting workflows.

What data can you extract?

Field Description
commentId Stable ID generated for the source post/comment row.
sourcePostUrl Facebook post URL that produced the comment.
postTitle Visible post/page label or title captured from the public page.
authorName Publicly visible comment author name.
authorUrl Public author/profile URL when Facebook exposes it in the logged-out view.
commentText Cleaned visible comment text.
relativeDate Visible Facebook relative date label, such as 2w or 1y.
likeCount Visible comment-like count when present.
replyDiagnostics Visible reply count/label when present.
commentPermalink Comment permalink when Facebook exposes it publicly.
rawText Raw visible row text used for audit and parser diagnostics.
scrapedAt ISO timestamp when the row was saved.

Example input

{
  "startUrls": [
    {
      "url": "https://www.facebook.com/humansofnewyork/posts/pfbid0BbKbkisExKGSKuhee9a7i86RwRuMKFC8NSkKStB7CsM3uXJuAAfZLrkcJMXxhH4Yl"
    }
  ],
  "maxCommentsPerPost": 20
}

Example output

{
  "commentId": "a1b2c3d4e5f6",
  "sourcePostUrl": "https://www.facebook.com/humansofnewyork/posts/pfbid0BbKbkisExKGSKuhee9a7i86RwRuMKFC8NSkKStB7CsM3uXJuAAfZLrkcJMXxhH4Yl",
  "postTitle": "Humans of New York",
  "authorName": "Jane Doe",
  "authorUrl": null,
  "commentText": "This story is beautiful.",
  "relativeDate": "2w",
  "likeCount": 12,
  "replyDiagnostics": "1 reply",
  "commentPermalink": null,
  "rawText": "Jane Doe 2w This story is beautiful. 12 1 reply",
  "scrapedAt": "2026-07-31T18:42:04.000Z"
}

Tips for best results

  • Use public Facebook post URLs that load without being logged in.
  • Start with a low maxCommentsPerPost value, review the dataset, then scale scheduled runs.
  • Split very large monitoring jobs into smaller batches so one blocked or private post does not delay unrelated posts.
  • Keep source post URLs in your downstream database so repeat exports can be deduplicated by commentId and sourcePostUrl.

API usage

Node.js:

import { ApifyClient } from "apify-client";

const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor("fetch_cat/facebook-comments-scraper").call({
  startUrls: [
    { url: "https://www.facebook.com/humansofnewyork/posts/pfbid0BbKbkisExKGSKuhee9a7i86RwRuMKFC8NSkKStB7CsM3uXJuAAfZLrkcJMXxhH4Yl" }
  ],
  maxCommentsPerPost: 20
});
console.log(run.defaultDatasetId);

Python:

from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("fetch_cat/facebook-comments-scraper").call(run_input={
    "startUrls": [
        {"url": "https://www.facebook.com/humansofnewyork/posts/pfbid0BbKbkisExKGSKuhee9a7i86RwRuMKFC8NSkKStB7CsM3uXJuAAfZLrkcJMXxhH4Yl"}
    ],
    "maxCommentsPerPost": 20,
})
print(run["defaultDatasetId"])

cURL:

curl -X POST "https://api.apify.com/v2/acts/fetch_cat~facebook-comments-scraper/runs?token=YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"startUrls":[{"url":"https://www.facebook.com/humansofnewyork/posts/pfbid0BbKbkisExKGSKuhee9a7i86RwRuMKFC8NSkKStB7CsM3uXJuAAfZLrkcJMXxhH4Yl"}],"maxCommentsPerPost":20}'

MCP and AI agents

Use this Actor from MCP-compatible tools through the official Apify MCP Server.

claude mcp add --transport http apify "https://mcp.apify.com?tools=fetch_cat/facebook-comments-scraper"
{
  "mcpServers": {
    "apify": {
      "url": "https://mcp.apify.com?tools=fetch_cat/facebook-comments-scraper"
    }
  }
}

Example prompt: "Run Facebook Comments Scraper for this public post URL and summarize the most common customer complaints in the exported comments."

Limits and caveats

  • The Actor runs against public, visible Facebook post pages. It does not log in, bypass privacy settings, or return private comments.
  • Facebook can hide, reorder, or limit comments in public views; the dataset reflects what was visible during the run.
  • Some optional fields, especially author URLs and comment permalinks, are only saved when Facebook exposes them publicly.
  • Relative dates are captured as displayed by Facebook. Use scrapedAt with relativeDate for freshness analysis.
  • Process only public data you are allowed to access, and follow applicable terms and laws.

Support

Open an issue from the Actor page if a run fails or output looks wrong. Include the run ID or run URL, input JSON, expected output, actual output, and one reproducible public Facebook post URL.

Common questions

Questions and answers reused from the canonical actor README.

What data can I export with Facebook Comments Scraper?

You can export visible public comment text, author names, source post URLs, relative dates, likes when shown, reply labels when shown, raw visible text, and scrape timestamps.

Can I run Facebook Comments Scraper through an API, schedule, or MCP client?

Yes. You can call the Actor through the Apify API, schedule repeat monitoring runs, connect webhooks, or use the Apify MCP Server from compatible AI tools.

How much does it cost to use Facebook Comments Scraper?

The Actor charges a small run-start event and a per-comment event for each saved dataset row. Check the live Apify Pricing tab for current tier prices before running large jobs.

How do I export Facebook comments data to CSV or Excel?

Run the Actor with public post URLs, open the default dataset, and choose CSV, Excel, JSON, XML, RSS, or API export from Apify.

Why are some author URLs or comment links empty?

Facebook does not always expose profile links or comment permalinks in logged-out public views. The Actor leaves unavailable optional fields empty instead of guessing.