Facebook Group Scraper - Posts, Comments & Reactions avatar

Facebook Group Scraper - Posts, Comments & Reactions

Pricing

from $5.00 / 1,000 post scrapeds

Go to Apify Store
Facebook Group Scraper - Posts, Comments & Reactions

Facebook Group Scraper - Posts, Comments & Reactions

Scrape posts from public & private Facebook groups. Extract post text, author info, reactions, comments, shares, images, videos, and group metadata. Cookie auth for private groups. Clean JSON/CSV output. No API key needed.

Pricing

from $5.00 / 1,000 post scrapeds

Rating

5.0

(1)

Developer

Anas Nadeem

Anas Nadeem

Maintained by Community

Actor stats

5

Bookmarked

94

Total users

42

Monthly active users

14 days ago

Last modified

Share

Facebook Group & Page Scraper – Posts, Comments, Reactions & Metadata to JSON / CSV / Excel

Scrape Facebook posts from any Facebook group OR Facebook Page in one actor. Pull post text, top comments, full reaction breakdown, images, videos, author profile data, and entity metadata (member count for groups, follower count + verified status for Pages). Export to JSON, CSV, Excel, or XML. Mix groups and Pages in a single run, scrape public AND private groups (with cookies), and stream results live so nothing is lost on timeout.

Best Apify scraper for Facebook posts — covers groups, brand Pages, business Pages, creator Pages, fan Pages, and community Pages from a single input. Built for lead generation, competitor analysis, brand monitoring, content research, ad creative research, market research, sentiment analysis, AI/ML dataset creation, and influencer tracking.

Table of contents


What is the Facebook Group & Page Scraper?

This is an all-in-one Facebook scraper that extracts posts, comments, reactions, and metadata from both Facebook groups and Facebook Pages. Most Apify Facebook scrapers handle only one surface — groups OR Pages. This actor handles both from the same input array, so you don't need to wire up two separate runs, two separate datasets, or two separate billing meters.

It's designed for users who are doing social listening, competitor research, lead generation, content audits, influencer measurement, and AI training-data collection at scale. Whether you're tracking a single competitor brand Page, harvesting leads from 200 niche industry groups, archiving your own Page's history, or building a sentiment dataset across thousands of community discussions — this actor handles it.

Key things it does that competitors don't:

  • Scrapes groups AND Pages from the same input — no separate actors.
  • Returns the full 6-reaction breakdown (like, love, haha, wow, sad, angry) — most competitors return only the total or just like + love.
  • Extracts top comments with author names, profile URLs, and like counts — not just comment counts.
  • Captures Page-specific signals: follower count, like count, page category, verified blue tick, cover photo.
  • Captures group-specific signals: member count, privacy mode, admins, rules, description.
  • Cookie-based authentication for private/closed groups you belong to.
  • Streaming output — partial results are pushed to the dataset as they're scraped, so a timeout or crash never wipes your run.
  • Memory-efficient infinite scroll — runs a cleanup pass every 20 iterations, so it can handle Pages with 50K+ posts without OOMing.
  • Three fallback layers: GraphQL response capture → DOM extraction → mbasic.facebook.com → m.facebook.com → raw HTTP fetch. If one path is blocked, the next one usually works.

What Facebook data can I extract?

Per post (groups AND Pages)

FieldDescription
postIdFacebook's numeric post ID (10+ digits)
postUrlCanonical permalink to the post
textFull post body (un-truncated, with line breaks preserved)
postTypetext, photo, video, link, event, shared, or unknown
timestampISO 8601 timestamp (e.g. 2026-03-28T14:30:00.000Z)
formattedDateHuman-readable relative date as shown on Facebook (2h, Yesterday, …)
authorNamePost author display name
authorProfileUrlProfile URL of the author
authorIdAuthor numeric ID where available
likesCount👍 count
lovesCount❤️ count
hahaCount😆 count
wowCount😮 count
sadCount😢 count
angryCount😡 count
totalReactionsSum across all six reaction types
commentsCountTotal comments on the post
sharesCountTotal shares
imagesArray of full-resolution image URLs (CDN links)
videosArray of video URLs
topCommentsArray of { authorName, authorProfileUrl, text, timestamp, likesCount }
sourcefacebook_group or facebook_page
groupNameGroup name OR Page name (depending on source)
groupUrlGroup URL OR Page URL (depending on source)
pageNamePage name (Page-source posts only)
pageUrlPage URL (Page-source posts only)
scrapeDateWhen this row was extracted

