Facebook Comments Scraper - Deep, No Login
Pricing
from $2.00 / 1,000 results
Facebook Comments Scraper - Deep, No Login
Scrape comments from public Facebook posts with deep pagination. By post URL, get each comment's author name, profile link, text, like count, timestamp and replies — far beyond the preview comments. No login, no API key, no browser. Export to JSON, CSV or Excel.
Pricing
from $2.00 / 1,000 results
Rating
0.0
(0)
Developer
Haketa
Maintained by CommunityActor stats
0
Bookmarked
5
Total users
2
Monthly active users
0.72 hours
Issues response
8 days ago
Last modified
Categories
Security
Limited permissionsShare
Facebook Comments Scraper — Author, Text, Likes, Replies & Timestamps
Scrape comments from public Facebook posts at scale — no login, no coding, no API key. This Facebook comments scraper takes any public post URL and returns every comment it can collect: the author name, profile link, comment text, like/reaction count, reply depth and timestamp. Point it at one post or hundreds; it pages through each thread over fast HTTP and gives you far more than the one or two preview comments Facebook shows by default. In a fresh benchmark run it pulled 366 unique comments from a single CNN news post (1,318 comments total) with 100% coverage on every output field — logged out, no API key.
Export your results to JSON, CSV, Excel, HTML, XML, or pull them straight from the API.
Built for social media analysts, community and moderation teams, brand and agency marketers, journalists, political researchers, lead-generation teams and anyone who needs to scrape Facebook comments into a clean, structured dataset without touching the Graph API.
🔎 Why scrape Facebook comments?
The comment thread under a public Facebook post is where the real conversation happens. A post's reach and reaction counts tell you how many people engaged — but the comments tell you what they actually think: the praise, the complaints, the questions, the arguments, the buying signals and the names of the people saying them. For brands, creators, newsrooms and researchers, that thread is one of the richest sources of unfiltered public opinion on the internet.
Collecting it by hand is miserable. Facebook only shows a few top comments by default, hides replies behind "View more replies", lazily loads the rest as you scroll, and reshuffles everything by "Most relevant". Copy-pasting hundreds of comments — with their authors, like counts and timestamps — across dozens of posts is hours of tedious, error-prone work. The official Graph API, meanwhile, requires an app, a review process and a Page access token, and simply won't return comments on posts you don't own.
This Facebook comments scraper removes all of that. It replays Facebook's own comment pagination the same way a logged-out browser would, walks the thread page after page, de-duplicates everything, and hands you a tidy table. No app review, no access token, no browser extension.
Common reasons people scrape Facebook comments:
- Sentiment & audience research — read what people really say under a brand, product, campaign or news post.
- Lead generation — capture the name and profile link of everyone engaging with posts in your niche.
- Social listening & competitor monitoring — track the conversation on your own posts and your competitors'.
- Moderation & brand safety — pull a full thread to audit it for abuse, spam or policy violations.
- Journalism & political research — analyze public reaction to a statement, event or viral post.
- Content & market research — see which messages resonate by mining comments across many posts at once.
- Community management — export comments to a spreadsheet to triage questions, feedback and support requests.
✨ What this Facebook comments scraper does
- ✅ Scrapes comments from any public Facebook post URL —
facebook.com/{page}/posts/{id},permalink.php/story.phplinks, and public video post URLs. Paste one URL or a whole list; each post is scraped separately. - ✅ Deep pagination, not just the preview — it reads the post page's embedded comments and comment cursor, then replays Facebook's own
CommentsListComponentsPaginationQuerypage after page until it reaches yourmaxCommentslimit or the thread runs out. You get far more than the top one or two comments. - ✅ Captures the fields that matter — for every comment:
commentId,authorName,authorId,authorUrl(profile link),text(emoji preserved),likeCount(reactions),createdTime,depthandisReply, plus post context (postUrl,postId,postTotalComments). - ✅ Top-level comments and replies — keep
includeReplieson and every nested reply is collected too; each row carries itsdepthand anisReplyflag so you can split them trivially. - ✅ Comment ordering you control — choose All comments (unfiltered), Most relevant, Newest activity or Top-level only via
commentsSort. - ✅ Automatic de-duplication — comments are de-duped by
commentIdacross the whole run, so the same comment is never stored (or billed) twice. - ✅ No login required — runs fully logged out by default. Optionally paste your own
loginCookieto fetch with your session and reach deeper into very large threads. - ✅ Pure HTTP, no browser — it does not drive a headless browser, so it's fast and lightweight.
- ✅ Resilient by design — the pagination
doc_idis extracted from Facebook's live JS bundle at run time (surviving Facebook's periodic id rotation) with a known fallback, and each post is retried across multiple fresh residential sessions. - ✅ Export anywhere — JSON, CSV, Excel, HTML, XML, or the Apify API, with integrations for Make, Zapier, Google Sheets and webhooks.
🎯 Use cases
- Brand & social media managers — monitor sentiment and engagement on your own and competitors' Facebook posts.
- Marketing & PR agencies — build audience-reaction reports for clients from the public comment conversation.
- Lead-generation & sales teams — collect the people commenting on relevant posts (name + profile link) as a prospecting signal.
- Community & moderation teams — pull entire threads to review for spam, abuse or policy violations at scale.
- Journalists & researchers — capture and analyze public reaction to a viral post, announcement or political statement.
- Market & product researchers — mine comments across many posts to surface feature requests, complaints and buying intent.
- Data & analytics teams — feed structured comment data (text, likes, timestamps) into sentiment models and dashboards.
- Academics & social scientists — assemble reproducible datasets of public discourse for study.
📥 Input
Configure the actor from the Apify Console UI or pass a JSON input via the API. The only required thing is one or more public Facebook post URLs — everything else has sensible defaults.
| Field | Type | Description |
|---|---|---|
postUrls | array | Public Facebook post URLs — facebook.com/{page}/posts/{id}, permalink.php / story.php links, or public video post URLs. Each post is scraped separately. Leave empty to run a demo on a public CNN post. |
maxComments | integer | Maximum comments to collect per post. The actor pages until it hits this number or Facebook runs out of logged-out comments for the post. Default 100. |
includeReplies | boolean | Include replies to comments (depth > 0), not just top-level comments. Default true. |
commentsSort | string | Comment order: RANKED_UNFILTERED (all comments), RANKED_FILTERED (most relevant), RECENT (newest activity) or CHRONOLOGICAL (top-level only). Default RANKED_UNFILTERED. |
loginCookie | string | Optional. Your own Facebook Cookie header (DevTools → Network → any facebook.com request → Cookie) to fetch with your session. Leave empty to run logged out. Treat it like a password. |
proxyConfiguration | object | Residential proxy is required — Facebook blocks datacenter IPs for this data. Defaults to Apify Residential (US). |
Example input
{"postUrls": ["https://www.facebook.com/cnn/posts/pfbid0V91q399yAUSE5EAUQapwc9CHzPRKZ2wsjnh8a48xbfUobU16RK3BNoo8jK2yaRK2l"],"maxComments": 100,"includeReplies": true,"commentsSort": "RANKED_UNFILTERED","proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"],"apifyProxyCountry": "US"}}
📤 Output
The actor stores one row per comment in the run's default dataset. Each record carries the comment, its author, engagement, timing and the post it belongs to.
Example output item
{"postUrl": "https://www.facebook.com/cnn/posts/pfbid0V91q399…","postId": "pfbid0V91q399yAUSE5EAUQapwc9CHzPRKZ2wsjnh8a48xbfUobU16RK3BNoo8jK2yaRK2l","postTotalComments": 1318,"commentId": "3288600681329253","authorName": "Billy W Thompson","authorId": "100001981282178","authorUrl": "https://www.facebook.com/100001981282178","text": "Since she was previously part of the family, I bet she has some good stories…","likeCount": 160,"depth": 0,"isReply": false,"createdTime": "2026-10-13T14:25:40.000Z","scrapedAt": "2026-11-02T01:37:46.817Z"}
Output field reference
| Field | Description |
|---|---|
postUrl | The post URL you supplied. |
postId | The post id parsed from the URL. |
postTotalComments | Total comments Facebook reports on the post (present when available). |
commentId | The comment's unique id (used for de-duplication). |
authorName | Display name of the commenter. |
authorId | The commenter's Facebook user id — a classic numeric id or a modern opaque pfbid… id, depending on the account. |
authorUrl | Link to the commenter's profile (facebook.com/{authorId}), built from whichever id form Facebook returns. |
text | The comment text, with emoji preserved. |
likeCount | Reactions / likes on the comment. |
depth | Nesting depth — 0 for a top-level comment, > 0 for a reply. |
isReply | true if the comment is a reply (depth > 0), otherwise false. |
createdTime | ISO 8601 timestamp of the comment (present when Facebook exposes it). |
scrapedAt | ISO 8601 timestamp of when the row was scraped. |
Core fields (commentId, authorName, authorId, authorUrl, text, likeCount, depth, isReply, postUrl, postId) populate on essentially every row — in a fresh 366-comment benchmark run all 13 fields came back at 100% coverage with zero duplicates. postTotalComments and createdTime are present whenever Facebook exposes them for the post (both were fully populated in the benchmark). likeCount is 0 for comments with no reactions — that is the real value, not a gap.
🔁 Pagination & scale
Logged out, a public Facebook post page embeds the first batch of comments plus a guest session and a comments cursor. The actor reads those, then replays Facebook's own CommentsListComponentsPaginationQuery against /api/graphql/ with that cursor, page after page (up to 120 pages per session), collecting every comment node and advancing the cursor until the thread ends or your maxComments limit is reached.
Because logged-out pagination depth varies by IP and session, if one residential session stalls early the actor automatically opens another fresh residential session and keeps accumulating — de-duplicating by commentId — across up to several sessions, so you reliably get a large slice of a post's thread. Total volume per post is controlled by maxComments; popular posts routinely return hundreds of comments. In a fresh benchmark run a single CNN post (1,318 comments total) yielded 366 unique comments with a 0% duplicate rate. De-duplication runs across the entire run, so the same comment is never stored twice even if it appears under multiple requests (this also prevents the same comment being billed twice).
⚙️ How to use
- Open the actor on the Apify Console and click Try for free (or use it from an existing Apify account).
- Paste one or more public Facebook post URLs into
postUrls. - Set
maxComments, toggleincludeReplies, and pick acommentsSortorder. - Leave
proxyConfigurationon the default Residential (US) — it's required for this data. - Click Start. Watch the live log page through the thread, then open the Dataset tab.
- Export as JSON, CSV, Excel, HTML or XML — or call the Apify API to pull results into your app.
- Automate it: run on a schedule, trigger via the API, or wire the dataset into Make, Zapier, Google Sheets or a webhook to keep a feed of fresh comments.
💡 Tips
- Use
RANKED_UNFILTERED(the default) to collect the widest set of comments; switch toRECENTto prioritize the newest activity orCHRONOLOGICALfor top-level comments only. - Turn
includeRepliesoff if you only care about top-level comments — it reduces volume and cost. You can always split later using theisReply/depthfields in the output. - Raise
maxCommentsfor very large threads; the multi-session pagination will keep going until it hits your limit or the post runs dry. - To go deeper on huge posts, paste your own
loginCookie— a logged-in session can reach further into very large threads than a logged-out one. - Keep the residential proxy on. Datacenter IPs are blocked by Facebook for comment data; the default Residential (US) group is what makes this work.
- Batch many posts in a single run by adding them all to
postUrls— each is scraped and labeled with its ownpostUrl/postId.
❓ FAQ
Is it legal to scrape Facebook comments? This actor collects only publicly available comment data from public posts — no private content, no login required. Public data scraping is broadly permitted, but comments can contain personal data, so you are responsible for using the output in compliance with Facebook's Terms, the GDPR/CCPA and applicable laws (including having a lawful basis for processing personal data and respecting anti-spam rules).
Do I need a Facebook account, app or API key?
No. The scraper runs fully logged out — no account, no app review, no Graph API access token, no browser extension. A loginCookie is optional, only to reach deeper into very large threads.
Why is a residential proxy required? Facebook serves this comment data only to residential IPs and blocks datacenter IPs. The actor defaults to Apify Residential (US), which is what makes extraction reliable.
How many comments will I get, and how fast?
As many as you set in maxComments, subject to how many Facebook exposes for that post logged out. Popular posts routinely return hundreds of comments — a fresh benchmark pulled 366 unique comments from one CNN post in about two minutes. Because it's pure HTTP (no headless browser), it's quick and lightweight; batch many postUrls in one run to scale across posts.
Does it scrape replies as well as top-level comments?
Yes. Keep includeReplies on and every nested reply is collected; each row carries a depth and an isReply flag so you can separate them.
Which URLs are supported?
Public post URLs in the forms facebook.com/{page}/posts/{id}, permalink.php / story.php links, and public video post URLs.
Can I scrape private posts or Facebook Groups? No. Only public posts are accessible without logging in. Private posts, closed groups and friends-only content are out of scope.
What export formats are available? Is there an API? Results download as JSON, CSV, Excel, HTML or XML, and the full Apify API lets you fetch the dataset programmatically or trigger runs from your own app.
How fresh is the data?
Every run fetches live from Facebook at that moment — each row includes a scrapedAt timestamp — so schedule the actor to keep a dataset of comments up to date.
Can I filter by newest, most relevant, or top-level only?
Yes — use commentsSort: RANKED_UNFILTERED (all), RANKED_FILTERED (most relevant), RECENT (newest activity) or CHRONOLOGICAL (top-level only).
Why might a run return fewer comments than the post's total?
Logged out, Facebook exposes a large but variable slice of a thread; the amount can differ by post and session. Raise maxComments, and for the biggest threads supply a loginCookie to push further.
🔗 Related scrapers
- YouTube Comments Scraper — Author, Likes, Replies & Text
- YouTube Channel Contact Scraper — Email, Website & Socials
- Patreon Scraper — Creators, Tiers, Patrons & Posts
- WeChat Official Account Scraper — Profiles, Articles & Content
- Xiaohongshu (RedNote) Scraper — Notes, Users & Search
- Bilibili Scraper — Video, Comments, Danmaku & UP主
⚖️ Legal & ethical use
This actor collects publicly available comment data from public Facebook posts. Comments can contain personal data — use the output responsibly and in compliance with Facebook's Terms, the GDPR/CCPA and applicable laws (including a lawful basis for processing personal data and anti-spam rules). You are responsible for how you use it.
Ready to scrape Facebook comments? Paste your public post URLs, hit Start, and export author, text, likes, replies and timestamps to JSON, CSV or Excel in minutes.