Facebook Groups Search Scraper With Group Profile Details
Pricing
from $2.99 / 1,000 results
Facebook Groups Search Scraper With Group Profile Details
π Facebook Groups Search Scraper finds and extracts public group results from Facebook search β names, member counts, categories, links & snippets. π Ideal for market research, community discovery, social listening, and lead prospecting. βοΈ Use responsibly and per platform terms.
Pricing
from $2.99 / 1,000 results
Rating
0.0
(0)
Developer
SimpleAPI
Maintained by CommunityActor stats
7
Bookmarked
221
Total users
117
Monthly active users
4 days ago
Last modified
Categories
Share
Facebook Groups Search Scraper β Profiles, Members and Activity
Facebook Groups Search Scraper With Group Profile Details turns a list of keywords or direct group URLs into a structured directory of public Facebook groups. Each record pairs discovery data β the keyword or link that surfaced the group β with profile details pulled from the same About-page fetch: description, discoverability setting, visibility, member count, and posting frequency. Community managers, lead-gen marketers, and market researchers use it to map every group around a topic in one run, with duplicates found under multiple keywords merged automatically into a single row.
What is Facebook Groups Search Scraper With Group Profile Details?
Facebook Groups Search Scraper With Group Profile Details is an Apify Actor that discovers public Facebook groups by keyword (via DuckDuckGo) or direct group URL, then extracts each group's public About-page profile in the same request β no separate enrichment step, no Facebook login. Results are returned as structured JSON, one row per unique group.
- Discovers groups by free-text keyword, by pasting direct group URLs, or by mixing both in a single run
- Extracts group description (
groupDescription), discoverability phrasing (discoverabilityText), and visibility (visibility) straight from the About page - Parses numeric stats β
memberCountNumeric,postsPerDayNumeric,postsPerMonthNumericβ out of the raw text fields so results can be sorted and filtered directly - Merges the same group into one row when it surfaces under two or more keywords, tagging it with every keyword that found it
- Automatically escalates to a backup connection when a request gets blocked, without any manual proxy setup
- Exports to JSON, CSV, or any format the Apify dataset supports
One honest limitation: keyword discovery is powered by DuckDuckGo search rather than Facebook's own search index, so a keyword only surfaces groups DuckDuckGo has indexed under that term. If you already know a group's URL, pasting it directly always profiles it regardless of search indexing.
What data can I extract with Facebook Groups Search Scraper With Group Profile Details?
Every run returns one row per unique group with the following fields:
| Field | Example Value | Use Case |
|---|---|---|
id | "123456789012345" | Stable group ID for deduplication and joins with other datasets |
name | "BMW Enthusiasts Worldwide" | Group display name for lists and reports |
url | "https://www.facebook.com/groups/bmwenthusiasts/" | Canonical link to open, join, or share the group |
sourceType | "keyword" | Flags whether the group came from a keyword search or a pasted URL |
foundUnderKeywords | ["bmw", "tesla"] | Every keyword/link label that surfaced this group, after merging |
query | "bmw" | Backward-compatible field: first keyword/label that found the group |
groupDescription | "A community for BMW owners and enthusiasts..." | Quick relevance check without opening the group |
discoverabilityText | "Anyone can find this group" | Signals how easily new members can find the group |
visibility | "Public" | Filters public vs. private groups |
memberInfo | "22,345 total members" | Human-readable member count |
memberCountNumeric | 22345 | Sortable/filterable numeric member count |
postFrequency | "5.2 posts a day" | Human-readable activity level |
postsPerDayNumeric | 0 | Numeric daily post count for sorting |
postsPerMonthNumeric | 156 | Numeric monthly post count for sorting |
profilePictureUri | "https://scontent.xx.fbcdn.net/v/t1.6435-9/...jpg" | Group image for previews and reports |
type | "Group" | Static entity-type label |
viewerJoinState | "CAN_JOIN" | Whether the group currently accepts new members |
scrapedAt | "2026-07-18T12:00:00Z" | UTC timestamp for tracking data freshness |
Group profile details
groupDescription and discoverabilityText come from the group's About page β the same og:description meta tag and privacy/discoverability copy Facebook shows visitors β with visibility and viewerJoinState alongside them. Together they let you vet a group without opening it: is it public, is it easy to find, can you actually join, and what is it about. The numeric fields (memberCountNumeric, postsPerDayNumeric, postsPerMonthNumeric) turn free-text member/activity counts into sortable numbers, so a reader can rank a list of 200 groups by size or posting activity in one pass instead of reading each row.
Discovery and targeting fields
sourceType, foundUnderKeywords, and query record how each group was found. sourceType separates keyword discoveries from directly pasted URLs; foundUnderKeywords lists every keyword that surfaced a group after deduplication, which is what lets you trace a single merged row back to a multi-keyword campaign. These fields are what you filter and segment on when mapping an entire topic or niche rather than a single group.
Why not build this yourself?
Facebook does not provide a public API for keyword-based group search. The Graph API only returns groups an authenticated app or user already manages β it has no endpoint for discovering public groups by search term, which is the core job of this Actor. Building an equivalent yourself means reverse-engineering group discovery through a third-party search engine, then scraping and parsing each result's About page β and keeping both working as markup and block signals change.
In practice that means maintaining: a search-engine token flow (this Actor uses DuckDuckGo's vqd handshake and paginated d.js results) with retry/backoff on 403/429/503 and non-standard 202 responses; a proxy escalation path that steps from no proxy to a datacenter pool to a residential pool when blocked; and a set of HTML/regex extractors for group ID, title, image, privacy label, member count, post frequency, description, and discoverability text β each with a fallback pattern since Facebook doesn't expose these consistently in every group's markup. All of that is what this Actor already runs, so a solo build mainly duplicates existing, tested plumbing rather than adding capability.
If you only ever need to profile groups whose URLs you already have, a lightweight direct-fetch script can be enough. If you need to discover groups by topic at any volume, across multiple keywords, with automatic dedup and connection fallback, that's what this Actor is for.
How to use data extracted from Facebook?
Community and lead-gen marketers
Run the Actor with the keywords that describe your niche (e.g. bmw, tesla, photography), leave mergeDuplicateGroups on, and export the deduped table. Sort by memberCountNumeric and postsPerDayNumeric to prioritize active, sizeable communities, then use groupDescription and visibility to shortlist the groups worth joining or pitching before spending time inside Facebook itself.
Agencies doing group prospecting
Agencies scouting Facebook groups on behalf of clients can run the same keyword set on a recurring basis and diff the output against the previous run's id values to spot newly created or newly discoverable groups in a niche, building a standing prospecting list without manually re-searching Facebook for every client.
Market research and intelligence
Feed a batch of category keywords in one run (e.g. multiple competing brand names or topic variants) and use foundUnderKeywords plus memberCountNumeric to see which keywords surface the largest, most active communities β a quick read on where audience attention concentrates in a niche without opening a single group manually.
AI agents and automated pipelines
Because input and output are both plain JSON, an agent can call this Actor as a tool to resolve a topic into a ranked list of real Facebook groups, then feed name, groupDescription, and memberCountNumeric into a downstream summarization or lead-scoring step β no group-URL discovery step required upstream.
πΌ Input sample
The Actor takes four inputs, none of them required.
| Parameter | Required | Type | Description | Example Value |
|---|---|---|---|---|
searchTargets | No | array | Keywords to discover groups, or direct Facebook group URLs to profile β mix both in one run. Also accepts the base field name startUrls. | ["bmw", "tesla"] |
maxGroupsPerKeyword | No | integer | How many groups to collect per keyword (1β500, default 100). Does not apply to direct URLs β all of those are always profiled. Also accepts maxItems. | 100 |
mergeDuplicateGroups | No | boolean | Merges a group found under 2+ keywords into one row tagged with every keyword that found it. Default true. Turn off to get one raw row per keyword match instead. | true |
proxyConfiguration | No | object | Optional connection/proxy settings. Leave default for best compatibility. | { "useApifyProxy": false } |
{"searchTargets": ["bmw", "tesla", "https://www.facebook.com/groups/1234567890/"],"maxGroupsPerKeyword": 50,"mergeDuplicateGroups": true,"proxyConfiguration": { "useApifyProxy": false }}
Common pitfall: maxGroupsPerKeyword only caps results per keyword β it does not apply to entries in searchTargets that are already full group URLs, since those are profiled directly regardless of the limit. If your run mixes a lot of keywords with a high maxGroupsPerKeyword, expect the total row count (pre-merge) to scale with both, not just one.
π½ Output sample
Output is typed, normalized JSON with a consistent 18-field schema per row, exportable as JSON or CSV directly from the Apify dataset.
{"id": "123456789012345","name": "BMW Enthusiasts Worldwide","url": "https://www.facebook.com/groups/bmwenthusiasts/","sourceType": "keyword","foundUnderKeywords": ["bmw"],"query": "bmw","groupDescription": "A community for BMW owners and enthusiasts to share tips, photos, and events.","discoverabilityText": "Anyone can find this group","visibility": "Public","memberInfo": "22,345 total members","memberCountNumeric": 22345,"postFrequency": "5.2 posts a day","postsPerDayNumeric": 0,"postsPerMonthNumeric": 156,"profilePictureUri": "https://scontent.xx.fbcdn.net/v/t1.6435-9/...jpg","type": "Group","viewerJoinState": "CAN_JOIN","scrapedAt": "2026-07-18T12:00:00Z"}
How do you filter and target specific groups?
This Actor's targeting axis is keyword vs. direct URL, plus two controls over volume and duplication. Use free-text keywords in searchTargets when you're mapping a topic and don't yet know which groups exist β the Actor searches "<keyword> facebook group" and profiles every match it discovers, up to maxGroupsPerKeyword. Use direct group URLs when you already know the exact groups you want profiled β they bypass discovery entirely and are always fetched in full, regardless of the maxGroupsPerKeyword setting.
maxGroupsPerKeyword (1β500, default 100) is your volume control per keyword β raise it for broad niche mapping, lower it for a fast, narrow check. mergeDuplicateGroups controls how overlapping keywords resolve: on (default), the same group found under multiple keywords collapses into one row tagged with every keyword that matched it; off, you get one raw row per keyword match, useful when you need to audit exactly which keyword produced which result.
Broad niche mapping, deduped:
{ "searchTargets": ["bmw", "tesla", "porsche"], "maxGroupsPerKeyword": 300, "mergeDuplicateGroups": true }
Profiling known groups only, no discovery:
{ "searchTargets": ["https://www.facebook.com/groups/bmwenthusiasts/", "https://www.facebook.com/groups/teslaowners/"] }
Per-keyword audit trail, duplicates kept separate:
{ "searchTargets": ["bmw", "tesla"], "maxGroupsPerKeyword": 50, "mergeDuplicateGroups": false }
βΆοΈ Want to try other Facebook scrapers?
| Scraper Name | What it extracts |
|---|---|
| Facebook Group Profile Scraper | Deep single-group profile β description, creation date, admins/moderators β from a known group URL, username, or ID |
| Facebook Groups Scraper: Sentiment & Lead Analysis | Posts scraped from inside public groups, with optional AI sentiment, emotion, and lead-intent scoring |
| Facebook Groups Posts Scraper: with Post Analytics | Post-level engagement analytics from monitored groups |
| Facebook User Search Scraper: Related Profiles & Pages | Keyword search across Facebook users, pages, and groups combined |
| LinkedIn Company Scraper: Search By Name, Keyword or URL | Comparable keyword/name-based company discovery on LinkedIn |
| Instagram Related Hashtag Stats Scraper By Keyword Search | Comparable keyword-driven discovery of related Instagram hashtags and stats |
How to extract Facebook data programmatically
This Actor runs as a standard Apify Actor call: one API call with your input JSON, authenticated with your Apify API token, returns a dataset of structured JSON rows.
Python example
from apify_client import ApifyClientclient = ApifyClient("<APIFY_API_TOKEN>")run = client.actor("SimpleAPI/facebook-groups-search-scraper-with-group-profile-details").call(run_input={"searchTargets": ["bmw", "tesla"],"maxGroupsPerKeyword": 100,"mergeDuplicateGroups": True,})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item["name"], item["memberCountNumeric"], item["groupDescription"])
Export to spreadsheets or CRM
Export the dataset directly as CSV from the Apify Console or API, then map name, url, memberCountNumeric, groupDescription, and foundUnderKeywords to columns in your spreadsheet or CRM import template β one row per unique group, ready for outreach lists or reporting without additional cleanup.
Is it legal to scrape Facebook groups?
Yes β this Actor only reads publicly accessible Facebook group About pages, the same information visible to any visitor without logging in. Group directory listings like name, description, and member/activity counts exist to be publicly discoverable, which is why search engines index them in the first place. That said, if your use of the data involves storing or processing information that could identify individuals (for example, group names or descriptions that reference people), GDPR and CCPA rules on lawful basis, storage limits, and deletion rights still apply. Consult legal counsel for commercial applications involving bulk storage of personal data.
β FAQ
What happens if a group is deleted, renamed, or goes private after it's scraped?
The dataset reflects the group's About page exactly as it appeared at the time in scrapedAt. There is no automatic re-check β if you need current status, re-run the Actor with the same searchTargets or group URLs.
Can I get member and activity stats along with the group records?
Yes. memberInfo/memberCountNumeric and postFrequency/postsPerDayNumeric/postsPerMonthNumeric are parsed from the same About-page fetch used for the rest of the profile β no extra request or separate run needed.
How accurate is the member count and activity data?
The Actor returns the numbers exactly as they appear on the group's public About page at request time. Accuracy depends on how current Facebook's own displayed counts are; re-run the Actor periodically if you need up-to-date figures for a tracked list.
How many groups can I get per run?
Up to maxGroupsPerKeyword (1β500, default 100) per keyword, and all matching groups for any direct URLs you provide. There is no separate cap on total groups across a whole run β the total scales with how many keywords and URLs you submit.
How does keyword search differ from pasting direct group URLs?
Keywords trigger discovery β the Actor searches for "<keyword> facebook group" and profiles what it finds, up to your maxGroupsPerKeyword limit. Direct URLs skip discovery entirely: every URL you paste is always profiled in full, unaffected by that limit. You can mix both in the same searchTargets list.
Does merging duplicate groups cost extra requests?
No. Every keyword and URL is fetched first, exactly as if merging were off; deduplication by group ID (or normalized URL) happens afterward as a pure post-processing pass over data already collected.
Does this Actor work with Claude, ChatGPT, and AI agent frameworks?
It's callable as a standard Apify API endpoint, so any agent framework that can make an authenticated HTTP call can invoke it as a tool and consume the resulting JSON dataset.
How does this compare to other Facebook group scrapers in this collection?
Facebook Group Profile Scraper goes deeper on a single known group (admins, creation date) but requires you to already have its URL; this Actor's distinct job is turning a keyword into a list of groups in the first place, with lighter profile detail attached. Facebook Groups Scraper: Sentiment & Lead Analysis works one level down, on posts inside groups, rather than on the group directory itself.
Can I use this without a Facebook API key or developer account?
Yes. No Facebook login, API key, or developer account is required β the Actor only needs your searchTargets input and, optionally, your own proxy configuration.
Conclusion
Facebook Groups Search Scraper With Group Profile Details turns keywords or group URLs into a clean, deduplicated directory of public Facebook groups with description, visibility, and member/activity stats attached β all from a single About-page fetch per group. It's built for marketers, agencies, and researchers who need to map a niche rather than profile one group they already know. Run it on Apify with your keyword list to get a structured, ready-to-export group directory in one pass.