Facebook Comments Scraper - Threaded Replies, No Login avatar

Facebook Comments Scraper - Threaded Replies, No Login

Pricing

from $1.00 / 1,000 comments

Go to Apify Store
Facebook Comments Scraper - Threaded Replies, No Login

Facebook Comments Scraper - Threaded Replies, No Login

Scrape full comment threads from Facebook posts without cookies or an account. Comment text, author, timestamp, likes, and nested replies to depth 2, with the parent id on every row so the thread rebuilds exactly. Works on page posts and public group posts alike.

Pricing

from $1.00 / 1,000 comments

Rating

0.0

(0)

Developer

ApifyActors

ApifyActors

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

5 hours ago

Last modified

Share

Facebook Comments Scraper — whole threads, replies included, no login

Pull every comment on a Facebook post, with its replies, without an account and without cookies. Page posts, video posts and public group posts all work the same way.

What it does that the others don't

  • Complete threads, not the visible ones. By default it reads the thread in full, oldest first, rather than Facebook's ranked view — which is what a visitor sees and is deliberately incomplete. If you want the ranked order you can ask for it.
  • Replies to depth 2, threaded properly. Every row carries parent_comment_id and depth, so you can rebuild the tree exactly rather than guessing from indentation. A comment's reply_count covers its whole sub-thread, which is why depth 2 is what makes the numbers add up.
  • Group posts. Public group threads read the same as page threads.
  • Failed posts cost nothing. A deleted post, a comments-disabled post or a link with no usable id comes back as an error row, unbilled.

Input

FieldWhat it does
startUrlsPost permalinks or bare numeric post IDs, one per entry
includeRepliesExpand reply threads to depth 2 (on by default)
maxCommentsPerPost0 for the whole thread, or a cap to control spend — see the warning below
commentsRankedOff (default) = complete thread, oldest first. On = Facebook's ranked, partial order
countryCodeCountry to browse from
{
"startUrls": ["https://www.facebook.com/nasa/posts/1234567890123456", "284219939974539"],
"includeReplies": true,
"maxCommentsPerPost": 0
}

⚠️ If you want replies, leave maxCommentsPerPost at 0. The cap counts every row, replies included, and it is applied after the reply layer is merged — with top-level comments first. So on a thread with 500 comments, a cap of 50 returns 50 top-level comments and no replies at all, which looks exactly like a thread that has none.

About post URLs

Facebook has two permalink shapes. One carries a numeric post id (/posts/<id>, /permalink/<id>, ?story_fbid=<id>, /videos/<id>, /photo?fbid=<id>) — paste those directly. The other is the opaque /posts/pfbid… form you get from the share button, which contains no id at all; no scraper can resolve it without already knowing the post. Paste the numeric post ID instead — the companion Facebook Posts Scraper returns it as post_id on every row, so chaining the two actors just works.

Output

One row per comment or reply:

{
"post_id": "284219939974539",
"post_url": "https://www.facebook.com/nasa/posts/1234567890123456",
"source_name": "NASA",
"comment_id": "1234567890",
"comment_url": "https://www.facebook.com/nasa/posts/1234567890123456?comment_id=1234567890",
"parent_comment_id": "",
"depth": 0,
"text": "Incredible image — what's the exposure time on this?",
"created_at": "2026-09-22T09:14:03Z",
"created_time": 1790068443,
"likes": 24,
"likes_label": "24",
"reply_count": 3,
"author_name": "Jane Doe",
"author_id": "100001234567890",
"author_anonymous": false,
"source_dialect": "en",
"attachment_type": "",
"attachment_url": "",
"scraped_date": "2026-09-23T00:28:13Z"
}

depth: 0 is a top-level comment; replies carry depth: 1 or 2 and point at their parent.

Pricing

$1.00 per 1,000 comments, replies included at the same rate, plus Apify's standard $0.00005 actor start. Nothing is charged for posts that fail.

The official Apify comments scraper charges $2.00 per 1,000. Cheaper actors exist; they return top-level comments from a ranked, partial view, and several of them bill replies separately at a higher rate than the comments themselves.

Notes and limits

  • Public content only. No account means no private groups and no friends-only posts.
  • Some replies are not exposed to a logged-out reader. Where that happens the run log says so per comment, and the reply layer reports whether it finished complete or partial — it never reports missing replies as "this comment has none".
  • Long threads take requests. Comments arrive about ten per request, so a 300-comment thread is roughly 30 round trips and the actor paces itself through them. Budget time for very large threads, and use maxCommentsPerPost if you would rather cap the spend — but read the warning above first.
  • Rate limiting is expected and handled. The actor re-establishes its session and resumes from where it stopped rather than starting the thread over. This applies to the reply layer too, so a throttled reply query is retried rather than recorded as an empty thread.

FAQ

Do I need cookies or a Facebook account? No.

Will it get my account banned? It never logs in, so your account is never involved.

Can I get comments on a Reel? If the URL carries a numeric id, yes.

How do I get post URLs in bulk? Run the companion Facebook Posts Scraper and feed its post_id column straight into startUrls.

Is this legal? Scraping publicly available data is generally lawful in most jurisdictions, but comments are personal data. You are responsible for your own compliance, particularly under the GDPR, and for Facebook's terms.