Per group (when includeGroupInfo: true)

FieldDescription
entityTypegroup
groupIdNumeric group ID
groupNameGroup display name
groupUrlCanonical group URL
memberCountTotal members
privacypublic, private, or unknown
descriptionGroup description / about text
categoryGroup category
adminsArray of admin display names
rulesArray of group rules
coverPhotoUrlCover photo URL
createdDateWhen the group was created

Stored in the key-value store under group-info.

Per Page (when includeGroupInfo: true)

FieldDescription
entityTypepage
pageIdPage slug or numeric ID
pageNamePage display name
pageUrlCanonical Page URL
followerCountTotal followers
likeCountTotal Page likes
pageCategoryPage category as displayed by Facebook
verifiedtrue if the Page has the blue verification tick
descriptionPage about / bio
coverPhotoUrlCover photo URL

Stored in the key-value store under page-info.

Why use this Facebook scraper over alternatives?

FeatureApify Facebook Posts ScraperApify Facebook Groups ScraperBright DataPhantombusterThis actor
Scrape Facebook groups
Scrape Facebook Pages
Groups + Pages in one input array
Full 6-reaction breakdownPartialPartialPartial
Top comments with author + profile + likes❌ (counts only)❌ (counts only)
Member / follower / like countsPartialMembers onlyAll three
Verified blue-tick flag for Pages
Group privacy + admins + rules
Cookie auth for private groupsLimitedPartial
Streaming output (crash recovery)
Memory-efficient infinite scroll (50K+ posts)BasicBasicBasic
Three fallback layers (DOM → mbasic → raw HTTP)
JSON / CSV / Excel / XML export
API + Make + Zapier + n8n integration
Approx. cost per 1,000 posts$2.00$2.60~$0.50~$2.00~$3.00

If price-per-post is your only metric, Bright Data is cheaper — but they have a $500 / month minimum. For sub-$100/month workloads, this actor delivers the most data per dollar and the deepest field coverage.

Quick start — scrape your first 100 posts

  1. Create a free Apify account.
  2. Open this actor in the Apify Store.
  3. Paste a Facebook group URL or a Facebook Page URL into startUrls.
  4. Click Save & Start.
  5. Wait ~2 minutes. Download the dataset as JSON, CSV, Excel, or XML.

You can do all of this from the API or Apify CLI too — see the Integrations section.

Input examples

Scrape a public Facebook group

{
"startUrls": [{ "url": "https://www.facebook.com/groups/1280379818654162" }],
"maxPosts": 100,
"includeComments": true,
"includeGroupInfo": true
}

Scrape a Facebook Page (brand, business, creator, fan)

{
"startUrls": [{ "url": "https://www.facebook.com/ohpollyfashion" }],
"maxPosts": 100,
"includeComments": true,
"includeGroupInfo": true
}

Scrape multiple groups + Pages in a single run

{
"startUrls": [
{ "url": "https://www.facebook.com/groups/webscrapingandautomation" },
{ "url": "https://www.facebook.com/groups/digitalmarketing" },
{ "url": "https://www.facebook.com/Nike" },
{ "url": "https://www.facebook.com/cocacola" },
{ "url": "https://www.facebook.com/MrBeast" }
],
"maxPosts": 50,
"includeComments": true,
"includeGroupInfo": true
}

Scrape a private / closed group (cookies required)

{
"startUrls": [{ "url": "https://www.facebook.com/groups/YOUR_PRIVATE_GROUP" }],
"maxPosts": 50,
"cookies": [
{ "name": "c_user", "value": "YOUR_C_USER_VALUE" },
{ "name": "xs", "value": "YOUR_XS_VALUE" }
]
}

Scrape only recent posts (date filter)

{
"startUrls": [{ "url": "https://www.facebook.com/Nike" }],
"maxPosts": 200,
"onlyPostsNewerThan": "2026-01-01"
}

