Facebook Comments & Replies Scraper avatar

Facebook Comments & Replies Scraper

Pricing

from $1.20 / 1,000 facebook comment or replies

Go to Apify Store
Facebook Comments & Replies Scraper

Facebook Comments & Replies Scraper

Extract public Facebook comments and replies from known post, Reel, video, photo, permalink, or supported share URLs. Export thread relationships, text, timestamps, public author details, engagement counts, and attachments to JSON or CSV.

Pricing

from $1.20 / 1,000 facebook comment or replies

Rating

0.0

(0)

Developer

Data Slayer

Data Slayer

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

an hour ago

Last modified

Share

Turn known public Facebook post, Reel, video, photo, permalink, or supported share URLs into clean comment and reply rows with stable thread relationships.

Watch the demo

YouTube video coming soon.

What this Actor does

Use this Actor for audience research, brand monitoring, customer-feedback analysis, creator research, and comment data pipelines when you already know the Facebook content to inspect.

Every available public comment becomes one dataset row. Turn on reply expansion to save replies as separate rows with their parent and root comment IDs. The Actor does not search Facebook for posts and does not treat status messages as paid results.

Input

FieldTypeRequiredDefaultLimitsPurpose
postUrlsOrIdsarray of stringsyesexample URL1–20 entries; each at most 500 charactersDirect public post, Reel, video, photo, permalink, supported share URL, or numeric post ID.
maxCommentsPerPostintegerno5001–5,000Maximum combined comment and reply rows saved for each input.
includeRepliesbooleannofalse—Save public replies as paid rows when their parent is also saved.
{
"postUrlsOrIds": ["https://www.facebook.com/example/posts/123456789012345"],
"maxCommentsPerPost": 500,
"includeReplies": false
}

Page, profile, feed, search, and group home URLs are not content inputs. Duplicate inputs are processed once.

Output

Each unique delivered comment or reply creates one paid row.

FieldTypeNullableDescription
postId, postUrlstringyesSource content identity when available.
commentIdstringnoStable comment or reply identity and deduplication key.
commentUrlstringyesPublic comment link when available.
parentCommentIdstringyesDirect saved parent for a reply; null for top-level comments.
rootCommentIdstringnoSaved top-level root for rebuilding a thread.
depthintegerno0 for top-level comments; positive for replies.
isReplybooleannoWhether the row is a reply.
text, publishedAtstringyesPublic text and exact timestamp when exposed.
likeCount, reactionCount, replyCountintegeryesPublic counts when exposed; missing values stay null.
authorobjectnoPublic author ID, name, URL, and profile picture when exposed.
attachmentsarraynoPublic comment media metadata when exposed.
requestedInputstringnoFirst submitted value that produced the row.
retrievedAtstringnoUTC collection time.
[
{
"postId": "123456789012345",
"postUrl": "https://www.facebook.com/example/posts/123456789012345",
"commentId": "900000000000001",
"commentUrl": "https://www.facebook.com/example/posts/123456789012345?comment_id=900000000000001",
"parentCommentId": null,
"rootCommentId": "900000000000001",
"depth": 0,
"isReply": false,
"text": "A public comment used to illustrate the output contract.",
"publishedAt": "2026-09-20T10:00:00Z",
"likeCount": 3,
"reactionCount": 4,
"replyCount": 1,
"author": {"id": "author-42", "name": "Example Person", "url": "https://www.facebook.com/example.person", "profileImageUrl": null},
"attachments": [],
"requestedInput": "https://www.facebook.com/example/posts/123456789012345",
"retrievedAt": "2026-09-21T00:00:00.000Z"
}
]

The example is illustrative and schema-validated locally; it is not a live result claim.

Empty, unavailable, partial, and failed runs

Invalid input stops before retrieval. Private, deleted, unsupported, unavailable, confirmed-empty, and duplicate items do not become dataset rows and are not charged as comment results. Their safe outcomes remain in the free RUN_SUMMARY key-value record.

The summary distinguishes succeeded, partial, empty, failed, charge_limit_reached, billing_uncertain, and cancelled. It reports posts processed, requests made, unique rows delivered and charged, comments versus replies, duplicates, repeated pagination, safety-budget stops, and functional errors.

If a storage response fails after a write may have completed, the Actor stops with billing_uncertain and does not retry that row.

Pricing

Pay per event: one small Actor-start event and one facebook-comment event for each unique public comment or reply successfully delivered.

PlanActor startPer row100 rows1,000 rows
Free$0.0050$0.0018$0.1850$1.8050
Bronze$0.0050$0.0016$0.1650$1.6050
Silver$0.0050$0.0014$0.1450$1.4050
Gold$0.0050$0.0012$0.1250$1.2050
Platinum$0.0050$0.0012$0.1250$1.2050
Diamond$0.0050$0.0012$0.1250$1.2050

Replies use the same row price and count toward maxCommentsPerPost. Platform compute usage, if any, is shown separately by Apify.

Reliability and limits

  • Transient rate-limit, server, and timeout failures use bounded retries and honor a short Retry-After value when available.
  • Pagination, request count, runtime, per-post row count, and duplicate IDs are bounded.
  • Public Facebook comment availability can differ by content type, region, viewer state, sorting, moderation, deletion, and visibility settings.
  • The requested maximum is a cap, not a completeness promise. The Actor does not promise every comment shown in Facebook counters or every historical reply.
  • Replies are saved only when the Actor can also save their parent and root rows.
  • Timestamps, reaction counts, author links, profile pictures, and attachments may be missing or change later. Missing values stay null.
  • Public media URLs can expire. Store only data you have a lawful reason to process.

Use from the API

After publication, call the Actor with your Apify token:

curl "https://api.apify.com/v2/acts/data-slayer~facebook-comments-scraper/runs?token=<YOUR_APIFY_TOKEN>" \
-X POST \
-H "Content-Type: application/json" \
-d '{"postUrlsOrIds":["https://www.facebook.com/example/posts/123456789012345"],"maxCommentsPerPost":500,"includeReplies":false}'

The proposed slug is not live yet. This endpoint becomes valid only after an authorized release.

FAQ

How much does it cost to run this Actor? Pricing is listed in the Pricing section above, charged per row returned. You only pay for the rows the Actor actually produces, so a small test run costs cents.

Do I need cookies or a login? No. This Actor reads public data only - no cookies, no account, no browser automation.

Can I schedule it? Yes. Run it from the Apify API, on a schedule, or via a webhook, and export results as JSON, CSV or Excel.

What if I need a slightly different output? Open an issue on the Actor's Issues tab describing the shape you need.

More Facebook actors from the same portfolio. Apify only auto-recommends actors in the same category, so here are the rest of ours:

Actor
Facebook Ads Library Scraper
Facebook Events Scraper · No Cookies
Facebook Group Posts Scraper · No Cookies
Facebook Keyword Post Search · Public Posts
Facebook Marketplace Listing Scraper · No Cookies
Facebook Page Details Scraper · No Cookies
Facebook Page Posts Scraper · No Cookies
Facebook Page Reviews Scraper · No Cookies
Facebook Page Search Scraper · No Cookies
Facebook People Search Scraper · No Cookies
Facebook Public Profile Scraper · People Lookup by URL or ID