Facebook Group Post Scraper By Keyword Search avatar

Facebook Group Post Scraper By Keyword Search

Pricing

$24.99/month + usage

Go to Apify Store
Facebook Group Post Scraper By Keyword Search

Facebook Group Post Scraper By Keyword Search

Scrape posts from Facebook groups with the Facebook Group Post Scraper. Extract post text, images, videos, comments, reactions, and timestamps. Ideal for community analysis, engagement tracking, and market research. Fast, reliable, and scalable for single or multiple groups.

Pricing

$24.99/month + usage

Rating

5.0

(1)

Developer

Scrapier

Scrapier

Maintained by Community

Actor stats

3

Bookmarked

81

Total users

1

Monthly active users

4 days ago

Last modified

Share

Facebook Group Post Scraper — Keyword Matches with Sentiment Tags

Facebook Group Post Scraper By Keyword Search pulls posts from any public Facebook group, filters them to the ones matching your watch keywords, and returns each match as structured JSON — already tagged with a sentiment label and score. Every result includes post text, author details, engagement counts, attachments, and the top comments a match was found in. Every response is ready to pass to an LLM, load into a spreadsheet, or feed a monitoring pipeline tracking how a topic is discussed inside one community over time.

What is Facebook Group Post Scraper By Keyword Search?

Facebook Group Post Scraper By Keyword Search is an Apify Actor that queries a single public Facebook group's post feed, keeps only the posts (and top comments) matching your watch-keyword rules, and returns each match as a flat JSON row already scored for sentiment. No Facebook login or cookies are required — the Actor reads the public group feed anonymously through Apify Proxy, so the group itself must be set to public (private groups return no data). It replaces a raw post dump with a filtered, pre-tagged feed built for repeated keyword monitoring.

  • Keyword include/exclude filtering — watch keywords with any (at least one) or all (every keyword) match logic, checked against post text and top comments
  • Built-in sentiment tagging — every matched post gets a positive / negative / neutral label plus a numeric sentimentScore
  • Feed order control — scan by newest posts, most relevant (top engagement), or recent activity
  • Post-count cap and date filter — bound each run with count and only evaluate posts newer than scrapeUntil
  • Automatic proxy fallback — direct connection → datacenter proxy → residential proxy, retried on rate-limit or block responses
  • Full base post fields — author, reactions, shares, comment count, attachments, and top comments on every match

What data can you get with Facebook Group Post Scraper By Keyword Search?

Every run returns one flat JSON object per matched post, plus a nested array of the post's top comments.

Result TypeExtracted FieldsPrimary Use Case
Matched postcreatedAt, url, user (id, name, url), text, matchedKeywords, keywordHitCount, sentiment, sentimentScore, attachments, reactionCount, shareCount, commentCount, topCommentsKeyword-triggered sentiment monitoring feed for a group
Top comment (nested in topComments)text, createdAt, author (name, id, gender, url, profilePicture, shortName, isVerified), reactionCount, commentCount, urlRead the community's reaction to a matched post

Keyword-matched sentiment tagging

This is the field set competitors' general-purpose group scrapers don't return: every post that survives the keyword filter arrives pre-scored, not just pre-selected. matchedKeywords lists which watch terms actually hit (original casing preserved), keywordHitCount totals how many times those terms occurred across the post text and its top comments, and sentiment / sentimentScore grade the post's own text on a built-in lexicon, with no external NLP or LLM call involved. That means a keyword search for "vaccine" doesn't just hand you every post mentioning it — it tells you, per post, whether the mention read positive, negative, or neutral, and roughly how strongly, so you can prioritize which matches deserve a closer read before you open Facebook at all:

{
"matchedKeywords": ["vaccine"],
"keywordHitCount": 2,
"sentiment": "negative",
"sentimentScore": -0.667
}

Top comments

Each matched post carries its topComments array — the same interesting-comments Facebook surfaces under a post, each with its own author (name, id, gender, verification, profile picture), text, reaction and reply counts, and a direct comment permalink. Because keyword matching also runs against comment text, topComments is often where you can see exactly which reply triggered the match, not just that something in the thread did.

How does Facebook Group Post Scraper By Keyword Search differ from the official Facebook Graph API?

Meta's Graph API does not expose a keyword-search parameter over a group's post feed at all, and group content access is gated behind App Review rather than a public group URL.