Scrape with residential proxy (for blocked IPs)

{
"startUrls": [{ "url": "https://www.facebook.com/Nike" }],
"maxPosts": 100,
"proxyUrl": "http://groups-RESIDENTIAL:YOUR_APIFY_TOKEN@proxy.apify.com:8000"
}

Output schema — every field explained

Sample post — Facebook Page source

{
"postId": "1234567890",
"postUrl": "https://www.facebook.com/ohpollyfashion/posts/1234567890",
"groupName": "Oh Polly",
"groupUrl": "https://www.facebook.com/ohpollyfashion",
"pageName": "Oh Polly",
"pageUrl": "https://www.facebook.com/ohpollyfashion",
"authorName": "Oh Polly",
"authorProfileUrl": "https://www.facebook.com/ohpollyfashion",
"authorId": "100044215834928",
"text": "New collection drops Friday. Tap for the lookbook.",
"postType": "photo",
"timestamp": "2026-03-28T14:30:00.000Z",
"formattedDate": "2h",
"likesCount": 980,
"lovesCount": 220,
"hahaCount": 12,
"wowCount": 18,
"sadCount": 2,
"angryCount": 0,
"totalReactions": 1232,
"commentsCount": 56,
"sharesCount": 12,
"images": [
"https://scontent.fbcdn.net/.../dress_1.jpg",
"https://scontent.fbcdn.net/.../dress_2.jpg"
],
"videos": [],
"topComments": [
{
"authorName": "Jane Smith",
"authorProfileUrl": "https://www.facebook.com/janesmith",
"text": "Need this immediately!",
"timestamp": "2026-03-28T14:42:00.000Z",
"likesCount": 4
}
],
"source": "facebook_page",
"scrapeDate": "2026-03-28T16:00:00.000Z"
}

Sample post — Facebook group source

{
"postId": "9876543210",
"postUrl": "https://www.facebook.com/groups/123456/posts/9876543210",
"groupName": "Web Scraping & Automation",
"groupUrl": "https://www.facebook.com/groups/123456",
"authorName": "John Doe",
"authorProfileUrl": "https://www.facebook.com/johndoe",
"text": "Has anyone tried Playwright for Facebook? The stealth plugin is lifesaving.",
"postType": "text",
"timestamp": "2026-03-28T11:05:00.000Z",
"formattedDate": "5h",
"totalReactions": 42,
"likesCount": 36,
"lovesCount": 6,
"commentsCount": 15,
"sharesCount": 3,
"topComments": [
{ "authorName": "Jane Smith", "text": "Yes! Use stealth-evasions.", "likesCount": 8 }
],
"source": "facebook_group",
"scrapeDate": "2026-03-28T16:00:00.000Z"
}

Sample Page metadata (page-info in key-value store)

{
"entityType": "page",
"groupId": "ohpollyfashion",
"groupName": "Oh Polly",
"groupUrl": "https://www.facebook.com/ohpollyfashion",
"pageId": "ohpollyfashion",
"pageName": "Oh Polly",
"pageUrl": "https://www.facebook.com/ohpollyfashion",
"followerCount": 2500000,
"likeCount": 2300000,
"pageCategory": "Clothing brand",
"category": "Clothing brand",
"verified": true,
"description": "Premium occasionwear for every moment.",
"coverPhotoUrl": "https://scontent.fbcdn.net/.../cover.jpg"
}

Sample group metadata (group-info in key-value store)

{
"entityType": "group",
"groupId": "123456",
"groupName": "Web Scraping & Automation",
"groupUrl": "https://www.facebook.com/groups/123456",
"memberCount": 15234,
"privacy": "public",
"description": "A community for web scraping enthusiasts and automation engineers.",
"category": "Science & Technology",
"admins": ["Jane Doe", "John Smith"],
"rules": [
"Be respectful.",
"No spam or self-promotion without prior approval.",
"Keep posts on-topic."
],
"coverPhotoUrl": "https://scontent.fbcdn.net/.../cover.jpg"
}

Real-world use cases (with concrete outcomes)

