Apify actor · whoareyouanas/facebook-group-scraper
Facebook Group & Page Scraper - Posts, Comments & Reactions
Export posts from Facebook groups and Pages with text, reactions, supported comments, media references, author information, and optional entity metadata. A run can mix several group and Page sources.
Documentation checked 2026-10-29 · deployed build 0.1.16 · run through your Apify account
01 / Overview
Match the actor to the job.
Groups and Pages
Use one startUrls list for public groups, brand Pages, creator Pages, and other supported feeds.
More post context
Include comments, media, and group or Page details when the source exposes them.
Repeatable collection
Control run size, date cutoff, concurrency, and request timeouts for saved tasks or API calls.
02 / Input
Start with a clear, bounded input.
startUrls is required. Set maxPosts deliberately and choose whether comments, media, and entity information are needed. Private-group workflows require valid user-supplied cookies and existing access.
{
"startUrls": [
{
"url": "https://www.facebook.com/groups/1280379818654162"
}
],
"maxPosts": 10,
"includeComments": true,
"includeGroupInfo": true
}Replace example targets and credential placeholders before running. These are documentation examples, not a promise of currently available source results.
| Field | Type / required | Default | Purpose |
|---|---|---|---|
| startUrls | arrayRequired | Not specified | URLs of Facebook groups OR Pages to scrape. Group example: https://www.facebook.com/groups/123456789 — Page example: https://www.facebook.com/ohpollyfashion. You can mix groups and Pages in the same run. |
| maxPosts | integer | 100 | Maximum number of posts to scrape per group or Page. The scraper will stop scrolling once this limit is reached. Set to a lower value for faster runs. Minimum: 1 · Maximum: 10000 |
| viewOption | string | "RECENT_ACTIVITY" | How posts should be sorted when scraping the feed. Options: RECENT_ACTIVITY, TOP_POSTS, CHRONOLOGICAL |
| onlyPostsNewerThan | string | Not specified | Only scrape posts published after this date. Use ISO 8601 format (e.g. 2024-01-01 or 2024-06-15T00:00:00Z). Leave empty to scrape all posts up to maxPosts limit. |
| includeComments | boolean | false | Whether to scrape top-level comments for each post. Disabled by default to keep runs faster and cheaper; enable it when you need richer data. |
| includeGroupInfo | boolean | true | Whether to scrape entity metadata. For groups: name, description, member count, privacy status, admins, rules. For Pages: name, description, follower count, like count, page category, verified status, cover photo. |
All other input controls (7)
| Field | Type / required | Default | Purpose |
|---|---|---|---|
| includeMedia | boolean | false | Whether to include image/video URLs in output and allow browser media downloads while scraping. Disable this to reduce residential proxy bandwidth usage; text, post metadata, reactions, and counts will still be scraped where available. |
| cookies | array | Not specified | Paste your Facebook cookies as a JSON array to access private/closed groups or login-walled Pages. Export the full facebook.com cookie set from your logged-in browser for best reliability. At minimum, include 'c_user' and 'xs'; companion cookies such as 'fr', 'datr', 'sb', and 'wd' are recommended. |
| maxConcurrency | integer | 1 | Number of browser tabs to run in parallel. Keep at 1 for stability. Increase to 2-3 only if you need faster scraping and have sufficient memory. Higher values increase memory usage. Minimum: 1 · Maximum: 5 |
| requestHandlerTimeoutSecs | integer | 600 | Maximum time in seconds to spend scraping a single group or Page. Targets with many posts need longer timeouts. Default of 600 seconds (10 minutes) handles most cases. Minimum: 60 · Maximum: 1200 |
| minResultsPerMinute | integer | 20 | Stops slow targets after the grace period when result velocity is below this value. This protects pay-per-result margins on blocked or low-yield pages. Set to 0 to disable. Minimum: 0 · Maximum: 1000 |
| costGuardGracePeriodSecs | integer | 120 | How long each target can run before the minimum-results-per-minute guard is enforced. Minimum: 30 · Maximum: 1200 |
| proxyUrl | string | Not specified | Add your Apify Proxy URL for reliable scraping. Format: http://groups-RESIDENTIAL:[email protected]:8000. Get your token from Apify Console. External proxies (BrightData, Oxylabs) also work. |
03 / Output
Know what each returned row represents.
- Post rows contain source links, text, author data, timestamps, reactions, and supported comments.
- Optional group or Page metadata is also documented in key-value storage. A displayed comment count does not prove every comment body was retrieved.
{
"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"
}Example values illustrate the published contract. Available fields and populated values depend on the source, mode, and result status.
Fields in the documented output view
postId
Post ID
postUrl
Post URL
groupName
Group / Page Name
groupUrl
Group / Page URL
authorName
Author Name
authorProfileUrl
Author Profile URL
authorId
Author ID
text
Text
postType
Post Type
timestamp
Timestamp
formattedDate
Formatted Date
likesCount
Likes
lovesCount
Loves
hahaCount
Haha
wowCount
Wow
sadCount
Sad
angryCount
Angry
totalReactions
Total Reactions
commentsCount
Comments
sharesCount
Shares
images
Images
videos
Videos
topComments
Top Comments
source
Source
scrapeDate
Scrape Date
Output views select columns. They do not necessarily filter record types or exhaust the full JSON payload. Use structured JSON when you need nested arrays or objects.
Dataset links and run artifacts (2)
- Overview
- Overview of all scraped posts with key metrics and details
- All Posts (Full Data)
- Complete dataset with all fields including metadata, comments, and optional media URLs
04 / Pricing
Understand the billable unit.
These are the active public event prices checked on 2026-10-29, in USD. They describe each event, not a universal flat price for a run. Confirm your current Apify plan and run budget before starting.
| Billable event | Rate (USD) | When it applies |
|---|---|---|
Post Scraped apify-default-dataset-item | $0.01 / event | One scraped Facebook group post with text, reactions, comments, and metadata $10.00 per 1,000 of this event. Other events and separate services are additional. |
Actor Start apify-actor-start | $0.00005 / event | Charged when the Actor starts running. Number of events charged depends on Actor memory (one event per GB, minimum one event). Start units depend on allocated memory: one event per GB, with at least one event. |
- Each configured dataset-item event is billed at the live rate below, with an additional memory-based start event.
- Limit the post count and review a small sample before scaling across several feeds.
A result limit and a spending cap are different controls. Account charges, applicable taxes, and separately billed providers or proxies must be considered where relevant. A cap setting is not a minimum invoice charge.
05 / API & automation
Use the same input from your workflow.
Test a small run in Apify Console, inspect its records and charges, then save a task or call the actor from your own application. Keep your Apify token in an environment variable. Source-specific credentials, if required, are separate from the Apify API token.
# Save the input example as input.json and set APIFY_TOKEN.
# This request starts an asynchronous, potentially billable run.
curl --request POST \
'https://api.apify.com/v2/acts/whoareyouanas~facebook-group-scraper/runs' \
--header "Authorization: Bearer $APIFY_TOKEN" \
--header 'Content-Type: application/json' \
--data @input.jsonThe response identifies the run. Wait for it to finish, inspect its status, and use its default dataset and key-value store to retrieve results. A successful run can still contain partial or failed records; check the output contract above before continuing downstream.
Coverage & interpretation
Check the result before relying on it.
- Cookies do not grant access your account lacks. Facebook visibility and loading behavior can produce partial results.
- Source reaction counts and media links are point-in-time observations.
Questions
Before you build an integration.
What do I need to provide?
startUrls is required. Set maxPosts deliberately and choose whether comments, media, and entity information are needed. Private-group workflows require valid user-supplied cookies and existing access.
What should I check in the output?
- Post rows contain source links, text, author data, timestamps, reactions, and supported comments.
- Optional group or Page metadata is also documented in key-value storage. A displayed comment count does not prove every comment body was retrieved.
How do I budget the run?
- Each configured dataset-item event is billed at the live rate below, with an additional memory-based start event.
- Limit the post count and review a small sample before scaling across several feeds.
Keep exploring
Practical guides for the next step.
How to Scrape Facebook Group Posts and Data in 2026
Choose a browser or cloud workflow for Facebook group and page research, verify post and comment coverage, and build a repeatable export.
Read the guideExport Facebook Group Posts to CSV Without Sharing Your Login
Collect a useful Facebook group or page sample in Chrome, check what was captured, and turn the export into a research worksheet.
Read the guideTop 5 Facebook Scrapers in 2026
Compare the best Facebook scrapers for Meta ads, Facebook groups, public pages, and single-ad status checks. Use the right tool for the data you actually need.
Read the guideTop 5 Apify Scrapers to Automate Marketing Research
A practical stack of Apify scrapers for automating marketing research across Meta ads, Google ads, TikTok ads, Facebook Groups, and Reddit.
Read the guide