Facebook Comments Scraper - Posts & Pages avatar

Facebook Comments Scraper - Posts & Pages

Pricing

from $0.65 / 1,000 results

Go to Apify Store
Facebook Comments Scraper - Posts & Pages

Facebook Comments Scraper - Posts & Pages

Scrape Facebook comments from any public post or page. No login needed. Get comment text, author, date, reactions, reply count. Also extracts post info: text, reactions, shares. Pure HTTP.

Pricing

from $0.65 / 1,000 results

Rating

0.0

(0)

Developer

deusex machine

deusex machine

Maintained by Community

Actor stats

0

Bookmarked

28

Total users

10

Monthly active users

7 days ago

Last modified

Share

Facebook Comments Scraper — Extract Comments, Reactions, Replies & Profile Data from Public Facebook Posts

Useful? Leave a review — it takes 10 seconds and is the single biggest thing that helps other social-media researchers find this Facebook comments scraper.

A fast, reliable Facebook comments scraper that pulls comments, author names, profile pictures, reaction counts, reply counts, posting dates and direct comment URLs from any public Facebook post. Works with regular posts, photos, videos, reels and page updates. No Facebook account, no Graph API token, no developer app required — just clean JSON or CSV data. Built for social-media analysts, brand monitoring teams, sentiment researchers, moderators, customer-support teams, academic researchers and anyone doing Facebook sentiment analysis at scale.

✨ Why use this scraper

Given a list of public Facebook post URLs and an optional comment cap, this scraper visits each post, switches the comment sort order from Facebook's default "Most relevant" to "All comments" so nothing is hidden, infinitely scrolls the comment thread until the target count is reached, and returns structured records for every top-level comment it finds. You also get (optionally) a summary record for each post with total reaction count, share count and total comment count.

Every run pulls fresh data — Facebook reactions and replies accumulate over time, so the scraper hits the live page each time. Export the dataset as JSON, CSV, Excel, or XML directly from the Apify console or via the Apify API.