FeatureFacebook Graph APIFacebook Group Post Scraper By Keyword Search
Keyword search over group postsNot available — no query parameter on the group feed edgeBuilt-in include/exclude keyword filters, any/all match mode
Sentiment taggingNot providedEvery matched post scored positive/negative/neutral with a numeric score
Access requirementsApp Review approval, and the group's admin must install your app and grant group permissionsJust the group's public URL
Group scopeLimited to groups that authorized your specific appAny public Facebook group
Output shapeRaw graph nodes; pagination and parsing left to the developerFixed, flattened JSON pushed straight to a dataset
SetupOAuth flow, permission review, token/webhook maintenancePaste a URL and start the run

The Graph API is the right call if you already run an approved app that a group's admins have installed and you only need that one group's own feed through official channels. Facebook Group Post Scraper By Keyword Search is the practical option when you need to monitor any public group's discussion by keyword without an app review process.

How to scrape Facebook with Facebook Group Post Scraper By Keyword Search?

  1. Open the Actor's page on Apify — Scrapier/facebook-group-post-scraper-by-keyword-search.
  2. Paste the public Facebook group URL into groupUrl — the only required field.
  3. Add your watch keywords, mute keywords, and match mode (optional — leave keywords empty to keep every post, unfiltered).
  4. Set count, sortType, and scrapeUntil to bound the scan (optional — all have working defaults).
  5. Start the run, then download the matched, sentiment-tagged posts as JSON or CSV from the dataset.

Example request against the Apify API:

POST https://api.apify.com/v2/acts/Scrapier~facebook-group-post-scraper-by-keyword-search/run-sync-get-dataset-items?token=<TOKEN>
{
"groupUrl": "https://www.facebook.com/groups/germtheory.vs.terraintheory",
"keywords": ["vaccine", "virus"],
"matchMode": "any",
"count": 50
}

How to scan multiple groups in one job

The input schema takes one groupUrl per run — there is no array-of-groups field. To cover several groups, fire one run per group: loop over your group list and call the Apify API's run endpoint (or a run-sync-get-dataset-items call) once per URL, then merge the returned dataset items downstream. Apify Tasks can store one pre-configured input per group so each loop iteration only needs to trigger the task, not rebuild the input.

⬇️ Input

ParameterRequiredTypeDescriptionExample Value
groupUrlYesstringFull public Facebook group URL to monitor. The group must be public."https://www.facebook.com/groups/germtheory.vs.terraintheory"
keywordsNoarrayWatch keywords. Keep a post if its text or top comments contain these terms (case-insensitive). Empty = no keyword filtering.["vaccine", "virus"]
excludeKeywordsNoarrayMute keywords. Drop a post if it contains any of these terms, even if it matched a watch keyword.["spam"]
matchModeNostring (any | all)How watch keywords combine: any keeps a post with at least one match, all requires every watch keyword. Default any."any"
countNointeger (1–10000)Maximum posts to fetch and evaluate. Empty = scan all available posts. Default 20.50
sortTypeNostring (new_posts | most_relevant | recent_activity)Order the group feed is scanned in. Default new_posts."new_posts"
scrapeUntilNostring (date)Only evaluate posts created after this date. Formats: YYYY-MM-DD or YYYY-MM-DD HH:MM:SS (UTC). Empty = scan all posts."2026-01-01"
proxyNoobjectProxy configuration. Apify Proxy is recommended and enabled by default.{ "useApifyProxy": true }

Example JSON input:

{
"groupUrl": "https://www.facebook.com/groups/germtheory.vs.terraintheory",
"keywords": ["vaccine", "virus"],
"excludeKeywords": ["spam"],
"matchMode": "any",
"count": 20,
"sortType": "new_posts",
"scrapeUntil": "",
"proxy": { "useApifyProxy": true }
}

Common pitfall: the Actor has no login step — it resolves the group feed anonymously, so a private or restricted group will fail to resolve at all (zero rows, not partial results). Always confirm the group is public before running. A second, subtler one: matchMode: "all" checks whether every watch keyword appears anywhere across the combined post text and top comments, not that all keywords appear in the post text alone — a post can pass "all" mode purely from its comment thread.

⬆️ Output

Results are pushed to the Actor's dataset one matched post at a time, as typed, flat JSON — exportable as JSON, CSV, Excel, or the other formats Apify datasets support. The schema is identical across runs regardless of which keywords you configure.

Scraped results