Use caseWhat it doesTypical outcome
Lead generationScrape niche groups for hiring posts, "looking for", "anyone know a", "DM me" patterns500–2,500 qualified leads / day
Competitor brand monitoringTrack posting cadence, reactions, top comments, viral posts on rival Pages weeklyCompetitive content calendar in days, not weeks
Ad creative researchPull viral posts (high engagement-to-follower ratio) from creator/brand Pages to inspire ad angles4× faster creative ideation, higher ROAS
Influencer & creator auditMeasure reach, engagement, comment sentiment on creator Pages over timePre-deal data for influencer partnerships
Market & trend researchSample posts from category Pages (e.g. all major fashion Pages) to detect emerging trendsTrend signals 4–8 weeks before mainstream coverage
Customer feedback miningScrape your own Page's posts + top comments to surface complaints, feature requests, sentimentDirect VoC pipeline into your CRM
Community managementPull recent posts from groups you moderate to triage moderation queuesFaster moderation, fewer escalations
Content audit / migrationExport your own Page or group's full history to JSON/CSV for archive or migration to another platformFull archive in hours
AI / ML training dataBuild sentiment, NLP, or classifier datasets from public group + Page postsHigh-volume domain-specific text corpora
CRM enrichmentAugment lead records with social signals — engagement, post topics, recent activityHigher conversion rates
Marketplace arbitrageSource undervalued products surfaced in resale / buy-sell groupsDaily product opportunity feed
Brand mention trackingSearch-style scraping across community Pages and groups for unprompted brand mentionsEarlier discovery of PR risks and brand wins
Sentiment analysis pipelineFeed posts + top comments into a sentiment classifier to score brand health by week / segmentEarly-warning dashboard for brand teams

Pricing & cost comparison vs other Facebook scrapers

VolumeThis actorApify Facebook Posts ScraperApify Facebook Groups ScraperBright DataPhantombuster
1,000 posts~$3.00$2.00$2.60~$0.50¹~$2.00
10,000 posts~$30$20$26~$5¹~$20
Monthly minimumNoneNoneNone$500$69
Pages supportPages only
Groups supportGroups only via separate runLimited
Private group cookiesLimitedPartial
Top comments w/ authorPartialPartial
6-reaction breakdownPartialPartialPartial

¹ Bright Data's per-post rate looks lowest, but the $500/month minimum makes it 167× more expensive than this actor for anyone scraping under 167K posts/month. For sub-enterprise workloads this actor wins on total cost.

Apify platform compute is billed separately by Apify.

How to export Facebook cookies (for private groups)

  1. Open Facebook in your browser and log in to the account that's a member of the private group.
  2. Press F12 to open Developer Tools.
  3. Chrome: Application tab → Cookies → https://www.facebook.com. Firefox: Storage tab → Cookies → facebook.com.
  4. Copy the values of c_user (your Facebook user ID) and xs (your session secret).
  5. Paste them into the cookies field as shown in the private group example above.

Cookies typically last ~365 days, but Facebook can invalidate them after security events (password change, suspicious login, browser fingerprint change). If the actor starts hitting a login wall, re-export your cookies and re-run.

⚠️ Never share your cookies with anyone — c_user + xs together grant full access to your Facebook account.

Integrations

Apify CLI

$apify call your-username/facebook-group-scraper --input-file input.json

Apify API (REST)

curl -X POST "https://api.apify.com/v2/acts/your-username~facebook-group-scraper/runs?token=YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"startUrls": [{ "url": "https://www.facebook.com/Nike" }],
"maxPosts": 100
}'

Python SDK

from apify_client import ApifyClient
client = ApifyClient("YOUR_TOKEN")
run = client.actor("your-username/facebook-group-scraper").call(
run_input={
"startUrls": [
{"url": "https://www.facebook.com/groups/1280379818654162"},
{"url": "https://www.facebook.com/Nike"},
],
"maxPosts": 100,
"includeComments": True,
}
)
for post in client.dataset(run["defaultDatasetId"]).iterate_items():
print(post["postUrl"], post["totalReactions"])

