Facebook Group Posts Scraper - No Login Required avatar

Facebook Group Posts Scraper - No Login Required

Pricing

from $2.50 / 1,000 results

Go to Apify Store
Facebook Group Posts Scraper - No Login Required

Facebook Group Posts Scraper - No Login Required

Extract public Facebook group posts fast, with no login, no cookies, and no browser - just a direct, lightweight HTTP client.

Pricing

from $2.50 / 1,000 results

Rating

0.0

(0)

Developer

Rio Dwi Saputra

Rio Dwi Saputra

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

15 hours ago

Last modified

Share

Extract public Facebook group posts in seconds - no login, no cookies, no browser required. This Actor talks directly to Facebook's own web API to pull post text, author info, engagement counts, and media links from any public Facebook Group, then hands you clean, structured JSON ready for analysis, monitoring, or export.

What does Facebook Group Posts Scraper do?

Facebook Group Posts Scraper fetches recent posts from one or more public Facebook groups by calling Facebook's internal web API with a lightweight HTTP client - no Playwright, no headless Chrome, no Facebook account. Give it a group URL or numeric group ID and it returns each post's message text, hashtags, author, publish time, permalink, reaction/share/comment counts, reshare status, and every photo in the post (including full multi-photo albums, not just the first image), paginating automatically until it hits your limits.

Because it runs on the Apify platform, you get scheduled runs, instant API access to results, webhook and integration support (Make, Zapier, Google Sheets, and more), and automatic proxy rotation out of the box - no infrastructure to babysit.

Why use Facebook Group Posts Scraper?

  • Community and market research - track what members of niche or competitor groups are discussing without manually scrolling Facebook.
  • Brand and topic monitoring - watch public groups relevant to your brand, product, or industry for mentions and sentiment.
  • Lead and content discovery - surface recent activity in buyer or interest groups for outreach or content ideas.
  • No account risk - since it never logs in, there's no personal or business Facebook account to get flagged or locked.