[
{
"createdAt": 1719950400,
"url": "https://www.facebook.com/groups/germtheory.vs.terraintheory/permalink/1122334455/",
"user": { "id": "100004821193", "name": "Jane Doe", "url": "" },
"text": "The new vaccine study looks great and very promising for public health.",
"matchedKeywords": ["vaccine"],
"keywordHitCount": 1,
"sentiment": "positive",
"sentimentScore": 1.0,
"attachments": [],
"reactionCount": 42,
"shareCount": 3,
"commentCount": 8,
"topComments": [
{
"text": "Not sure I trust this, sounds risky and rushed.",
"createdAt": 1719954000,
"author": {
"name": "Sam Rivera",
"id": "100009182734",
"gender": "male",
"url": "https://www.facebook.com/sam.rivera",
"profilePicture": "https://scontent.fcdn.net/pic1.jpg",
"shortName": "Sam",
"isVerified": false
},
"reactionCount": 5,
"commentCount": 1,
"url": "https://www.facebook.com/groups/germtheory.vs.terraintheory/permalink/1122334455/?comment_id=998877"
}
]
},
{
"createdAt": 1719866000,
"url": "https://www.facebook.com/groups/germtheory.vs.terraintheory/permalink/1122334400/",
"user": { "id": "100007654321", "name": "Alex Chen", "url": "" },
"text": "This virus outbreak is scary and the local response has been a disaster.",
"matchedKeywords": ["virus"],
"keywordHitCount": 1,
"sentiment": "negative",
"sentimentScore": -0.667,
"attachments": [
{ "type": "ExternalLink", "url": "https://news.example.com/outbreak-report", "title": "Outbreak report", "mediaType": null, "subattachmentCount": 0 }
],
"reactionCount": 17,
"shareCount": 6,
"commentCount": 12,
"topComments": []
},
{
"createdAt": 1719780000,
"url": "https://www.facebook.com/groups/germtheory.vs.terraintheory/permalink/1122334300/",
"user": { "id": "100001231234", "name": "Morgan Lee", "url": "" },
"text": "Anyone know the vaccine schedule for the community clinic next week?",
"matchedKeywords": ["vaccine"],
"keywordHitCount": 1,
"sentiment": "neutral",
"sentimentScore": 0.0,
"attachments": [],
"reactionCount": 4,
"shareCount": 0,
"commentCount": 2,
"topComments": []
}
]

How can I use the data extracted with Facebook Group Post Scraper By Keyword Search?

  • Social listening and brand teams: track how a brand or product name is discussed inside niche communities, using sentiment and sentimentScore to spot when the conversation turns negative.
  • Community moderators: run the Actor with your banned-topic terms in excludeKeywords (or as watch keywords) to surface posts mentioning scams, spam, or rule-violating content for a review queue.
  • AI engineers and LLM developers: feed the matched, sentiment-tagged JSON directly to an agent as grounded context — no separate keyword-filter or sentiment-classification step needed before the model sees it.
  • Market researchers: run the same keyword set on a schedule and compare matchedKeywords, keywordHitCount, and sentimentScore across runs to track whether community opinion on a topic is shifting.

How do you monitor keyword sentiment over time?

Monitoring here means re-running the same group and keyword configuration on a schedule and comparing the sentiment-tagged results between runs, rather than reading a single snapshot. Because every matched post carries matchedKeywords, keywordHitCount, sentiment, and sentimentScore, two runs of the same query are directly comparable: a rising keywordHitCount means the topic is being discussed more often, and a shift in the average sentimentScore (or in the ratio of positive to negative labels) means opinion on it is moving.

The fields worth diffing between runs are keywordHitCount (volume), sentimentScore (direction and intensity), and matchedKeywords (which specific terms are driving the volume). reactionCount, shareCount, and commentCount are useful secondary signals for whether a sentiment shift is also gaining engagement.

A practical workflow: schedule a run of the same groupUrl and keyword set daily or weekly, store each run's dataset, then compute the average sentimentScore and total keywordHitCount for the new run against the previous one — alert when the sign of the average sentiment flips or when hit volume spikes well above its recent baseline. Apify's built-in Scheduler can trigger the run itself on that cadence; the diff-and-alert step runs downstream, in your own script or workflow tool, against the two datasets.

Integrate Facebook Group Post Scraper By Keyword Search and automate your workflow

Facebook Group Post Scraper By Keyword Search works with any language or tool that can send an HTTP request.

REST API with Python

import requests
TOKEN = "YOUR_APIFY_TOKEN"
ACTOR = "Scrapier~facebook-group-post-scraper-by-keyword-search"
run_input = {
"groupUrl": "https://www.facebook.com/groups/germtheory.vs.terraintheory",
"keywords": ["vaccine", "virus"],
"matchMode": "any",
"count": 50,
}
resp = requests.post(
f"https://api.apify.com/v2/acts/{ACTOR}/run-sync-get-dataset-items?token={TOKEN}",
json=run_input,
)
for post in resp.json():
print(post["sentiment"], post["matchedKeywords"], post["url"])

MCP for query-grounded AI agents

