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

10

Total users

5

Monthly active users

a day 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.

What this Facebook comments scraper does

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.

Why choose this Facebook comments scraper

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.

Data fields the Facebook comments scraper extracts

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 for this Facebook comments data API

  • 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 this Facebook comments scraper

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 parameters

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

Supported URL patterns

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 (JSON)

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.

How to call this Facebook comments scraper from your code

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 & cost

  • ~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)

Facebook comments scraper comparison — how this compares to other options

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.

Step-by-step tutorial — your first Facebook comments scrape in 3 minutes

  1. Sign up for Apify — go to apify.com and create a free account. You'll get a $5 trial credit.
  2. Open this actor — click Facebook Comments ScraperTry for free.
  3. Find a Facebook post URL — navigate to any public Facebook page, find a post, click on the post's timestamp to open its permalink, and copy the URL from your browser.
  4. Paste the URL into the input form — set maxComments to 100 for a first run.
  5. Click "Start" — the actor runs. A 100-comment run finishes in ~30 seconds.
  6. View the dataset — click the Dataset tab → export JSON or CSV.
  7. Automate it — add a Schedule to re-run daily and track comment growth on your brand's latest post.

That's it — no Facebook account, no app review, no dev token.

Advanced usage patterns

Pattern 1 — daily brand-sentiment snapshot

Pick 5–10 of your most recent posts, scrape their comments daily, and append timestamped comment records into Postgres. Join against a sentiment-scoring model and you'll have a day-by-day sentiment graph per post.

Pattern 2 — competitor comment mining for product feedback

Identify competitors' posts where they announce new products. Scrape every comment. Filter by keywords like "wish", "should have", "doesn't work", "better if" to surface unmet needs straight from their customers' mouths.

Pattern 3 — influencer campaign auditing

When paying an influencer, scrape comments on the sponsored post 48 hours after publication. Count comments where likesCount seems disproportionate (single-digit word comments with unusually high likes) — a common signal of comment-farming.

Pattern 4 — comment farm detection

Cluster comments by authorName across multiple competitor pages. If the same authors show up commenting on every post within 60 seconds of publication, you have evidence of coordinated inauthentic behavior.

Pattern 5 — crisis monitoring dashboard

Pair this scraper with a Slack webhook. On any run, if totalComments increases by more than 200% versus the previous 24 hours, send an alert. Great early-warning for viral-negative moments.

Troubleshooting

Empty dataset — no comments returned

  • Double-check the URL is a public post. If you can't view it in an incognito window, the scraper can't either.
  • Posts with 0 comments will naturally return an empty comment list (the post summary record will still appear if includePostInfo: true).
  • Some older page posts have been archived by Facebook; the permalink redirects to the page's main feed instead of the post.

Comments cut off before maxComments is reached

Facebook sometimes stops returning new comments mid-scroll, especially on posts older than 6 months. The scraper respects this and exits the scroll loop gracefully. Consider it a "best effort" for archival content.

Some authorPicture fields are empty

Facebook sends profile pictures for the first ~10 commenters in the initial server-rendered DOM. Commenters loaded via infinite scroll may get placeholder or empty picture URLs. This is a Facebook rendering optimization, not a scraper bug.

date looks like "2 años ago" instead of ISO

Facebook renders relative timestamps in the page's locale. The scraper converts this to ISO 8601 best-effort, but for very old posts the conversion is approximate (± a few days). The raw timeAgo field gives you the original label if you need exact fidelity.

Post behind login wall

Posts on private profiles, closed groups, or posts with restricted audiences (country-gated) won't return results — no scraper can bypass Facebook's access controls on these. Stick to public pages.

Infinite loop or timeout

If a post has 100,000+ comments, set maxComments to a finite number like 5000 to cap the run. The scraper's per-run timeout is 10 minutes; beyond that the run will be terminated automatically.

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".

This Facebook comments scraper accesses only publicly visible content on facebook.com. It does not bypass login, paywalls or content restrictions. Comments contain personal data — under GDPR and similar regimes, you are the data controller once you export this dataset. Minimize retention, don't republish identifying information without consent, and consider pseudonymization for analytical workflows. Don't use this data for harassment, doxxing, or building facial-recognition datasets from profile pictures.


🙏 Ran this Facebook comments scraper successfully? Leaving a review helps the algorithm surface this to other analysts. Much appreciated.