Facebook Groups Posts Scraper avatar

Facebook Groups Posts Scraper

Pricing

from $3.99 / 1,000 results

Go to Apify Store
Facebook Groups Posts Scraper

Facebook Groups Posts Scraper

Pricing

from $3.99 / 1,000 results

Rating

0.0

(0)

Developer

ScraperX

ScraperX

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

3 days ago

Last modified

Share

Facebook Groups Posts Scraper โ€” Extract Public Group Posts, Authors & Engagement (No Login)

Collect posts from public Facebook groups at scale. Paste one or more group URLs and get a clean dataset with the post text, direct post link, author profile, publication date, like and comment counts, and every photo, video or link attachment.

No cookies, no Facebook login, no session tokens. Just group URLs and a limit.


What you get

๐Ÿ“ Post data๐Ÿ‘ค Author data๐Ÿ“Ž Attachments
Post ID and permalinkProfile namePhotos with URI, width, height
Full post textProfile URLOCR / accessibility caption text
Publication dateProfile IDVideos with URI and dimensions
Like / reaction countProfile picture URLLink previews
Comment countAttachment IDs and media URLs
Source group URL

Key features

  • No authentication required. The Actor reads public group feeds the way a logged-out visitor does โ€” you never hand over cookies or risk an account.
  • Bulk input. Feed it many groups at once: full URLs (https://www.facebook.com/groups/cheapmealideas/), group slugs (cheapmealideas) or numeric group IDs. Anything short is expanded into a proper group URL automatically.
  • Smart "All sorts" mode. The default ALL sort runs the group feed through three different sort orders and merges the results, which surfaces substantially more unique posts than any single ordering โ€” the best way to actually hit your per-group post target.
  • Four sort orders. ALL (maximum coverage), TOP_POSTS (most engaged first), CHRONOLOGICAL (newest first) and RECENT_ACTIVITY (latest comments and reactions first).
  • Real engagement numbers. Every post carries its like/reaction count and comment count, so you can rank content by traction rather than guessing.
  • Full media capture. Photos come with direct URIs and pixel dimensions plus Facebook's accessibility caption (useful OCR-style text), videos with their URIs, and link posts with their preview data.
  • Deep pagination. The Actor follows the group feed's own cursor, page after page, until your maxPosts target is reached.
  • Live streaming output. Posts land in the dataset as they are collected.

Use cases

  • Market & audience research โ€” find out what people in a niche actually ask, complain about and recommend, in their own words.
  • Lead generation โ€” spot posts expressing intent ("looking for a plumber in Leeds") and reach the author through their public profile link.
  • Content ideas & SEO โ€” mine real questions from communities to build content that answers them.
  • Trend tracking โ€” monitor a group weekly and watch which topics rise.
  • Brand & competitor monitoring โ€” see how your product, or a competitor's, is discussed inside communities.
  • Community management & moderation research โ€” measure engagement patterns and posting volume.
  • Recruitment & talent sourcing โ€” track job and hiring posts in industry groups.
  • Academic and social research โ€” build datasets of public community discourse with engagement metrics attached.

How it works

  1. You provide group URLs, slugs or IDs and a per-group post limit.
  2. The Actor resolves each group to its internal ID and picks up the tokens and cursor it needs from the public group page.
  3. The group feed is paginated with Facebook's own cursor mechanism, in your chosen sort order (or all three, in ALL mode).
  4. Each post node is normalised into a flat row โ€” text, author, date, permalink, engagement counts and attachments.
  5. Rows stream into the dataset, then the Actor moves on to the next group.

Quick start

  1. Open the group on Facebook (it must be public) and copy its URL.
  2. Paste it into Group URLs, Usernames, or Keywords โ€” one per line for several groups.
  3. Set Maximum Posts per Group (minimum 10).
  4. Leave Sort Order on ALL for the widest coverage.
  5. Click Start and export the Output tab as CSV, Excel or JSON.

Minimal input

{
"startUrls": ["https://www.facebook.com/groups/cheapmealideas/"],
"maxPosts": 50
}

Input configuration

FieldTypeDefaultDescription
startUrlsarrayโ€” (required)One or more Facebook groups. Accepts full group URLs, group slugs (cheapmealideas) or numeric group IDs โ€” short values are expanded to https://www.facebook.com/groups/โ€ฆ automatically.
maxPostsinteger10How many posts to collect per group. Minimum 10. Raise it for deeper analysis.
sortBystringALLALL โ€” combine three sort orders for maximum unique posts (recommended). TOP_POSTS โ€” most-engaged first. CHRONOLOGICAL โ€” newest first. RECENT_ACTIVITY โ€” latest comments/reactions first.
proxyConfigurationobjectoffOptional Apify Proxy settings for extra stability on large runs. Defaults work for most jobs.

Public groups only. Private and closed groups are not accessible without membership, and this Actor does not attempt to bypass that.


Output data

One row per post.

FieldTypeDescription
idstringFacebook post ID.
urlstringDirect permalink to the post.
textstringFull post text.
datestringWhen the post was published.
userobject{ id, name, profileUrl, profilePic } for the post author.
likesCountnumberReactions on the post.
commentsCountnumberComments on the post.
attachmentsarrayPhotos, videos and link previews attached to the post (see below).
facebookUrlstringThe group URL the post came from.
source_groupstringSame group reference, convenient for grouping in exports.
feedbackIdstringFacebook's internal feedback object ID for the post.

Attachment shapes

  • Photo โ€” { "__typename": "Photo", "photo_image": { "uri", "width", "height" }, "url", "id", "ocrText" }. ocrText is Facebook's accessibility caption, which often describes what is in the image.
  • Video โ€” { "__typename": "Video", "video": { "uri", "width", "height" }, "url", "id" }.
  • Link โ€” link preview data for posts that share an external URL.

Example output

{
"id": "1234567890123456",
"url": "https://www.facebook.com/groups/cheapmealideas/posts/1234567890123456/",
"text": "Batch-cooked 12 portions of chilli for under ยฃ14 this week โ€” recipe in the comments!",
"date": "2026-08-04T18:22:11.000Z",
"user": {
"id": "100001234567890",
"name": "Jamie Example",
"profileUrl": "https://www.facebook.com/jamie.example",
"profilePic": "https://scontent.xx.fbcdn.net/โ€ฆ"
},
"likesCount": 412,
"commentsCount": 87,
"attachments": [
{
"__typename": "Photo",
"photo_image": { "uri": "https://scontent.xx.fbcdn.net/โ€ฆ", "width": 1080, "height": 1350 },
"url": "https://www.facebook.com/photo/?fbid=โ€ฆ",
"id": "9876543210",
"ocrText": "May be an image of food and text that says 'CHILLI'"
}
],
"facebookUrl": "https://www.facebook.com/groups/cheapmealideas/",
"source_group": "https://www.facebook.com/groups/cheapmealideas/",
"feedbackId": "ZmVlZGJhY2s6โ€ฆ"
}

Illustrative values โ€” a live run returns current Facebook data.


Usage examples

Monitor several communities in one run

{
"startUrls": [
"https://www.facebook.com/groups/cheapmealideas/",
"https://www.facebook.com/groups/mealprepideas/",
"budgetcookinguk"
],
"maxPosts": 200,
"sortBy": "ALL"
}

Newest posts only, for daily monitoring

{
"startUrls": ["https://www.facebook.com/groups/yourniche/"],
"maxPosts": 100,
"sortBy": "CHRONOLOGICAL"
}

Save as a Task, attach a daily Schedule, and deduplicate on id to get only new posts.

Find the best-performing content in a niche

{
"startUrls": ["https://www.facebook.com/groups/yourniche/"],
"maxPosts": 500,
"sortBy": "TOP_POSTS"
}

Then sort your export by likesCount and commentsCount.

Lead mining

Run with a high maxPosts, export to CSV, and filter text for intent phrases ("looking for", "can anyone recommend", "need help with"). The user.profileUrl column is your contact path.


Run it from your own code

Python

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_API_TOKEN>")
run = client.actor("scraperx/facebook-groups-posts-scraper").call(run_input={
"startUrls": ["https://www.facebook.com/groups/cheapmealideas/"],
"maxPosts": 100,
"sortBy": "ALL",
})
for post in client.dataset(run["defaultDatasetId"]).iterate_items():
print(post["user"]["name"], post["likesCount"], post["text"][:80])

JavaScript

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: '<YOUR_APIFY_API_TOKEN>' });
const run = await client.actor('scraperx/facebook-groups-posts-scraper').call({
startUrls: ['https://www.facebook.com/groups/cheapmealideas/'],
maxPosts: 100,
sortBy: 'ALL',
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

cURL

curl -X POST "https://api.apify.com/v2/acts/scraperx~facebook-groups-posts-scraper/runs?token=<YOUR_APIFY_API_TOKEN>" \
-H "Content-Type: application/json" \
-d '{"startUrls":["https://www.facebook.com/groups/cheapmealideas/"],"maxPosts":100}'

Integrations

Send posts to Google Sheets, Airtable, Slack, Make, Zapier, Google Drive or your own endpoint via webhooks, and use Schedules for continuous community monitoring.


Pricing

Pay-per-event: a small Actor-start charge plus a charge per post row delivered to your dataset. You pay for the posts you receive, not for run time. Current rates are on the Pricing tab of this Actor's page, and Apify shows an estimated cost before and during every run.


Limits & good to know

  • Public groups only. If a group requires membership to view its posts, it cannot be scraped โ€” by anyone, without an account.
  • maxPosts is per group, so five groups at 200 posts each can return up to 1,000 rows.
  • Minimum 10 posts per group.
  • Facebook limits how far back a public group feed can be paged. Very old posts may be unreachable regardless of your limit; ALL sort mode maximises what you can get.
  • Media URIs point at Facebook's CDN and expire โ€” download assets promptly if you need to keep them.
  • Comment texts are not part of this Actor's output; you get comment counts. Post text, author and attachments are the field set.
  • Default run options are 4 GB memory and a 1-hour timeout โ€” raise the timeout for many groups or high limits.

FAQ

Do I need Facebook cookies or a login? No. The Actor works entirely without authentication.

Can it scrape private or closed groups? No. Only public groups are accessible.

What can I paste into the input? A full group URL, the group slug (the part after /groups/), or the numeric group ID. All three work.

Which sort order should I use? ALL in most cases โ€” it merges three orderings and returns the most unique posts. Use CHRONOLOGICAL when you only care about what is new.

Does it return comments? It returns the comment count per post, not the individual comment texts.

Why did I get fewer posts than requested? Facebook's public feed for that group ran out of reachable posts. Try sortBy: "ALL", or add more groups.

Can I get the poster's contact details? You get the author's public profile name, ID, picture and profile URL. Nothing private is collected.

Which export formats are supported? JSON, CSV, Excel (XLSX), XML and RSS. JSON preserves the nested user and attachments objects.


This Actor collects only publicly visible content from public Facebook groups โ€” the same posts any logged-out visitor can read. It does not log in, join groups, or access private content. Posts and profile data relate to real people: if you process it, make sure you have a lawful basis under GDPR and comparable rules, and respect Facebook's terms and applicable law.

Support

Need extra fields, comment texts, or a custom community-monitoring pipeline? Open an issue on the Issues tab.