How to use Facebook Group Posts Scraper

  1. Click Try for free (or Start) to open the Actor.
  2. In the Facebook group URLs or IDs field, paste one or more public group URLs (e.g. https://www.facebook.com/groups/123456789012345) or bare numeric group IDs, one per line.
  3. Optionally adjust Max posts per group, Delay between requests, and Proxy configuration in the Input tab (defaults work well for most cases).
  4. Click Start and wait for the run to finish.
  5. Open the Output tab (or the Dataset via the API) to view, filter, and export your results as JSON, CSV, Excel, and more.

Input

Configure the Actor from the Input tab in Apify Console, or by passing a JSON object via the API. See .actor/input_schema.json for the full schema.

FieldTypeDescription
startUrlsarray of strings (required)Public group URLs or numeric group IDs to scrape, one per line.
maxPostsPerGroupintegerMaximum posts to fetch per group. 0 = unlimited. Default 40.
maxPaginationPagesintegerSafety cap on feed pages requested per group. Default 25.
requestDelaySecsintegerDelay (seconds) between paginated requests within a group. Default 2.
groupsConcurrencyintegerHow many groups to scrape in parallel. Default 2.
proxyConfigurationobjectApify Proxy configuration. Defaults to Apify Proxy with the RESIDENTIAL group.

Example input:

{
"startUrls": [
"https://www.facebook.com/groups/123456789012345",
"987654321098765"
],
"maxPostsPerGroup": 50,
"proxyConfiguration": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"] }
}

Note: only groups with a numeric ID are supported. Vanity/slug group URLs (e.g. .../groups/my-cool-group) must first be resolved to their numeric ID (visible in the group's "About" page URL or page source) before being passed in.

Output

Each scraped post is pushed to the Actor's dataset as one JSON object. You can download the dataset in various formats such as JSON, HTML, CSV, or Excel.

{
"id": "111222333444555_998877665544332",
"post_id": "998877665544332",
"group_id": "123456789012345",
"type": "Photo",
"is_share": false,
"message": "Hello from the group! #blessed",
"hashtags": ["blessed"],
"permalink_url": "https://www.facebook.com/groups/123456789012345/permalink/998877665544332/",
"created_time": "2023-11-14T22:13:20+00:00",
"author": {
"id": "111222333444555",
"username": "jane.doe.999",
"name": "Jane Doe",
"profile_url": "https://www.facebook.com/jane.doe.999",
"picture_url": "https://scontent.example/profile.jpg"
},
"reactions_count": 345,
"shares_count": 12,
"comments_count": 67,
"feedback_id": "feedbackid:998877665544332",
"attachments": [
{
"type": "Photo",
"photos_total_count": 1,
"permalink_url": "https://www.facebook.com/photo.php?fbid=photo_media_id",
"photos": [
{
"media_id": "photo_media_id",
"media_url": "https://scontent.example/photo_hd.jpg",
"width": 1920,
"height": 1080,
"permalink_url": "https://www.facebook.com/photo.php?fbid=photo_media_id"
}
]
}
]
}

Multi-photo album posts come back the same way, just with more than one entry in photos (and photos_total_count reflecting the album's real size even if Facebook only returns a preview batch of photo nodes per page):

{
"type": "MediaContainerMediaSet",
"photos_total_count": 21,
"permalink_url": "https://www.facebook.com/media/set/?set=pcb.998877665544332",
"photos": [
{ "media_id": "photo_1", "media_url": "https://scontent.example/1.jpg", "width": 1280, "height": 720, "permalink_url": "..." },
{ "media_id": "photo_2", "media_url": "https://scontent.example/2.jpg", "width": 1280, "height": 720, "permalink_url": "..." }
]
}

Data table

FieldDescription
idGlobally unique post ID (authorId_postId).
post_idFacebook's post ID.
group_idThe group the post was scraped from.
typeAttachment type (Photo, MediaContainerMediaSet for albums, Video, etc.) or null for text-only posts.
is_sharetrue if the post is a reshare of another post.
messagePost text content.
hashtagsHashtags mentioned in the post text.
permalink_urlDirect link to the post.
created_timePost publish time, ISO 8601 UTC.
authorAuthor id, username, display name, profile URL, and picture URL.
reactions_countTotal reactions (likes, etc.).
shares_countTotal shares.
comments_countTotal comments.
feedback_idFacebook's internal feedback/comments object ID for the post - useful if you want to pair this with a separate comments-fetching Actor.
attachmentsList of attached media blocks. Each has a type, the attachment's own permalink_url, photos_total_count (the real album size), and a photos array with every returned photo's URL, id, and dimensions. Empty for text-only posts.

Pricing / Cost estimation

This Actor runs on your own Apify plan's compute units and proxy usage - there's no separate per-result fee. A typical run scraping a handful of groups for their latest posts (a few pages of pagination each) completes in well under a compute unit, so even the free Apify plan comfortably covers light, occasional use. Cost scales mainly with how many pages you paginate (maxPostsPerGroup / maxPaginationPages) and proxy usage - residential proxy traffic is the largest cost driver for heavier scraping, so tune those two settings to your actual needs.

Tips or advanced options

  • Keep requestDelaySecs conservative. This endpoint is unauthenticated and Facebook rate-limits it aggressively - lowering the delay to "go faster" usually just gets you blocked sooner.
  • Use residential proxies. Facebook blocks most datacenter IP ranges for this endpoint almost immediately; the default proxy configuration (Apify Proxy, RESIDENTIAL group) is strongly recommended over disabling proxies.
  • Lower groupsConcurrency if you see failures. Running many groups in parallel through the same proxy pool increases block risk faster than it saves time.
  • Resolve numeric group IDs ahead of time if you're working from vanity group URLs, since this Actor doesn't perform that resolution itself.

FAQ, disclaimers, and support

This Actor only accesses data that is already publicly visible on Facebook (no login, no private-group content). It relies on Facebook's undocumented internal web API, which Facebook can change or rate-limit at any time without notice - if a run suddenly returns no data, it may need an update to keep working with Facebook's latest client version. Facebook's Terms of Service restrict automated data collection; you are responsible for using this Actor in a way that complies with the Terms of Service of Facebook and any applicable law in your jurisdiction, including for any personal data encountered in scraped content.

Found a bug or have a feature request? Please use the Issues tab on this Actor's page. Need a tailored version (comments, reactions breakdown, page posts, keyword search, etc.)? Get in touch - a custom solution can be built on request.