Any Apify Actor, including this one, is reachable through Apify's hosted MCP server at https://mcp.apify.com by pinning it with the actors query parameter, e.g. https://mcp.apify.com/?actors=Scrapier/facebook-group-post-scraper-by-keyword-search. Register that URL as a remote MCP server in Claude Desktop, Claude Code, or another MCP-compatible client, and an agent can call the Actor as a tool — it issues a groupUrl + keyword query, gets back sentiment-tagged JSON, and grounds its answer in that data instead of guessing.

Scheduled monitoring and delivery

Use Apify's Scheduler to trigger this Actor on a recurring cadence against the same group and keyword set, and Apify webhooks to notify an endpoint (or trigger a downstream Actor) when a run finishes, instead of polling the dataset manually.

Scraping publicly accessible Facebook group posts is generally legal — this Actor only retrieves what any visitor to a public group can already see, and hiQ Labs, Inc. v. LinkedIn Corp. (9th Cir., 2019) supports the position that scraping public web data does not violate the Computer Fraud and Abuse Act. That said, the data returned here — post authors' names, profile IDs, and comment authors' details — is personal data, so processing it at scale can fall under GDPR (EU/UK individuals) or CCPA (California residents), regardless of the CFAA question. Scraping for internal monitoring carries a different risk profile than scraping to train a model on people's posts. Consult your legal team for commercial use cases involving bulk storage.

Frequently asked questions

Does sentiment tagging work for non-English posts?

Not reliably — the sentiment model is a built-in English word lexicon (positive/negative word lists with basic negation handling), so posts in other languages will typically score neutral simply because no lexicon words are found, not because the post is actually neutral. Keyword matching itself is a plain substring match and works in any language.

What feed orders can I scan by, and how do they differ?

sortType controls the order the group feed is paged through: new_posts scans chronologically (newest first), most_relevant scans by Facebook's top-engagement ranking, and recent_activity scans posts with the most recent comments/interactions first. All three still return the same fields — only the scan order (and therefore which posts you hit first within your count cap) changes.

How does Facebook Group Post Scraper By Keyword Search handle Facebook's anti-bot measures?

It runs requests through Apify Proxy with an automatic fallback chain: no proxy first, then datacenter proxy, then residential proxy, escalating whenever Facebook responds with a rate-limit or block status. It also inserts a randomized delay between page requests and retries failed requests a few times before giving up on that page.

Does Facebook Group Post Scraper By Keyword Search extract sentiment and keyword matches?

Yes — every matched post carries matchedKeywords (which watch terms hit), keywordHitCount (how many times), sentiment (positive/negative/neutral), and sentimentScore (-1 to 1). These fields are only absent from posts that never entered the dataset, since only posts passing the keyword rules are pushed at all.

How many results does Facebook Group Post Scraper By Keyword Search return per query?

Up to whatever you set in count (1–10,000), or all available posts in the group if you leave it empty — the Actor stops paging once it has scanned that many posts, and only the ones that pass your keyword rules are pushed to the dataset.

How do I use Facebook Group Post Scraper By Keyword Search to monitor a topic over time?

Schedule the same groupUrl and keyword set to run repeatedly (Apify Scheduler handles the cadence), extract keywordHitCount and sentimentScore from each run, and compare them against the previous run's dataset — alert when the average sentiment flips sign or hit volume spikes.

Does Facebook Group Post Scraper By Keyword Search work with Claude, ChatGPT, and AI agent frameworks?

Yes. It's reachable through Apify's hosted MCP server (see Integrate section above) for MCP-native clients, and as a plain HTTP endpoint for any other agent framework — an agent can call the run-sync API, get sentiment-tagged JSON back, and ground its response in it.

How does Facebook Group Post Scraper By Keyword Search compare to other Facebook group scrapers?

As observed on their Apify Store listings, general-purpose Facebook group post scrapers (for example, listings titled "Facebook Group Post Scraper" or "Facebook Groups Posts Scraper" from other publishers) return the raw post feed — text, author, reactions, comments — without keyword filtering or sentiment tagging built in; that filtering and scoring is left for the user to build afterward. This Actor does both at scrape time, so the dataset arrives already filtered to on-topic posts and labeled for sentiment.

Can I use Facebook Group Post Scraper By Keyword Search without managing proxies or Facebook credentials?

Yes. Apify Proxy with automatic datacenter/residential fallback is handled internally and enabled by default, and no Facebook login or cookies are used at all. You only need to supply a public group URL.

Your feedback

Found a bug or a field that doesn't match this README? Let us know through the Issues tab on the Actor's Apify Store page — Scrapier actively maintains this listing and reads every report.