Facebook Group Posts & Comments Scraper
Pricing
$19.99/month + usage
Facebook Group Posts & Comments Scraper
Facebook Group Post Scraper extracts posts from public Facebook groups, capturing text, images, videos, author details, timestamps, reactions, comments, and share data. Ideal for community research, trend analysis, social listening, and automating structured Facebook group post insights.
Pricing
$19.99/month + usage
Rating
0.0
(0)
Developer
SimpleAPI
Maintained by CommunityActor stats
1
Bookmarked
39
Total users
3
Monthly active users
2 days ago
Last modified
Categories
Share
Facebook Group Posts Scraper Pro
Extract structured data from public Facebook groups: posts, media attachments, per-type reaction breakdowns, share and comment counts, hashtags, mentions, engagement metrics, and optional full comments and replies as separate child rows. Built for social media monitoring, community analysis, lead research, and content analytics.
Keywords: facebook scraper, facebook group scraper, facebook posts, group posts, comments scraper, replies, reactions, attachments, hashtags, mentions, engagement, social media data, community analytics.
What it does
- Scrapes one or many public Facebook groups from a list of URLs, vanity names, or numeric IDs.
- Reverse-engineers Facebook's web GraphQL feed (no login required for public groups) using browser TLS impersonation, so requests are accepted by Facebook's endpoint.
- Emits one row per post, plus optional child rows per comment and reply.
- Every field comes from Facebook's real response. Values that Facebook does not return are
emitted as
nullrather than guessed.
Input
| Field | Type | Description |
|---|---|---|
startUrls | array | Facebook group URLs / vanity names / numeric IDs. Each row is tagged with its source group. |
groupUrl | string | Optional single-group input (merged with startUrls). Backward compatible. |
count | integer | Max parent posts across all groups (0 = unlimited). Comments/replies do not count against this. |
sortType | enum | new_posts (newest first), most_relevant, or recent_activity. |
scrapeUntil | date | Keep posts newer than an absolute date (2026-01-15) or relative value (7 days). On new_posts, pagination stops early once older posts are reached. |
includeComments | boolean | Fetch comments as child rows. |
maxComments | integer | Max comments per post (0 = none, or unlimited if includeComments is on). |
maxReplies | integer | Max replies per comment (0 = skip replies). |
keywords | array | Keep only posts whose text contains at least one term (OR, case-insensitive). |
excludeKeywords | array | Drop posts whose text contains any term. |
postType | enum | any, text, photo, video, or link. |
minReactions | integer | Keep only posts with at least this many reactions. |
cookie | string (secret) | Experimental. Raw Cookie header from a logged-in session to access closed groups you belong to. |
proxy | object | Proxy configuration. Residential is required β Facebook blocks datacenter IPs for group feeds. |
Counting rule
count limits parent posts only, using a separate counter. Comments and replies are
additional and are bounded per-post by maxComments and per-comment by maxReplies.
Output
Parent post rows (type: "post", isChild: false) and, when enabled, child rows
(type: "comment" / "reply", isChild: true) are pushed to the default dataset. Child rows
are also mirrored to a per-run comments-<runId> dataset and are interleaved right after their
parent post.
Post fields
| Field | Description |
|---|---|
postId, feedbackId | Post identifier and feedback token. |
groupId, groupName, groupUrl | Source group identity. |
url | Post permalink. |
createdAt, publishedAt | Unix seconds and ISO-8601 UTC. |
text | Post text. |
hashtags, mentions | Parsed from the message entity ranges. |
attachments | List of { type, url, image, width, height, title, accessibilityCaption, mediaId } for photos, videos, links, and albums. |
user | Author { id, name, url, type, profilePicture }. |
reactionCount | Total reactions. |
reactions | Per-type breakdown, e.g. { "Like": 51, "Love": 2, "Care": 2 }. |
shareCount, commentCount | Share and comment totals. |
engagementTotal | reactionCount + shareCount + commentCount. |
engagementRate | engagementTotal / group member count when the member count is available, else null. |
postAgeHours | Hours between post creation and scrape time. |
scrapedAt | ISO-8601 UTC scrape timestamp. |
Comment / reply fields
| Field | Description |
|---|---|
type, isChild | comment or reply; true. |
commentId, parentId, postId, postUrl | Identity and linkage (parentId = post ID for comments, parent comment ID for replies). |
text, createdAt, publishedAt, depth | Comment content and timing. |
user | Author { id, name, url, gender, profilePicture }. |
reactionCount, reactions, replyCount | Comment engagement. |
url | Direct comment link. |
Notes and compliance
- Only publicly accessible group content is collected. Private groups require the experimental
cookieinput and membership. - Facebook gates group feeds behind anti-bot measures; residential proxy is required and the actor retries across IPs until a group's feed responds.
- Ensure your use complies with Facebook's Terms of Service, applicable data-protection laws (GDPR, CCPA), and local regulations. You are responsible for how scraped data is used.
Technical
- Runtime: Python 3,
curl_cffi(Chrome TLS/JA3 impersonation), Apify SDK. - Pagination: cursor-based for the feed; separate comment and reply pagination queries.
- Billing: pay-per-event
row_resultcharged per emitted row (parent and child).