Facebook Comments [$1.5💰] Scraper
Pricing
from $0.49 / 1,000 results
Facebook Comments [$1.5💰] Scraper
💰 $1.5 per 1,000 results – No limits, no quotas, unlimited extraction. Extracts Facebook comments with profile data (name, ID, avatar, URL), comment metadata (text, date, likes, replies), post context (title, URL), and threading info for posts, reels, photos, and group content.
Pricing
from $0.49 / 1,000 results
Rating
5.0
(2)
Developer
Muhamed Didovic
Maintained by CommunityActor stats
2
Bookmarked
42
Total users
7
Monthly active users
5.9 hours
Issues response
13 hours ago
Last modified
Categories
Share
Facebook Comments Scraper
⚙️ How it works
Scrape all public comments — and nested replies — from any Facebook post, Reel, Watch video, or photo. Paste a URL, get one clean JSON row per comment: author, text, timestamp, like count, permalink, and full reply threading. Pure HTTP via Comet/GraphQL pagination — no browser farm, no login, no cookies required.
| Paste this | Get back |
|---|---|
facebook.com/{page}/posts/{id} (page post) | All comments on the post |
facebook.com/reel/123… (Reel) | All comments on the Reel |
facebook.com/watch?v=123… (Watch video) | All comments on the video |
facebook.com/photo?fbid=123… (photo / album) | All comments on the photo story |
facebook.com/groups/…/posts/123… (group post) | All comments on the group post |
facebook.com/share/p/… (share link) | Resolves to the story, then all comments |
… with includeNestedComments: true | Each reply as its own row, with parent linkage |
Pure HTTP. No headless browser, no third-party CAPTCHA service. One stable output schema across every URL type.
✨ Why use this scraper?
- 💬 Full comment history, not just the first page. Walks Facebook's own GraphQL comment pagination until your
maxItemscap — so you get the whole thread, not the 10 comments visible on first load. - 🧵 Nested replies as first-class rows. Toggle
includeNestedCommentsto materialize every reply withparentComment,parentReply,replyToCommentId, andthreadingDepth(1 = reply, 2 = reply-to-reply). - 🔀 One schema for every surface. Posts, Reels, Watch, photos, group posts, share links — identical field set. Store once, query everything.
- 🎯 Sort-mode control.
ALL,NEWEST, orMOST_RELEVANT— mapped to Facebook's own Comet intents so ordering matches the UI. - ⚡ No browser overhead. Loads the desktop story page, extracts Comet tokens, calls the comment API directly. Fast and cheap compared to a headless-browser scraper.
- 💰 Just $0.50 / 1,000 comments. Pay only for the rows you keep. No subscription, no monthly minimum.
🎯 Use cases
| Audience | What they do with it |
|---|---|
| Social listening / brand teams | Track sentiment + complaints under brand posts and competitor pages |
| Moderation pipelines | Pull comment streams into a toxicity / spam classifier |
| Researchers & data teams | Build labelled comment datasets for NLP / discourse analysis |
| Agencies & marketers | Measure engagement quality (not just counts) on campaign posts |
| Creators | Export comment threads from Reels / Watch for community analysis |
📥 Supported inputs
The actor loads each URL as a desktop story page, extracts Comet tokens + the story feedback target, then runs the same GraphQL comment pagination for every type below. Public content + a working residential proxy are required (block/login pages fail for any format).
| Content type | Example URL |
|---|---|
| Page posts | https://www.facebook.com/humansofnewyork/posts/pfbid0Bb… |
| Numeric page posts | https://www.facebook.com/584256070497766/posts/890521929871177 |
| Reels | https://www.facebook.com/reel/813381761171953 |
| Watch videos | https://www.facebook.com/watch?v=1312736054237897 |
| Photos | https://www.facebook.com/photo?fbid=1465799148444403 |
| Photo albums | https://www.facebook.com/photo/?fbid=123&set=a.456 |
| Photo (legacy path) | https://www.facebook.com/photo.php?fbid=1423151982709120 |
| Group posts | https://www.facebook.com/groups/183774529022936/posts/123… |
| Group posts (permalink) | https://www.facebook.com/groups/…/permalink/2090871251646578/ |
| Permalink posts | https://www.facebook.com/permalink.php?story_fbid=123 |
| Share links | https://www.facebook.com/share/p/1CfaPmdZLU |
watch?v=… and watch/?v=… are both accepted. For pfbid, group, permalink.php, and share URLs, the numeric story id is resolved from the loaded page HTML when the URL isn't already in /{pageId}/posts/{postId} shape.
Not supported: private/friends-only content, login-walled posts, Stories (24h), Marketplace listings, and anything requiring authentication.
- Load the story page. Fetch the desktop HTML for each input URL through a residential proxy.
- Extract Comet tokens. Parse the page for the GraphQL
doc_id, the storyfeedbackid, and the request tokens Facebook's own front-end uses. - Paginate comments. Call
CommentsListComponentsPaginationQuerywith yourcommentsModeintent, walking cursor pages untilmaxItemsis reached or the thread ends. - Expand replies (optional). When
includeNestedCommentsis on, fan each top-level comment out into its reply thread and emit each reply as its own row with parent linkage. - Emit flat rows. One JSON object per comment to your Apify dataset — export as JSON, CSV, or Excel.
🔧 Input configuration
| Field | Type | Default | Notes |
|---|---|---|---|
startUrls | array | — (required) | { "url": "…" } objects. Each URL = one story to scrape comments for. |
maxItems | integer | 60 | Max comment rows per start URL (not global). |
commentsMode | string | ALL | ALL | NEWEST | MOST_RELEVANT — Facebook's comment sort/filter intent. |
includeNestedComments | boolean | false | When true, emits reply rows with parent linkage. false = top-level only (faster). |
maxConcurrency | integer | 2 | Parallel requests. Keep low (1–3) for Facebook. |
minConcurrency | integer | 1 | Floor for the autoscaled pool. |
maxRequestRetries | integer | 3 | Retries per failed request before giving up. |
proxy | object | Apify Residential | Residential strongly recommended — datacenter IPs are usually blocked. |
Example input
{"startUrls": [{ "url": "https://www.facebook.com/humansofnewyork/posts/pfbid0BbKbkisExKGSKuhee9a7i86RwRuMKFC8NSkKStB7CsM3uXJuAAfZLrkcJMXxhH4Yl" },{ "url": "https://www.facebook.com/reel/4364570517119853" },{ "url": "https://www.facebook.com/watch?v=1312736054237897" },{ "url": "https://www.facebook.com/photo?fbid=1485098743181110" }],"maxItems": 60,"commentsMode": "ALL","includeNestedComments": true,"maxConcurrency": 2,"proxy": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"] }}
📊 Output overview
One flat JSON object per comment (and one per reply when nested mode is on). The same field set is used for every supported URL type — only values differ (e.g. commentUrl shape, or facebookId being a story id vs a photo fbid). Optional fields (likesCount, profileUrl, parentComment, …) appear only when Facebook's GraphQL payload includes them.
Sample comment row
{"facebookUrl": "https://www.facebook.com/photo/?fbid=1489500156068574&set=a.800788574939739","commentUrl": "https://www.facebook.com/photo/?fbid=1489500156068574&set=a.800788574939739&comment_id=930672569337014","commentId": "930672569337014","id": "Y29tbWVudDoxNDg5NTAwMzYyNzM1MjIwXzkzMDY3MjU2OTMzNzAxNA==","text": "Watching a match without a ticket is not a crime. No laws cover it...","date": "2026-03-13T20:25:06.000Z","profileId": "pfbid02GSbxMEz86kbVK11uFfAzmTwENwvsVpGiAQqvMKhdcEBh8ifMRokRhEEtDsLLUQqHl","profileName": "Rupesh R. S.","profileUrl": "https://www.facebook.com/rupesh.r.shambharkar","profilePicture": "https://scontent.fptp3-1.fna.fbcdn.net/…","likesCount": "6","commentsCount": 3,"threadingDepth": 0,"comments": [],"facebookId": "1489500362735220","feedbackId": "ZmVlZGJhY2s6MTQ4OTUwMDM2MjczNTIyMF85MzA2NzI1NjkzMzcwMTQ=","postTitle": "","pageAdLibrary": { "is_business_page_active": false, "id": "0" },"inputUrl": "https://www.facebook.com/photo/?fbid=1489500156068574&set=a.800788574939739"}
Reply rows add replyToCommentId, parentComment ({ id, author }), parentReply, and threadingDepth: 1|2.
Key output fields
| Group | Fields |
|---|---|
| Comment body | text, date (ISO 8601 UTC), commentId (legacy id), id (GraphQL relay id) |
| Links | commentUrl (direct permalink), facebookUrl (story permalink), inputUrl (your exact input) |
| Author | profileName, profileId (pfbid…/numeric), profileUrl, profilePicture |
| Engagement | likesCount ("6", "1.3K"…), commentsCount (reply count) |
| Threading | threadingDepth (0 = top-level), replyToCommentId, parentComment, parentReply |
| Story context | facebookId (story id), feedbackId, postTitle, pageAdLibrary |
💰 Pricing
Pay-per-result, $0.50 per 1,000 comments ($0.0005/row + a small per-run start fee) — among the cheapest Facebook comment scrapers on the Apify Store. You pay only for the comment rows emitted to your dataset — reply rows count as rows when nested mode is on. No subscription, no monthly minimum.
| Run | Approx cost |
|---|---|
| 1 post, 100 comments | ~$0.05 |
| 10 posts, 500 comments each | ~$2.50 |
| 1 Reel, 2,000 comments + replies | ~$1.00 |
❓ FAQ
Does it need my Facebook login or cookies? No. It only reads public comments via Facebook's own front-end GraphQL. No authentication.
Will it get private or friends-only comments? No. Only public content is reachable. Login-walled or restricted posts will fail.
Why do I need a residential proxy? Facebook blocks datacenter IPs aggressively. Residential proxies (Apify Residential or your own) are required for reliable runs.
Is maxItems global or per URL?
Per URL. Each start URL collects up to maxItems comments independently.
How do I get replies, not just top-level comments?
Set includeNestedComments: true. Each reply becomes its own row with parentComment / replyToCommentId linkage and threadingDepth ≥ 1.
Is the output the same for Reels, Watch, photos, and posts? Yes — identical schema. Only values differ (URL shapes, story ids). Store once, query everything.
What's the difference between commentId and id?
commentId is the legacy numeric id used in comment_id= permalinks; id is the opaque GraphQL relay token. Both are always present in real runs.
Can it handle share links and pfbid URLs?
Yes. The numeric story id is resolved from the loaded page HTML when the URL isn't already in /{page}/posts/{id} form.
💬 Support
Found a bug or need a field that isn't surfaced? Open an issue on the actor's Apify Console page, or email muhamed.didovic@gmail.com — same-day turnaround on data issues.
🛠 Additional services
- Need a custom output shape or extra fields? Email muhamed.didovic@gmail.com.
- Need Facebook posts, pages, groups, ads, or marketplace data? Ask — there's a sibling actor for most Facebook surfaces.
- Need API access (no Apify fee, usage-only)? Get in touch.
🔎 Explore more scrapers
See the full catalog at memo23's Apify profile — Facebook posts/pages/groups/ads, VRBO vacation rentals, Expedia/Hotels.com reviews, ImmoScout24, LoopNet, Stepstone, Naukri, and more.
⚠️ Disclaimer
This Actor accesses publicly available comments on Facebook for legitimate research, social-listening, moderation, and business-analysis purposes. Use of this Actor must comply with Facebook's (Meta Platforms, Inc.) Terms of Service and all applicable laws, including data-protection regulations (GDPR, CCPA, etc.). This Actor is not affiliated with, endorsed by, or sponsored by Facebook or Meta Platforms, Inc. All Facebook and Meta trademarks are the property of their respective owners and are used here solely for descriptive purposes. Users must:
- Respect rate limits and avoid overloading Facebook's infrastructure
- Not use scraped data to violate user privacy or Facebook's terms
- Comply with applicable laws in their jurisdiction
- Not republish scraped content in violation of copyright
We do not store any scraped data; the Actor returns it directly to your Apify dataset for your authorized use.
SEO Keywords
facebook comments scraper, facebook comment scraper, scrape facebook comments, facebook post comments scraper, facebook reel comments scraper, facebook watch comments, facebook photo comments scraper, facebook group comments scraper, facebook comments api, facebook comments export, facebook nested replies scraper, facebook comment replies, social listening facebook, facebook sentiment data, facebook moderation data, facebook comments csv, facebook comments json, no-login facebook scraper, facebook graphql comments, apify facebook scraper, facebook engagement data, facebook public comments extraction