Facebook Comments [$1.5💰] Scraper avatar

Facebook Comments [$1.5💰] Scraper

Pricing

from $0.49 / 1,000 results

Go to Apify Store
Facebook Comments [$1.5💰] Scraper

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

Muhamed Didovic

Maintained by Community

Actor stats

2

Bookmarked

42

Total users

7

Monthly active users

5.9 hours

Issues response

13 hours ago

Last modified

Share

Facebook Comments Scraper

⚙️ How it works

How the Facebook Comments Scraper 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 thisGet 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: trueEach 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 maxItems cap — so you get the whole thread, not the 10 comments visible on first load.
  • 🧵 Nested replies as first-class rows. Toggle includeNestedComments to materialize every reply with parentComment, parentReply, replyToCommentId, and threadingDepth (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, or MOST_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

AudienceWhat they do with it
Social listening / brand teamsTrack sentiment + complaints under brand posts and competitor pages
Moderation pipelinesPull comment streams into a toxicity / spam classifier
Researchers & data teamsBuild labelled comment datasets for NLP / discourse analysis
Agencies & marketersMeasure engagement quality (not just counts) on campaign posts
CreatorsExport 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 typeExample URL
Page postshttps://www.facebook.com/humansofnewyork/posts/pfbid0Bb…
Numeric page postshttps://www.facebook.com/584256070497766/posts/890521929871177
Reelshttps://www.facebook.com/reel/813381761171953
Watch videoshttps://www.facebook.com/watch?v=1312736054237897
Photoshttps://www.facebook.com/photo?fbid=1465799148444403
Photo albumshttps://www.facebook.com/photo/?fbid=123&set=a.456
Photo (legacy path)https://www.facebook.com/photo.php?fbid=1423151982709120
Group postshttps://www.facebook.com/groups/183774529022936/posts/123…
Group posts (permalink)https://www.facebook.com/groups/…/permalink/2090871251646578/
Permalink postshttps://www.facebook.com/permalink.php?story_fbid=123
Share linkshttps://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.


  1. Load the story page. Fetch the desktop HTML for each input URL through a residential proxy.
  2. Extract Comet tokens. Parse the page for the GraphQL doc_id, the story feedback id, and the request tokens Facebook's own front-end uses.
  3. Paginate comments. Call CommentsListComponentsPaginationQuery with your commentsMode intent, walking cursor pages until maxItems is reached or the thread ends.
  4. Expand replies (optional). When includeNestedComments is on, fan each top-level comment out into its reply thread and emit each reply as its own row with parent linkage.
  5. Emit flat rows. One JSON object per comment to your Apify dataset — export as JSON, CSV, or Excel.

🔧 Input configuration

FieldTypeDefaultNotes
startUrlsarray(required){ "url": "…" } objects. Each URL = one story to scrape comments for.
maxItemsinteger60Max comment rows per start URL (not global).
commentsModestringALLALL | NEWEST | MOST_RELEVANT — Facebook's comment sort/filter intent.
includeNestedCommentsbooleanfalseWhen true, emits reply rows with parent linkage. false = top-level only (faster).
maxConcurrencyinteger2Parallel requests. Keep low (1–3) for Facebook.
minConcurrencyinteger1Floor for the autoscaled pool.
maxRequestRetriesinteger3Retries per failed request before giving up.
proxyobjectApify ResidentialResidential 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

GroupFields
Comment bodytext, date (ISO 8601 UTC), commentId (legacy id), id (GraphQL relay id)
LinkscommentUrl (direct permalink), facebookUrl (story permalink), inputUrl (your exact input)
AuthorprofileName, profileId (pfbid…/numeric), profileUrl, profilePicture
EngagementlikesCount ("6", "1.3K"…), commentsCount (reply count)
ThreadingthreadingDepth (0 = top-level), replyToCommentId, parentComment, parentReply
Story contextfacebookId (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.

RunApprox 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