Facebook Group Posts Scraper - No Login Required
Pricing
from $2.50 / 1,000 results
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
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
15 hours ago
Last modified
Categories
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
- Click Try for free (or Start) to open the Actor.
- 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. - Optionally adjust Max posts per group, Delay between requests, and Proxy configuration in the Input tab (defaults work well for most cases).
- Click Start and wait for the run to finish.
- 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.
| Field | Type | Description |
|---|---|---|
startUrls | array of strings (required) | Public group URLs or numeric group IDs to scrape, one per line. |
maxPostsPerGroup | integer | Maximum posts to fetch per group. 0 = unlimited. Default 40. |
maxPaginationPages | integer | Safety cap on feed pages requested per group. Default 25. |
requestDelaySecs | integer | Delay (seconds) between paginated requests within a group. Default 2. |
groupsConcurrency | integer | How many groups to scrape in parallel. Default 2. |
proxyConfiguration | object | Apify 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
| Field | Description |
|---|---|
id | Globally unique post ID (authorId_postId). |
post_id | Facebook's post ID. |
group_id | The group the post was scraped from. |
type | Attachment type (Photo, MediaContainerMediaSet for albums, Video, etc.) or null for text-only posts. |
is_share | true if the post is a reshare of another post. |
message | Post text content. |
hashtags | Hashtags mentioned in the post text. |
permalink_url | Direct link to the post. |
created_time | Post publish time, ISO 8601 UTC. |
author | Author id, username, display name, profile URL, and picture URL. |
reactions_count | Total reactions (likes, etc.). |
shares_count | Total shares. |
comments_count | Total comments. |
feedback_id | Facebook's internal feedback/comments object ID for the post - useful if you want to pair this with a separate comments-fetching Actor. |
attachments | List 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
requestDelaySecsconservative. 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,
RESIDENTIALgroup) is strongly recommended over disabling proxies. - Lower
groupsConcurrencyif 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.