Facebook Group Posts & Comments Scraper
Pricing
from $1.19 / 1,000 group posts
Facebook Group Posts & Comments Scraper
Scrape public Facebook group posts with comments and replies: text, author, date, reactions, shares, photos, Marketplace listing price and location, plus price, beds and phone read from listing posts.
Pricing
from $1.19 / 1,000 group posts
Rating
0.0
(0)
Developer
ParseBird
Maintained by CommunityActor stats
1
Bookmarked
2
Total users
1
Monthly active users
4 days ago
Last modified
Categories
Share
Facebook Group Posts & Comments Scraper
Facebook Group Posts & Comments Scraper extracts posts, comments and replies from public Facebook groups without a login: post text, author, date, reactions by type, comment and share counts, photos, Marketplace listing details, and price, bedrooms and phone numbers read from listing posts, as JSON, CSV or Excel.
| Add public group links and get every post with its full comment threads (replies included), keyword and date-range filters, Marketplace listing location and coordinates, and an "only new posts" mode for scheduled monitoring. |
| ParseBird Facebook Suite Β Β β’Β Β Pages, posts, groups, reviews & media | ||
|
Facebook User Posts Scraper Posts from profiles and Pages |
Facebook Page Video Downloader Every video on a Page, MP4 links |
Facebook Media Downloader HD/SD links for videos, reels, photos |
|
Facebook Public Group Posts Scraper Group posts, reactions, photos |
Facebook Group Profile Scraper Members, activity, admins, rules |
Facebook Page Reviews Scraper Recommendations, tags, comments |
|
Facebook Group Posts & Comments Scraper You are here | ||
Copy to your AI assistant
Copy this block into ChatGPT, Claude, Cursor, or any LLM to start using this actor.
Apify Actor: parsebird/facebook-group-posts-comments-scraper. Scrapes posts and comments from public Facebook groups without login. Call via ApifyClient: client.actor("parsebird/facebook-group-posts-comments-scraper").call(run_input={"startUrls": [{"url": "https://www.facebook.com/groups/874728723021553"}], "maxItems": 50, "onlyPostsNewerThan": "30 days", "fetchAllComments": true}). Inputs: startUrls (array of {url}, public facebook.com/groups/<id or username> links, max 100 groups, required), maxItems (integer, posts per group, default 100, 0 = all), viewOption (string: CHRONOLOGICAL | RECENT_ACTIVITY | TOP_POSTS | CHRONOLOGICAL_LISTINGS; logged-out visitors usually get the group's default order, CHRONOLOGICAL_LISTINGS returns only for-sale posts of buy/sell groups), search (string, keep posts whose text contains it, case-insensitive, matched on the feed), onlyPostsNewerThan / onlyPostsOlderThan (string, date 2026-04-20, date-time, or period like "30 days", "1 month"), includeComments (boolean, comments Facebook already includes in the feed, free, often empty), fetchAllComments (boolean, load each commented post's top-level comments), includeCommentReplies (boolean, also load replies; implies fetchAllComments), maxCommentsPerPost (integer, default 100), enrichMarketplaceListings (boolean, open each Marketplace listing for title, location, latitude/longitude), monitoringMode (boolean, return only posts not delivered in earlier runs), proxy (object, default Apify residential). Output per post: facebookUrl, inputUrl, facebookId, groupTitle, url, legacyId, id, text, attachedStoryText (reshares), time, timeSource, user {id, name, url, profilePicture}, feedbackId, reactionsCount, topReactionsCount, reactionLikeCount, reactionLoveCount, reactionCareCount, reactionHahaCount, reactionWowCount, reactionSadCount, reactionAngryCount, likesCount, commentsCount, sharesCount, attachments [{type, id, url, thumbnail, width, height, description, download_urls}], photoCount, additionalPhotoCount, topComments [{commentId, id, text, threadingDepth, parentCommentId, date, profileId, profileName, profilePicture, profileUrl, commentUrl, reactionsCount, repliesCount}], Marketplace posts only: isMarketplaceListing, marketplaceListingId, marketplaceUrl, marketplacePrice, marketplaceIsSold, marketplaceIsLive, marketplaceIsPending, marketplaceTitle, marketplaceLocation, marketplaceLatitude, marketplaceLongitude; listing-like text only: parsedPrice, parsedPriceText, parsedPricePeriod, parsedBedrooms, parsedBathrooms, parsedSquareFeet, parsedSquareMeters, parsedPhone, parsedPhones; scrapedAt. Pricing: pay per post (result) plus additional-data events per loaded comment/reply, enriched listing, or already-seen post in monitoring mode. Full API spec: https://apify.com/parsebird/facebook-group-posts-comments-scraper/api. Get your token: https://console.apify.com/settings/integrations.
What is Facebook Group Posts & Comments Scraper?
Public Facebook groups hold a lot of useful conversation: buy/sell and rental listings, local news, product questions, job leads and community feedback. Facebook Group Posts & Comments Scraper turns those groups into a clean dataset. Paste one or more group links, press Start, and get each post with its author, date, reactions, photos and, when you turn it on, every comment and reply Facebook shows to visitors.
It works as a Facebook group API alternative: there is no Facebook login, no cookies and no Graph API app to set up. Download the results as JSON, CSV, Excel or HTML, or read them through the Apify API.
What can Facebook Group Posts & Comments Scraper do?
- π§Ύ Scrape group posts in bulk. Up to 100 public groups per run, using group links with a numeric ID or a username, including m.facebook.com and web.facebook.com links.
- π¬ Full comment threads. Load each post's comments with author, date, link and reply count, and optionally the replies under every comment, nested with
threadingDepthandparentCommentId. - π Keyword filter. Keep only posts that mention a word or phrase, such as
condoorfor rent. - π
Date ranges. Keep posts newer than, older than or between two dates. Relative periods like
30 daysor1 monthwork too. - π·οΈ Marketplace listings. Posts that come from Facebook Marketplace get the listing price and status, and optionally the listing title, location and map coordinates.
- π Listing details from the text. On posts that read like a listing, the price (with rent period), bedrooms, bathrooms, floor area and phone numbers are pulled out of the author's own words into
parsed*fields. - π Only new posts. Monitoring mode remembers what earlier runs delivered and returns only new posts, so scheduled runs give you a clean feed of what's new.
- π Scheduling and integrations. Run every hour or day with Apify Schedules, and send posts to Google Sheets, Slack, Zapier, Make or a webhook with Apify integrations.
- π API access. Start runs and read results from your own code with the Apify API.
What data can you extract from Facebook groups?
| Field | Description |
|---|---|
groupTitle / facebookId / facebookUrl | Group name, numeric group ID and group link |
url / legacyId / id | Post link, numeric post ID and Facebook's story ID |
text / attachedStoryText | Post text; for reshares, attachedStoryText holds the original post's text |
time / timeSource | When the post was published (UTC) and where that time came from |
user | Author ID, name and profile picture |
reactionsCount and reaction*Count | Total reactions and the count per type: like, love, care, haha, wow, sad, angry |
commentsCount / sharesCount | Comment total (Facebook counts replies too) and shares |
attachments / photoCount / additionalPhotoCount | Photos and videos with download links, the total number of photos on the post, and how many of those were not included in attachments |
topComments | Comments and replies: text, author, date, comment link, reactions, reply count, depth |
marketplace* | Marketplace listing ID, link, price and sold/live/pending status; title, location and coordinates with enrichment |
parsed* | Price, rent period, bedrooms, bathrooms, square feet or meters, and phone numbers stated in the post text |
time is null when Facebook doesn't send a publish time for a post. timeSource is story when the time comes from the post's own timestamp, unverified when it was found elsewhere in the post data, and unknown when there is none.
How to scrape Facebook group posts and comments
- Open Facebook Group Posts & Comments Scraper and click Try for free.
- Paste one or more public Facebook group URLs, for example
https://www.facebook.com/groups/874728723021553. - Set Max posts per group.
- Optionally add a keyword or a date range.
- Turn on Add all comments (and Add comment replies if you need whole threads), or Add Marketplace listing location for buy/sell groups.
- Click Start, then download the posts from the Output tab as JSON, CSV, Excel or HTML.
How much does it cost to scrape Facebook groups?
This scraper uses pay-per-event pricing. You pay for each post saved, and a smaller amount for each extra item of data you ask for. Compute and residential proxy costs are included in these prices.
| Event | Free | Bronze | Silver | Gold |
|---|---|---|---|---|
Result: post saved (result) | $1.49 / 1,000 | $1.39 / 1,000 | $1.29 / 1,000 | $1.19 / 1,000 |
Additional data (additional-data) | $0.99 / 1,000 | $0.89 / 1,000 | $0.89 / 1,000 | $0.79 / 1,000 |
Additional data is charged for:
- each comment or reply loaded with Add all comments or Add comment replies;
- each Marketplace listing enriched with Add Marketplace listing location;
- each already-delivered post read again in monitoring mode, which is billed at this lower rate instead of as a result.
Comments from Add comments shown in the feed are free.
For example, on the Free plan 1,000 posts cost $1.49. 1,000 posts plus 5,000 loaded comments cost $1.49 + $4.95 = $6.44. Posts skipped by your keyword or date filters are not charged. Apify's free plan includes monthly platform credit you can use to try the scraper. Set a maximum cost per run in the run options and the scraper stops when it reaches it, without loading data it can't charge for.
Input
Add group links and options in the Input tab, or send JSON through the API.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
startUrls | array | Yes | β | Public Facebook group links (max 100) |
maxItems | integer | No | 100 | Posts per group; 0 = all Facebook shows |
viewOption | string | No | CHRONOLOGICAL | CHRONOLOGICAL, RECENT_ACTIVITY, TOP_POSTS, CHRONOLOGICAL_LISTINGS |
search | string | No | β | Keep posts whose text contains this phrase |
onlyPostsNewerThan | string | No | β | Date, date-time or period (30 days) |
onlyPostsOlderThan | string | No | β | Date, date-time or period |
includeComments | boolean | No | false | Comments Facebook includes in the feed (free, often empty) |
fetchAllComments | boolean | No | false | Load each post's top-level comments |
includeCommentReplies | boolean | No | false | Also load replies (turns comment loading on) |
maxCommentsPerPost | integer | No | 100 | Comments and replies per post |
enrichMarketplaceListings | boolean | No | false | Add listing title, location and coordinates |
monitoringMode | boolean | No | false | Return only posts not delivered in earlier runs |
proxy | object | No | Apify residential | Proxy settings |
Example: last 30 days with comments
{"startUrls": [{ "url": "https://www.facebook.com/groups/874728723021553" }],"onlyPostsNewerThan": "30 days","fetchAllComments": true,"maxItems": 50}
Example: a closed date range
{"startUrls": [{ "url": "https://www.facebook.com/groups/developerkaki" }],"onlyPostsNewerThan": "2026-10-01","onlyPostsOlderThan": "2026-10-08","maxItems": 500}
Example: rental listings with Marketplace location
{"startUrls": [{ "url": "https://www.facebook.com/groups/302792601187841" }],"search": "condo","enrichMarketplaceListings": true,"maxItems": 50}
Output example
A post with comments loaded (text shortened, image links cut):
{"facebookUrl": "https://www.facebook.com/groups/797518550594060","inputUrl": "https://www.facebook.com/groups/developerkaki","facebookId": "797518550594060","groupTitle": "Developer Kaki","url": "https://www.facebook.com/groups/developerkaki/posts/3004054629940430/","legacyId": "3004054629940430","id": "UzpfSTEwMDAwMTUyMTQ0OTIxNTpWSzozMDA0MDU0NjI5OTQwNDMw","text": "(Quoted from an absolutely BASED guy on LinkedIn)\n\nWe could remove 90% of software out there...","time": "2026-10-13T12:47:27.000Z","timeSource": "story","user": {"id": "100001521449215","name": "Wan Ardie","url": null,"profilePicture": "https://scontent.fkul15-1.fna.fbcdn.net/v/t39.30808-1/475653..."},"feedbackId": "ZmVlZGJhY2s6MzAwNDA1NDYyOTk0MDQzMA==","reactionsCount": 0,"topReactionsCount": 0,"reactionLikeCount": 0,"reactionLoveCount": 0,"reactionCareCount": 0,"reactionHahaCount": 0,"reactionWowCount": 0,"reactionSadCount": 0,"reactionAngryCount": 0,"likesCount": 0,"commentsCount": 1,"sharesCount": 0,"attachments": [],"photoCount": 0,"additionalPhotoCount": 0,"topComments": [{"commentId": "3004075089938384","id": "Y29tbWVudDozMDA0MDU0NjI5OTQwNDMwXzMwMDQwNzUwODk5MzgzODQ=","text": "what would more software engineers do with less software? An oxymoron don't you think?...","threadingDepth": 0,"parentCommentId": null,"date": "2026-10-13T13:09:03.000Z","profileId": "pfbid0314ufFKmWAW8r8iCW2bkGuKZieJZPq28gpfsqzAEeEW5h7JXiKkTEtD8WZVAToYwTl","profileName": "Daryl Phuah","profilePicture": "https://scontent.fkul10-2.fna.fbcdn.net/v/t1.6435-1/29425038...","profileUrl": null,"commentUrl": "https://www.facebook.com/groups/developerkaki/permalink/3004054629940430/?comment_id=3004075089938384","reactionsCount": 0,"repliesCount": 0}],"scrapedAt": "2026-10-13T13:14:06.000Z"}
A Marketplace listing post with enrichment adds fields like these:
{"groupTitle": "CEBU HOMES AND CONDO RENTALS","legacyId": "1677490737051347","isMarketplaceListing": true,"marketplaceListingId": "1128172069647463","marketplaceUrl": "https://www.facebook.com/marketplace/item/1128172069647463/","marketplacePrice": "PHP6,500,000","marketplaceIsSold": false,"marketplaceIsLive": true,"marketplaceIsPending": false,"marketplaceTitle": "5 beds 4 bathrooms β Flat","marketplaceLocation": "Lapu-Lapu City, PH-07","marketplaceLatitude": 10.312487830756,"marketplaceLongitude": 123.94856929779}
And a listing-like post gets the details stated in its text (illustrative example):
{"text": "3bd/2ba brick ranch for sale by owner. Asking $245,000 OBO. 1,450 sqft. Call or text (336) 555-0142","parsedPrice": 245000,"parsedPriceText": "$245,000","parsedPricePeriod": null,"parsedBedrooms": 3,"parsedBathrooms": 2,"parsedSquareFeet": 1450,"parsedSquareMeters": null,"parsedPhone": "+13365550142","parsedPhones": ["+13365550142"]}
Marketplace fields appear only on posts that come from a Marketplace listing, and parsed* fields only when the text states at least one of them. The Posts, Comments and Listings views in the Output tab show the most-used columns.
Use the Facebook Group Posts & Comments Scraper API
With the Apify API client for Python:
from apify_client import ApifyClientclient = ApifyClient("<YOUR_APIFY_TOKEN>")run = client.actor("parsebird/facebook-group-posts-comments-scraper").call(run_input={"startUrls": [{"url": "https://www.facebook.com/groups/874728723021553"}],"onlyPostsNewerThan": "7 days","fetchAllComments": True,"maxItems": 100,})for post in client.dataset(run["defaultDatasetId"]).iterate_items():print(post["time"], post["user"]["name"], post["commentsCount"], len(post["topComments"]))
With the Apify API client for JavaScript:
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });const run = await client.actor('parsebird/facebook-group-posts-comments-scraper').call({startUrls: [{ url: 'https://www.facebook.com/groups/302792601187841' }],search: 'for rent',enrichMarketplaceListings: true,maxItems: 100,});const { items } = await client.dataset(run.defaultDatasetId).listItems();items.forEach((p) => console.log(p.parsedPrice, p.parsedPricePeriod, p.marketplaceLocation, p.url));
See the API tab for HTTP endpoints, including a single call that runs the scraper and returns the dataset.
Use cases
- Real estate and rentals. Collect rental and for-sale listings from local groups with price, bedrooms, phone numbers and Marketplace location.
- Community and brand monitoring. Track what people say about a product, place or company in public groups, including the comment threads.
- Lead generation. Find people asking for services or recommendations in niche groups.
- Market and sentiment research. Analyse discussions, reactions and replies over a date range.
- Scheduled feeds. Combine monitoring mode with a schedule to get only new posts each day, sent to Slack or a sheet.
How it works
- The scraper looks up each group and reads its post feed the way a logged-out visitor sees it, three posts per page, newest first in most groups.
- Each post is checked against your date range and keyword, and posts outside them are skipped without charge.
- With comments turned on, it loads the comments (10 per request) and, with replies on, the replies under each comment.
- With Marketplace enrichment on, it opens each listing page for its title, location and coordinates.
- It reads listing details from the post text, saves the post and charges for it.
FAQ
Do I need a Facebook account or cookies? No. The scraper reads public groups the way a logged-out visitor sees them. Private groups can't be scraped; they are reported as failed in the run log.
Why doesn't topComments contain every comment?
commentsCount is Facebook's total and includes replies. Turn on Add comment replies to get replies as well. Facebook also hides some comments from logged-out visitors: in our tests a post showing 15 comments returned 14. Add comments shown in the feed is often empty, because Facebook rarely includes comments in the group feed; use Add all comments for reliable results.
Does the sort option change the order?
Facebook usually serves logged-out visitors the group's default order whatever you choose. The exception is CHRONOLOGICAL_LISTINGS (Listings only), which returns just the for-sale posts of buy/sell groups. When Facebook's listings feed is unavailable, the scraper reads the regular feed and keeps only the Marketplace listing posts, so you still get listings only.
How far back can I go?
Facebook shows logged-out visitors a limited recent window of each group. If onlyPostsOlderThan is further back than the feed reaches, the run stops after reading about 360 posts and asks you to use a more recent date.
How does the keyword filter work? Facebook's group search requires a login, so the scraper reads the feed and keeps posts whose text contains your phrase. A rare keyword in a busy group means many posts are read to find matches, which takes longer. Narrow the date range to speed it up.
How does monitoring mode work? The scraper stores the IDs of posts it delivered for each group (the last 5,000) in a named key-value store in your account. The next run returns only posts not in that list that are newer than the posts it already delivered, and stops once it reaches them. Older posts that an earlier run skipped because of its post limit are not treated as new. Already-delivered posts read again are billed as additional data, not as results.
Can I export the data? Yes. Download it as JSON, CSV, Excel, XML or HTML from the Output tab, or read it through the Apify API.
Something doesn't work. What should I do? Open an issue on the Issues tab with your input and the run link.
Is it legal to scrape Facebook groups?
This scraper collects only posts and comments that Facebook shows publicly to logged-out visitors. It does not log in or access private groups. Posts and comments contain personal data such as names and profile pictures, so make sure you have a lawful basis under the GDPR, CCPA or other laws that apply to you before storing or using it, and respect Facebook's terms. Read more in Apify's blog post on the legality of web scraping.
Other Facebook scrapers
- Facebook Public Group Posts Scraper β a lighter group posts scraper without comments
- Facebook Group Profile Scraper β group name, members, privacy and description
- Facebook User Posts Scraper β posts from public profiles and Pages
- Facebook Page Reviews Scraper β Page reviews and recommendations
- Facebook Media Downloader β download videos, reels and photos
- Facebook Page Video Downloader β all videos from a Page
- Meta | Facebook Ads Library Scraper β ads from the Meta Ad Library