Most Facebook comment scrapers on scraper marketplaces fall into one of three traps: they use the official Graph API (which won't return public comments without explicit page-admin authorization), they rely on fragile DOM selectors that break weekly, or they silently skip comments loaded via infinite scroll. This scraper uses a purpose-built browser backend with scroll automation, sort-order switching and rate-limit-aware request pacing — designed specifically for public Facebook content in 2026's DOM.

📤 Output fields

Comment content

FieldTypeDescription
textstringThe full comment text
datestringWhen it was posted (ISO 8601, computed from Facebook's relative time)
timeAgostringFacebook's relative timestamp label ("2 años", "16 semanas", etc.)
commentUrlstringDirect link to the individual comment
postUrlstringThe parent post URL
recordTypestringAlways "comment" for comment records

Author profile

FieldTypeDescription
authorNamestringCommenter's display name
authorUrlstringCommenter's Facebook profile or page URL
authorPicturestringCommenter's profile picture URL (when available)

Engagement

FieldTypeDescription
likesCountnumberCombined reaction count on the comment (like + love + haha + wow + sad + angry)
repliesCountnumberNumber of replies this comment received

Post metadata (when includePostInfo is true)

FieldTypeDescription
pageNamestringName of the Facebook page that published the post
reactionsstringTotal reactions on the parent post (human-readable, e.g. "3,2 mil")
sharesstringTotal shares
totalCommentsstringTotal comment count Facebook reports
recordTypestring"post" for post-metadata records

🎯 Use cases

  • Brand sentiment analysis — pull hundreds of comments from product-launch posts and feed them into a sentiment classifier to track how your campaign actually landed.
  • Social listening and crisis monitoring — watch your brand's official page for sudden spikes in negative sentiment or reply volume.
  • Customer support triage — export comments from support-related posts into Zendesk, Freshdesk or your ticketing system for follow-up.
  • Influencer campaign measurement — pull all comments on sponsored posts to compute engagement rate and detect comment farms.
  • Academic research — reproducible datasets for studies on polarization, moderation, hate speech or political discourse on Facebook.
  • Competitive intelligence — monitor comments on your competitors' posts to understand their customers' pain points.
  • Moderation tooling — extract flagged comments and feed them into a moderation pipeline for review.
  • Market research and product discovery — comments on ads and product posts surface unmet needs, feature requests and common objections.

🚀 How to use

Scrape comments from a single post

{
"urls": ["https://www.facebook.com/CocaCola/posts/pfbid02zmKjSC..."],
"maxComments": 200
}

Scrape comments from multiple posts in one run

{
"urls": [
"https://www.facebook.com/nike/posts/...",
"https://www.facebook.com/walmart/posts/...",
"https://www.facebook.com/target/posts/..."
],
"maxComments": 100
}

Get every available comment (unlimited mode)

{
"urls": ["https://www.facebook.com/MrBeast/posts/..."],
"maxComments": 0
}

Setting maxComments to 0 tells the scraper to scroll until Facebook stops returning new comments. Use this for completeness, but be aware that viral posts with tens of thousands of comments can take 10+ minutes.

Scrape comments without post metadata

{
"urls": ["https://www.facebook.com/Netflix/posts/..."],
"maxComments": 150,
"includePostInfo": false
}

📥 Input

ParameterTypeDefaultDescription
urlsarrayFacebook post URLs (required). Works with posts, photos, videos, reels
maxCommentsinteger100Comments per post. 0 = collect everything available
includePostInfobooleantrueAlso return a summary record with page name, reaction count, shares and total comments

📞 Support

This Facebook scraper works with every public post format on Facebook:

  • https://www.facebook.com/PageName/posts/pfbid... — standard post
  • https://www.facebook.com/photo/?fbid=... — photo post
  • https://www.facebook.com/watch?v=... — video post
  • https://www.facebook.com/reel/... — reel
  • https://www.facebook.com/story.php?story_fbid=... — legacy story permalink
  • https://m.facebook.com/... — mobile URL (auto-normalized)

📋 Output example

Comment record

{
"postUrl": "https://www.facebook.com/Coca-Cola/posts/pfbid02zmKjSC...",
"commentUrl": "https://www.facebook.com/people/Alessio-Zagami/100036310122448/?comment_id=Y29t...",
"text": "Great drink, drink in moderation",
"date": "2024-03-29T23:48:22.020Z",
"timeAgo": "2 años",
"authorName": "Alessio Zagami",
"authorUrl": "https://www.facebook.com/people/Alessio-Zagami/100036310122448/",
"authorPicture": "https://scontent-fra3-2.xx.fbcdn.net/v/t39.30808-1/297656494_...",
"likesCount": 26,
"repliesCount": 19,
"recordType": "comment"
}

Post summary record

{
"postUrl": "https://www.facebook.com/Coca-Cola/posts/pfbid02zmKjSC...",
"pageName": "Coca-Cola",
"reactions": "3,2 mil",
"shares": "540",
"totalComments": "2,6 mil",
"recordType": "post"
}

Export the full dataset as CSV directly from the Apify console, or programmatically via the Apify API.

💻 Code examples

From the Apify API (curl)

curl -X POST 'https://api.apify.com/v2/acts/makework36~facebook-comments-scraper/run-sync-get-dataset-items?token=YOUR_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"urls": ["https://www.facebook.com/CocaCola/posts/pfbid02zmKjSC..."],
"maxComments": 200,
"includePostInfo": true
}'

From Python (apify-client)

from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("makework36/facebook-comments-scraper").call(run_input={
"urls": [
"https://www.facebook.com/nike/posts/...",
"https://www.facebook.com/adidas/posts/...",
],
"maxComments": 150,
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
if item.get("recordType") == "comment":
print(item["authorName"], "→", item["text"][:80], "|", item["likesCount"])

From Node.js (apify-client)

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });
const run = await client.actor('makework36/facebook-comments-scraper').call({
urls: ['https://www.facebook.com/Netflix/posts/...'],
maxComments: 300,
includePostInfo: true,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
const comments = items.filter((i) => i.recordType === 'comment');
console.table(comments.map((c) => ({
author: c.authorName,
likes: c.likesCount,
replies: c.repliesCount,
text: c.text.slice(0, 60),
})));

Export to CSV

From the console run page → ExportCSV. Or via API:

https://api.apify.com/v2/datasets/DATASET_ID/items?format=csv&token=YOUR_TOKEN

⚡ Performance

  • ~30 seconds to scrape the first 100 comments on a public post
  • Viral posts (5,000+ comments) may take 5–15 minutes due to Facebook's infinite scroll throttling
  • Automatic sort switch from Most relevant to All comments so the scraper sees the long tail, not only Facebook's curated selection
  • Runs on browser-capable compute (1 GB recommended)

📊 Comparison

There are several Facebook comment extraction tools out there. Here's how ours stacks up.

FeatureThis scraperGraph API–based scraperScraper with residential proxyGeneric "social scraper"
Fields per comment10 (incl. profile picture, comment URL)4–66–84–6
Needs FB login / app credentialsNoYes (page admin)NoNo
Works on any public postYesOnly your own pagesYesPartial
Infinite-scroll paginationYesN/APartialNo (first page only)
Sort switch to "All comments"YesN/ANoNo
Post-level metadata (reactions/shares)Yes (via includePostInfo)PartialNoNo
Supports photos / videos / reelsYesNoPartialPartial
Typical cost per 1K comments~$0.45Free (but rate-limited)$1–$2$0.70–$1.50
ReliabilityHigh (maintained weekly)Depends on FB app reviewMediumLow

The honest take: if you already have a Facebook page and admin credentials, the official Graph API is "free" but hamstrung by permission reviews and only works on pages you control. For scraping comments on any public Facebook post — competitor pages, influencer content, news outlets — this scraper is purpose-built.

💵 Pricing

Pay-per-result model:

  • $0.45 per 1,000 Facebook comments extracted
  • Apify gives every new user a $5 free trial → roughly 11,000 comments to evaluate the scraper
  • No subscription, no minimum

❓ FAQ

Do I need a Facebook account or developer app?

No. This Facebook comments scraper reads publicly available post pages — the same view any browser-less visitor would see. There's no login, no OAuth, no Graph API app review.

This actor reads only publicly visible content. Facebook's Terms of Service restrict automated access; most jurisdictions treat public-page scraping as permissible for research and journalism, but commercial use may carry additional obligations under GDPR (if you collect EU users' personal data). Consult legal counsel for your specific use case.

Does it extract replies to comments as well?

Only top-level comments are extracted in v1. The repliesCount field tells you how many replies each comment has. Full reply-tree extraction is on the roadmap — leave a review requesting it to bump priority.

Are the reaction counts split by emoji type?

No — likesCount aggregates all reaction types (👍 ❤️ 😂 😮 😢 😡). Facebook's per-emoji breakdown isn't available at comment level in the public DOM.

Why are the counts ("3,2 mil") returned as strings?

Facebook localizes and shortens large numbers ("3.2K", "3,2 mil", "1.2M"). Parsing these into raw integers loses information (e.g. "3.2K" could be 3150 or 3249). The scraper returns Facebook's label verbatim so you can parse it in your own locale-aware way.

Does it follow paginated comment threads on older posts?

Yes. The scraper scrolls the comment panel until either maxComments is hit or Facebook stops returning new items.

Can I scrape comments from Facebook groups?

Only public groups where the post is visible without joining. Private or closed groups will not return results.

Yes. The underlying browser backend dismisses the cookie and consent dialogs before extracting comments.

Can I scrape comments with specific keywords only?

Not at input level — the scraper returns all comments, and you filter in your downstream pipeline. This is more flexible (and more cost-efficient) than server-side filtering.

📝 Changelog

  • v1.1 (2026-04-22) — Full SEO rewrite, added Python / Node / curl examples, anonymized comparison table, categorized field list, advanced usage patterns.
  • v1.0 (2026-03-05) — Initial release with multi-URL input, post-summary record, profile picture extraction and sort-switch to "All comments".