Node.js SDK

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_TOKEN' });
const run = await client.actor('your-username/facebook-group-scraper').call({
startUrls: [{ url: 'https://www.facebook.com/Nike' }],
maxPosts: 100,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Make / n8n / Zapier

Apify integrates natively with Make (formerly Integromat), n8n, and Zapier. Trigger the actor on a schedule, pipe scraped posts into Google Sheets, Airtable, Slack, your CRM, or any database. Use the Apify webhook to fire downstream jobs on dataset completion.

Apify Schedules

Use Apify Schedules to run this actor every hour / day / week. Combine with onlyPostsNewerThan to capture only new content since the last run — great for monitoring dashboards.

Model Context Protocol (MCP)

This actor is callable from MCP-compatible AI agents (Claude, Cursor, custom LLM workflows) via Apify's MCP server. Your AI agent can scrape a Facebook Page and reason over the results in the same conversation.

FAQ

Can I scrape private Facebook groups?

Yes — provide your c_user and xs cookies in the cookies input field. You must already be a member of the group; this actor does not bypass Facebook's membership controls.

Can I scrape Facebook Pages and Facebook groups in the same run?

Yes — that's the whole point. Mix any number of group URLs and Page URLs in startUrls and they'll all flow into the same dataset. Each row is tagged with source: 'facebook_group' or source: 'facebook_page'.

Do I need a Facebook account?

For public groups and public Pages, no — but Facebook frequently shows login walls even on public content, especially from datacenter IPs. For best reliability, provide cookies. For private/closed groups, cookies are mandatory.

Does this actor handle Facebook's anti-bot measures?

Yes. It rotates user agents, randomizes viewports, injects anti-detection JavaScript (webdriver flag, plugins array, navigator overrides), randomizes navigation delays, dismisses login modal overlays, and falls back through three transport layers (DOM → mbasic.facebook.com → m.facebook.com → raw HTTP fetch) when blocked. Pair it with Apify Residential proxies for the highest success rate.

What export formats are supported?

JSON, CSV, Excel (XLSX), XML, HTML, RSS — anything Apify's dataset format supports. Export from the Apify UI, API, or by piping the dataset into another actor / your own pipeline.

How fast is it?

Roughly 20–40 posts per minute per concurrent browser, depending on group size, Page activity, network conditions, and proxy. Increase maxConcurrency (up to 5) if you have memory headroom and a strong proxy pool.

Can I schedule this scraper to run automatically?

Yes, via Apify Schedules. Set it to run hourly, daily, weekly, or any cron expression. Combine with onlyPostsNewerThan to incrementally pull only new posts on each run.

Is this actor compliant with Facebook's Terms of Service and GDPR?

This actor only accesses content that the entity (group or Page) has chosen to make visible to the requesting account. You are responsible for using the data lawfully. Don't republish personal data without consent. Don't use scraped data to harass, dox, or discriminate. For GDPR/CCPA compliance, treat scraped personal data as personal data — apply the same controls you'd apply to any first-party PII.

Why am I getting fewer posts than I asked for?

Common reasons: (1) the group / Page has fewer posts than maxPosts; (2) Facebook is rate-limiting your IP — add a residential proxy; (3) cookies expired — re-export them; (4) the entity is private and you supplied no cookies.

What's the difference between this actor and the official Facebook Graph API?

The Graph API requires a Facebook App, OAuth flows, app review for advanced permissions, and access tokens that often can't see public content from Pages you don't own. This actor is scraper-based — it sees what a logged-in (or logged-out) user would see in a browser, no app review or permissions dance required.

Does it scrape comments inside comments (replies)?

It scrapes top-level comments by default. Reply-level scraping is on the roadmap.

Can I scrape Facebook posts containing a specific keyword?

Use onlyPostsNewerThan plus maxPosts, then filter the dataset client-side for keyword matches — Apify's dataset query API and the Python/Node SDKs both support post-fetch filtering. Keyword filtering inside the actor is on the roadmap.

Why is my Page returning the wrong author for posts?

If you see the author as "2h" or some short timestamp string, that's a known issue in some scrapers where the post-permalink link gets misidentified as the author profile link. This actor explicitly excludes /posts/ and /permalink/ URLs from author detection, so it won't happen here. If you see this in your output, double-check you're on the latest version of the actor.

How do I get support?

Open an issue on the actor's Apify page, or email anas5678go@gmail.com — see Cheaper alternative — free Chrome extension below.

Tips for reliable, ban-free scraping

  1. Always provide cookies for serious workloads. Public ≠ accessible. Facebook gates most content behind login on datacenter IPs.
  2. Use Apify Residential proxies. Datacenter IPs get blocked aggressively. The proxyUrl field accepts any HTTP(S) proxy — Apify, BrightData, Oxylabs all work.
  3. Start with maxPosts: 10 to validate selectors and cookies before scaling up.
  4. Keep maxConcurrency ≤ 2. Higher values trigger Facebook's rate-limiter faster.
  5. Mix groups and Pages freely in one input array — the actor picks the right strategy per URL automatically.
  6. Pass the human-readable Page slug (facebook.com/ohpollyfashion), not the numeric Page ID, when scraping Pages.
  7. For monitoring use cases, use Apify Schedules + onlyPostsNewerThan instead of re-scraping the entire history every run.
  8. Don't scrape the same group/Page from multiple accounts simultaneously — Facebook correlates sessions and will lock down access.

Supported URL formats

  • https://www.facebook.com/groups/<id> — group by numeric ID
  • https://www.facebook.com/groups/<slug> — group by vanity slug
  • https://www.facebook.com/<page-slug> — Page by vanity slug
  • https://m.facebook.com/... and https://mbasic.facebook.com/... — mobile variants

URLs that point at Facebook system routes (/marketplace, /watch, /messages, /login, /profile.php, /photo.php, /events, etc.) are filtered out automatically.

This scraper accesses publicly visible Facebook content. For private groups, you must be an authorized member and supply your own authentication cookies; this actor does not bypass Facebook's authorization. You are responsible for ensuring your use complies with applicable laws, Facebook's Terms of Service, and data protection regulations (GDPR, CCPA, LGPD, etc.).

  • Do not republish personal data without consent.
  • Do not use scraped data to harass, dox, discriminate, or build profiles for unlawful purposes.
  • Do not sell scraped Facebook data in violation of Facebook's terms.
  • Do treat scraped PII like any other PII you collect — encrypt at rest, restrict access, honor deletion requests.

If you're unsure whether your use case is permitted, talk to a lawyer before scaling up.


Cheaper alternative — free Chrome extension for private groups you belong to

If you only need to scrape groups or Pages you can already see in your own browser, you don't need an Apify subscription, a VPS, residential proxies, or any cloud cost at all. I built a free Chrome extension that runs the same extraction logic locally inside the browser tab you're already viewing.

📥 Get the Chrome extension

Why use the extension instead of this Apify actor?

  • It's free. No per-post billing, no compute credits, no monthly minimum.
  • No VPS / no proxies needed. It uses your own browser session, your own cookies, your own IP — Facebook sees a normal logged-in user, not a scraper.
  • Works on any group or Page you can already access — public or private — including closed groups and members-only communities you belong to.
  • 100% local & private. Posts never leave your machine. No accounts, no servers.
  • One-click export to JSON or CSV.

When should you use the Apify actor instead?

  • You need to run scraping on a schedule (hourly / daily / weekly) without a human at the keyboard.
  • You need to scrape from servers, CI, Make / Zapier / n8n, or AI agents via MCP.
  • You need to scrape thousands of groups or Pages in parallel.
  • You need to scrape entities you do not have a personal Facebook account for.

For interactive, ad-hoc scraping of communities you belong to, use the extension — it's the cheapest option that exists.

Get in touch

I'm Anas, the developer behind this actor and the extension. If you want:

  • The Chrome extension link
  • A custom version of either tool for your use case
  • Bulk pricing on the Apify actor
  • A bespoke scraper for any other Facebook surface (Marketplace, Events, Reels, Search, Profiles)

reach out:

I usually reply within 24 hours.


Changelog

  • v0.1.0 — Page support added. Same actor now scrapes Facebook Pages alongside groups. New fields: pageName, pageUrl, followerCount, likeCount, pageCategory, verified. New entity type stored under page-info key. README rewritten with full SEO coverage, FAQ section, and competitor comparison.
  • v0.0.1 — Initial release: groups only.