Facebook Groups Scraper With Lead & Contact Finder
Pricing
$24.99/month + usage
Facebook Groups Scraper With Lead & Contact Finder
Scrape posts, comments, authors, timestamps, and engagement from public Facebook groups. Ideal for research, social listening, trend analysis, and community insights with structured output.
Pricing
$24.99/month + usage
Rating
5.0
(1)
Developer
Scraper Engine
Maintained by CommunityActor stats
0
Bookmarked
12
Total users
0
Monthly active users
2 days ago
Last modified
Categories
Share
Facebook Group Lead Scraper — Emails, Phones & Business Intent
Facebook Groups Scraper With Lead & Contact Finder scrapes posts from public Facebook groups and pulls contact leads straight out of each post's text — emails, phone numbers, websites, and social handles like @handle, t.me, and wa.me — plus a business-intent flag for buy, sell, hiring, and offering signals. Results ship as structured JSON, ready for a CRM or spreadsheet with no HTML parsing. Add your group URLs and start a run to see real leads.
What is Facebook Groups Scraper With Lead & Contact Finder?
Facebook Groups Scraper With Lead & Contact Finder is an Apify Actor that scrapes public Facebook group feeds post by post and regex-extracts contact and business-intent signals from each post's text, returning one JSON row per post. No Facebook account or login is required for public groups — an optional session cookie is only needed to reach a private or closed group you already belong to. It's built for lead-generation teams, growth marketers, and developers who need structured Facebook group leads without manually reading posts.
What Facebook group lead data is publicly available to scrape?
Anyone who opens a public group sees its posts, authors, and engagement counts — that's what this Actor reads. Contacts aren't a Facebook field; they only appear when a member types them into a post.
| Data Category | Public group | Session cookie |
|---|---|---|
| Post text, author, timestamp | Yes | — |
| Likes, shares, comments | Yes | — |
| Photo attachments | Yes | — |
| Contacts typed into text | Yes, if included | — |
| Private / closed group posts | No | Required |
| Member email/phone directory | Never exposed | Never |
Facebook Groups Scraper With Lead & Contact Finder only returns public data — nothing behind a login wall, unless you supply your own cookie for a private group you belong to.
What data can I extract with Facebook Groups Scraper With Lead & Contact Finder?
Every post comes back with its content, its engagement counts, and — the Actor's core job — any contact or intent signal found in its text.
📇 Lead & contact fields
| Field Name | Description |
|---|---|
emails | Email addresses found in the post text, including light de-obfuscation of "name (at) domain dot com". Empty array if none. |
phones | Phone numbers found in the text, digit-validated and normalized to a leading + where possible. |
websites | URLs and bare domains shared in the text (Facebook's own links are excluded). |
socialHandles | @handle mentions and links to t.me, wa.me, WhatsApp, Telegram, Instagram, and similar. |
hasContact | true when any email, phone, website, or social handle was found in the post. |
businessIntent | true when the text matches a buy/sell/hiring/offering/promotion signal. |
businessIntentSignals | Which intent categories matched, e.g. ["selling", "offering_service"]. |
📝 Post content & engagement fields
| Field Name | Description |
|---|---|
text | The post's full message text. |
url | Direct permalink to the post. |
time / date | ISO 8601 post timestamp (date mirrors time). |
scrapedAt | ISO 8601 timestamp of when the row was scraped. |
likesCount | Total reaction count on the post. |
sharesCount | Number of times the post was shared. |
commentsCount | Total comment count on the post. |
topReactionsCount | Sum of the reaction breakdown below. |
reactionLikeCount / reactionLoveCount / reactionHahaCount / reactionWowCount / reactionSadCount / reactionAngryCount / reactionCareCount | Per-reaction-type counts. |
attachments | Array of photo/album objects (thumbnail, full image URL, dimensions, OCR caption when available). |
topComments | Up to 2 top-level comments, each with author, text, likes, and timestamp. |
👤 Author & group metadata fields
| Field Name | Description |
|---|---|
user | Author object: id, name, profileUrl, profilePicture. |
facebookUrl / inputUrl | The group URL this post was scraped from. |
groupTitle | The group's display name. |
facebookId | The group's numeric Facebook ID. |
id / legacyId | Facebook's internal and legacy post identifiers. |
feedbackId | Internal identifier for the post's feedback/reactions object. |
pageAdLibrary | { is_business_page_active, id } — present on every row, populated when the group is tied to a business page. |
🤖 Add-on: Need additional Facebook data?
If you need to find groups before mining them for leads, run Facebook Groups Search Scraper first to discover public groups by keyword. To learn what a group is about before you commit a run to it, Facebook Group Profile Scraper: Rules & Topics Extractor pulls its rules, topics, and category. And if you need full-resolution photos, OCR text, or one-time group profile metadata alongside the same posts, Facebook Groups Posts & Media Scraper covers that without the lead-extraction layer.
How does Facebook Groups Scraper With Lead & Contact Finder differ from the official Facebook API?
Meta's Graph API for Groups only returns data for groups your own registered app administers and has been approved to access — it has no endpoint for browsing an arbitrary public group's posts or extracting contact information from post text. Facebook Groups Scraper With Lead & Contact Finder works on any public group URL and does the contact/intent extraction itself.
| Feature | Meta Graph API | Facebook Groups Scraper With Lead & Contact Finder |
|---|---|---|
| Access scope | Only groups your registered app administers | Any public Facebook group URL |
| Contact/lead extraction | Not offered — no endpoint returns contacts from post text | Built-in regex extraction of emails, phones, websites, social handles |
| Business-intent detection | Not offered | Built-in buy/sell/hiring/offering signals |
| Approval process | Requires Meta App Review + business verification | None — provide a group URL and run |
| Login requirement | OAuth app token tied to an approved Facebook app | None for public groups; optional cookie for private groups |
| Output consistency | Raw Graph API JSON scoped to approved permissions | Normalized JSON schema with keyword/date filters applied |
Use the Graph API if you operate an approved app scoped to groups you administer. Use Facebook Groups Scraper With Lead & Contact Finder to mine public groups you don't own or manage, without an app-review process.
How to use Facebook Groups Scraper With Lead & Contact Finder
This Actor runs on Apify — no separate signup or API key is needed to start a run from the Actor's page.
- Open Facebook Groups Scraper With Lead & Contact Finder on its Apify Store page and click Start.
- Add one or more public Facebook group URLs to
leadGroupUrls— this is the input that drives the run. - Optionally set
includeKeywords,excludeKeywords, or turn ononlyWithContactsto target the leads you want. - Set
maxPostsToScanandfeedSortOrder, then start the run. - Open the Output tab and export results as JSON, CSV, or Excel.
How to scale to bulk Facebook group lead extraction
leadGroupUrls is a list, so you can add every group you want mined into a single run instead of starting one run per group. One caveat worth knowing: maxPostsToScan is currently enforced as a shared cap across all URLs in that run, not per group individually — with several groups and a low cap, groups processed later can end up with fewer posts than the first ones. For a guaranteed count per group, run each group URL as its own Actor run.
What can you do with Facebook group lead data?
- A growth marketer prospecting small businesses uses
emailsandphonespulled from buy/sell group posts to build a cold-outreach list before verifying each contact. - A local reseller monitoring marketplace-style groups uses
businessIntentSignalsto spot "selling" posts andsocialHandles(wa.melinks) to message sellers directly on WhatsApp. - A recruiter scanning niche interest groups uses posts flagged
"hiring"inbusinessIntentSignals, plusemails, to shortlist candidates posting their availability. - A market analyst tracking a community uses
textandbusinessIntentto measure how often members mention promotions, discounts, or competitor products. - An AI agent ingesting
textandhasContactinto a RAG pipeline can filter to only the posts with a verified contact channel before auto-drafting personalized outreach messages.
How does Facebook Groups Scraper With Lead & Contact Finder handle rate limits and blocking?
Every request goes through Apify's residential proxy pool, which the Actor enforces regardless of the proxy input provided — no datacenter IPs are used. Before paginating, it warms up a guest session against Facebook's homepage so requests carry a guest cookie, which reduces how often Facebook serves the login wall instead of the group feed. Each GraphQL page request retries on failure, and if a group returns a login wall, CSRF failure, or rate-limit response, the Actor detects and logs the specific reason instead of silently returning nothing. At the run level, it retries with fresh residential sessions (up to 10 attempts) until the requested post count is reached, the feed is exhausted, or repeated attempts return no data. It does not solve CAPTCHAs; a persistent login wall on a private group means a valid session cookie is required.
⬇️ Input
All 11 input fields are optional — the Actor works with leadGroupUrls alone, using its own defaults for everything else.
| Parameter | Required | Type | Description | Example Value |
|---|---|---|---|---|
leadGroupUrls | No | array | Public Facebook group URLs to mine for leads. Add one or more. Only public groups are supported without authentication. | ["https://www.facebook.com/groups/cheapmealideas/"] |
maxPostsToScan | No | integer | Maximum number of posts to scan in each group while hunting for leads. Leave empty to scan as many as possible. Filters (keywords / contacts) are applied while paginating. | 50 |
feedSortOrder | No | string (enum) | How posts are sorted in the group feed: CHRONOLOGICAL, RECENT_ACTIVITY, TOP_POSTS, CHRONOLOGICAL_LISTINGS (Buy/Sell groups). | "CHRONOLOGICAL" |
includeKeywords | No | array | Keep only posts whose text contains ANY of these keywords (case-insensitive). Leave empty to keep all posts. | ["for sale", "whatsapp", "dm me"] |
excludeKeywords | No | array | Drop posts whose text contains ANY of these keywords (case-insensitive). Applied after include keywords. | ["scam", "admin"] |
onlyWithContacts | No | boolean | When enabled, only posts where at least one email, phone, website, or social handle was found (hasContact = true) are returned. | true |
postTextFilter | No | string | Filter posts by a substring of their text. Client-side text filter over the scanned feed, not a Facebook search. | "" |
postYearFilter | No | string | Keep only posts from a specific year. Use together with the post text filter above. | "" |
postsNewerThan | No | string | Stop keeping posts older than this date. Absolute: YYYY-MM-DD. Relative: "7 days", "2 weeks", "1 month", "1 year". | "30 days" |
proxyConfiguration | No | object | Proxy configuration. This actor uses Apify residential proxies for reliable access to public group feeds. | { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"] } |
sessionCookie | No | string (secret) | Optional Facebook session cookies (must include c_user and xs) for private/closed groups. Format: c_user=...; xs=...; datr=...; fr=.... Use a secondary account. Leave empty for public groups. | "" |
Example input
{"leadGroupUrls": ["https://www.facebook.com/groups/cheapmealideas/"],"maxPostsToScan": 50,"feedSortOrder": "CHRONOLOGICAL_LISTINGS","includeKeywords": ["for sale", "whatsapp", "dm me"],"excludeKeywords": ["scam", "admin"],"onlyWithContacts": true,"postTextFilter": "","postYearFilter": "","postsNewerThan": "30 days","proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"]},"sessionCookie": ""}
⬆️ Output
Each row is one post, enriched with lead/contact fields, in typed and normalized JSON with a consistent schema across runs. Export as JSON, CSV, or Excel from the Apify dataset. Every row is billed once through the row_result charged event; diagnostic conditions (login walls, rate limits) are logged only and never appear as billed dataset rows.
Example output
{"facebookUrl": "https://www.facebook.com/groups/cheapmealideas/","url": "https://www.facebook.com/groups/cheapmealideas/posts/1234567890123456/","time": "2026-07-10T14:02:11.000Z","date": "2026-07-10T14:02:11.000Z","scrapedAt": "2026-07-25T09:15:03.000Z","user": {"id": "100004512873690","name": "Jane Doe","profileUrl": "https://www.facebook.com/jane.doe.homemademeals","profilePicture": "https://scontent.xx.fbcdn.net/v/t39.30808-6/jane_profile.jpg"},"text": "Selling homemade meal preps this week! DM me or WhatsApp wa.me/15551234567. Orders: jane.meals@gmail.com","topReactionsCount": 14,"feedbackId": "ZmVlZGJhY2s6MTIzNDU2Nzg5MA==","reactionLikeCount": 10,"reactionLoveCount": 3,"reactionHahaCount": 0,"reactionWowCount": 1,"reactionSadCount": 0,"reactionAngryCount": 0,"reactionCareCount": 0,"id": "UG9zdDoxMjM0NTY3ODkwMTIzNDU2","legacyId": "1234567890123456","attachments": [{"thumbnail": "https://scontent.xx.fbcdn.net/v/t39.30808-6/meal_thumb.jpg","__typename": "Photo","is_playable": false,"image": {"uri": "https://scontent.xx.fbcdn.net/v/t39.30808-6/meal_full.jpg","height": 720,"width": 960},"id": "9876543210","__isMedia": "Photo","photo_cix_screen": null,"copyright_banner_info": null,"owner": { "__typename": "User", "id": "100004512873690" },"ocrText": null}],"likesCount": 12,"sharesCount": 1,"commentsCount": 3,"topComments": [{"commentUrl": "https://www.facebook.com/groups/cheapmealideas/permalink/1234567890123456/?comment_id=987654321","id": "Y29tbWVudDo5ODc2NTQzMjE=","feedbackId": "ZmVlZGJhY2s6OTg3NjU0MzIx","date": "2026-07-10T15:20:00.000Z","text": "Interested! Sent you a message.","profileUrl": "https://www.facebook.com/mark.smith.buyer","profilePicture": "https://scontent.xx.fbcdn.net/v/t39.30808-6/mark_profile.jpg","profileId": "100009988776655","profileName": "Mark Smith","likesCount": "2","threadingDepth": 0}],"facebookId": "1478523690123456","groupTitle": "Cheap Meal Ideas","pageAdLibrary": { "is_business_page_active": false, "id": "1478523690123456" },"inputUrl": "https://www.facebook.com/groups/cheapmealideas/","emails": ["jane.meals@gmail.com"],"phones": ["+15551234567"],"websites": [],"socialHandles": ["wa.me/15551234567"],"businessIntent": true,"businessIntentSignals": ["selling", "offering_service"],"hasContact": true}
How does it work?
Facebook Groups Scraper With Lead & Contact Finder sends requests directly to Facebook's own GraphQL feed endpoint through an Apify residential proxy, so requests come from a real residential IP rather than a datacenter one. It first loads the group's public page to pull the CSRF tokens and pagination values Facebook's own frontend uses, then pages through the feed using the same request shape a browser would send. Each returned post is normalized into a stable JSON shape regardless of shifts in Facebook's internal GraphQL response structure, using multiple fallback paths so the schema keeps working through Facebook UI changes. The post's free text is then run through a local regex engine to pull out emails, phones, websites, social handles, and business-intent signals — no separate API call, no login for public groups, and nothing returned beyond what the group's public feed already shows.
Integrations
Facebook Groups Scraper With Lead & Contact Finder runs on the Apify platform, so it works with the same API, SDKs, and automation tools as any other Apify Actor.
Calling Facebook Groups Scraper With Lead & Contact Finder programmatically
from apify_client import ApifyClientclient = ApifyClient("<YOUR_APIFY_API_TOKEN>")run = client.actor("<YOUR_USERNAME>/facebook-groups-scraper-with-lead-contact-finder").call(run_input={"leadGroupUrls": ["https://www.facebook.com/groups/cheapmealideas/"],"onlyWithContacts": True,"maxPostsToScan": 50,})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item["emails"], item["phones"])
Works in Go, Ruby, Node.js, cURL — any language that can make an HTTP request.
No-code tools (n8n, Make, LangChain)
In n8n, use the Apify node (or an HTTP Request node against the Actor's run endpoint) configured with this Actor's ID and your API token to trigger runs and pull dataset items into your workflow. In Make, the Apify app's "Run Actor" module works the same way. Because output is typed JSON with consistent field names, it also drops directly into a LangChain document loader or custom agent tool with no HTML parsing step.
Is it legal to scrape Facebook group leads?
Scraping publicly visible Facebook group posts is generally permitted — you're collecting content already shown to anyone who can view the group, the same way a human visitor would read it. Facebook Groups Scraper With Lead & Contact Finder only returns data already shown in the public group feed (or, with your own session cookie, a private group you already belong to); it does not bypass any login wall on its own. Because the leads it surfaces — emails, phone numbers, social handles — are personal data, storing or using them falls under GDPR (EU/UK) and CCPA (California): you need a lawful basis to store and process that data, and individuals may have rights to access or deletion requests. Consult legal counsel if your use case involves bulk storage of personal data.
Frequently asked questions
What Facebook group lead fields does Facebook Groups Scraper With Lead & Contact Finder return?
The top fields are emails, phones, websites, socialHandles, and businessIntent — see the full fields table above for all 34.
Does Facebook Groups Scraper With Lead & Contact Finder require a Facebook account or login?
No, for public groups — it scrapes logged-out through a residential proxy. A sessionCookie (c_user + xs) is only needed to reach a private or closed group you already belong to.
How many posts can I extract in one run?
There's no hard maximum coded into the Actor. maxPostsToScan sets the cap (falls back to 20 if left empty), and the run keeps paginating and retrying with fresh residential sessions until it hits that cap or the feed runs out of posts to return.
What happens if a group is private, empty, or blocks the scrape?
If Facebook serves a login wall instead of the group feed, the run logs the specific reason (e.g. an invalid or missing session cookie) and returns zero rows for that URL rather than guessing or fabricating posts. The same applies to CSRF failures and rate-limit responses — each is detected and logged by name.
Can I scrape multiple Facebook groups at once?
Yes — leadGroupUrls accepts an array, and every URL in it is scraped in the same run. One honest caveat: maxPostsToScan is currently applied as a shared cap across all URLs in that run rather than per group, so with several groups and a low cap, groups processed later in the run can come back with fewer posts than the first ones.
How does the lead contact finder actually work?
It runs a local regex engine (src/contacts.py) over each post's own text — it does not look up a member's profile, and Facebook does not expose member emails or phone numbers anywhere the Actor can reach. It matches email patterns (with light "at"/"dot" de-obfuscation), digit-validated phone numbers, URLs and bare domains, @handles, and messaging links (t.me, wa.me), plus keyword patterns for buy/sell/hiring/offering intent. Because it only surfaces what a member chose to type, coverage is genuinely sparse: most posts contain no contact at all, and empty arrays mean "none found," never a fabricated value.
Does Facebook Groups Scraper With Lead & Contact Finder work with Claude, ChatGPT, and other AI agent tools?
It doesn't run its own MCP server, but it's callable as a standard HTTP endpoint via the Apify API from any agent framework that can make a REST call — see Integrations above.
What makes this different from a plain Facebook group post scraper?
Unlike a plain post scraper, every post's text is run through a local regex engine before it lands in your dataset, adding emails, phones, websites, socialHandles, hasContact, businessIntent, and businessIntentSignals on top of the base post fields — no separate enrichment step needed.
Does Facebook Groups Scraper With Lead & Contact Finder return data in a format LLMs can use directly?
Yes. Typed, normalized JSON with consistent field names across runs — no HTML parsing, no selectors. Pass it directly to an LLM prompt, index it into a vector store, or feed it to an agent tool.
What happens when Facebook changes its layout or anti-bot system?
The Actor is maintained, and the output schema is designed to stay stable: post normalization tries multiple fallback paths for each field, and the query/document-ID discovery logic tries several patterns so it keeps working through Facebook frontend changes. No specific update turnaround time is promised.
Can I use Facebook Groups Scraper With Lead & Contact Finder without managing proxies or browser infrastructure?
Yes — every run is automatically routed through Apify's residential proxy pool; there's no browser to install and no proxy list to maintain yourself.
Which fields work best for AI training data and RAG indexing?
For RAG, index text as the primary content field, with emails, phones, websites, and socialHandles attached as structured metadata alongside each chunk. For training data, hasContact, businessIntent, and businessIntentSignals return as consistently typed booleans and arrays across every record, with no free-form HTML to clean up first.
Related scrapers
| Scraper | What it extracts |
|---|---|
| Facebook Groups Search Scraper | Public groups by keyword, with member counts |
| Facebook Group Profile Scraper: Rules & Topics Extractor | A group's rules, topics, and category |
| Facebook Groups Posts & Media Scraper | Posts with full-res photos, OCR, group metadata |
| Facebook Group Post Scraper | Plain post and engagement data |
| Facebook Marketplace Scraper | Listing titles, prices, seller info |
| Extract Emails, Contacts, & Socials from Any Website | Email/contact discovery on any platform |
Your feedback
Found a bug or a field that doesn't match what's documented here? Let us know via the Actor's issue tracker on its Apify Store listing so it can get fixed — active maintenance keeps this Actor's output reliable for everyone using it.