Facebook Groups Post & Comments: No cookies require avatar

Facebook Groups Post & Comments: No cookies require

Pricing

from $1.00 / 1,000 results

Go to Apify Store
Facebook Groups Post & Comments: No cookies require

Facebook Groups Post & Comments: No cookies require

⚡1.5$ Facebook Group & Post Comments Scraper . Process 100+ public group URLs in parallel High Speed and extract post text, authors, timestamps, engagement, media, shared posts, sale listings, and comments. No login or cookies required.

Pricing

from $1.00 / 1,000 results

Rating

4.5

(9)

Developer

TheDoor

TheDoor

Maintained by Community

Actor stats

34

Bookmarked

4.9K

Total users

242

Monthly active users

4 days ago

Last modified

Share

⚡ High-Speed Facebook Group Scraper — 100+ URLs in Parallel

Facebook Group scraper process map

Submit one or many public Facebook Group URLs in one run and collect structured post data for monitoring, research, content analysis, and automation.

Why use this Actor?

  • Bulk-ready — process 1, 10, or 100+ group URLs in one run.
  • AI group search — describe the groups you want and let AI find them, on top of the URLs you already have.
  • Complete post data — post text, author, timestamps, engagement, media, shared posts, sale listings, and comments.
  • Flexible collection — choose feed order, comments, replies, time filters, and cursors.
  • Recurring monitoring — optionally return only posts that are new since the prior run.

Explore the Facebook scraping toolkit

Need comments from individual Facebook posts? Use the Facebook Comment Scraper. For public Facebook Pages, use the Facebook Page Scraper.

Output at a glance

Each dataset record is a Facebook Group post and can include regular-post data, shared-post data, native sale-listing data, comments, and replies.

Quick start

Enter one or more public Facebook Group URLs and choose how many posts to collect from each group.

{
"url": ["https://www.facebook.com/groups/sciencehumor/"],
"maxPosts": 20,
"sortingOrder": "newest_posts"
}

Bulk example

Use the same format for many groups. Each URL is handled independently.

{
"url": [
"https://www.facebook.com/groups/sciencehumor/",
"https://www.facebook.com/groups/dogspotting/",
"https://www.facebook.com/groups/instantpotcommunity/"
],
"maxPosts": 20,
"sortingOrder": "most_relevant"
}

Your URLs plus groups found by AI

Add AI group search to scrape your own URLs and every relevant group the AI finds, in one run.

{
"url": ["https://www.facebook.com/groups/macbookvie/"],
"groupSearchPrompt": "group mua bán macbook ở Hà Nội",
"maxPosts": 20
}

What you can collect

  • Post text, URL, ID, date, and timestamp
  • Post author name and profile URL
  • Reactions, comments count, and shares count
  • Photos, videos, and other media
  • Shared-post and Buy/Sell listing details
  • A top comment, or all comments
  • Comment replies when enabled

Input guide

Facebook Group URLs

UI field: Facebook Group URLs
JSON field: url

Enter one or more Facebook Group URLs. Both slug URLs and numeric group-ID URLs are supported.

{
"url": [
"https://www.facebook.com/groups/sciencehumor/",
"https://www.facebook.com/groups/1528487012172019/"
]
}

UI field: 🔎🤖 AI group search - describe the groups that you want
JSON field: groupSearchPrompt

Describe the groups you want in your own words, for example group mua bán macbook ở Hà Nội or used car buy and sell groups in Germany. Leave it empty to scrape only your URLs.

How it works:

  1. AI reads your description once and decides the search language and country, the Google searches to run, the kind of group you want (topic, product, or activity), and the location to check.
  2. The Actor searches Google for public Facebook groups.
  3. Each group found is checked in two steps, using its Google title and description: first the topic, then the location.
  4. Every group that passes both steps is scraped, best match first. There is no fixed limit on the number of groups.

Using it together with Facebook Group URLs. You can fill in url, groupSearchPrompt, or both. With both, the Actor scrapes your URLs plus every group the AI finds. A group that appears in both lists is scraped once. All groups use the same settings, so Maximum Posts applies to each group.

Language and location. The search runs in the language you write in, in that language's main country (Vietnamese → Vietnam, German → Germany, English → United States).

What you writeLocation check
A city or region (ở Hà Nội, in Bangkok)Each group must be for that place. A group whose name includes the place is kept.
A country other than your language's country (in Germany written in English)Each group must be for that country.
Only your language's own country (tại việt nam written in Vietnamese)Groups without a location are kept; only groups clearly for another country are removed.
No placeNo location check.

To find local groups in another country, write the description in that country's language. For example, Gebrauchtwagen An- und Verkauf Gruppen in Deutschland finds German used-car markets, while the English version mostly finds English-speaking groups in Germany.

Results. The groups the AI selected, with every candidate and its scores, are saved in the GROUP_SEARCH key-value record. The Output tab links to it as Found groups (AI group search). If no group passes, the run finishes successfully with a status message and no posts.

Maximum Posts

UI field: Maximum Posts
JSON field: maxPosts

The maximum number of posts to return for each group.

{ "maxPosts": 100 }

Post sorting order

UI field: Post sorting order
JSON field: sortingOrder

ValueMeaning
newest_postsStart with the newest posts. Recommended for monitoring.
newest_activityOrder by the most recently active posts.
most_relevantUse Facebook's relevant-post ordering.
buy_sell_listingsReturn Buy/Sell listing posts only.
{ "sortingOrder": "newest_posts" }

Include top comment

UI field: Include top comment
JSON field: includeTopComment

Adds the post's top comment when it is available. Use this when you need a quick comment signal rather than a complete comment collection.

{ "includeTopComment": true }

Fetch comments

UI field: Fetch comments
JSON field: fetchAllComments

Fetches root comments for every returned post. Replies are not included unless Fetch comment replies is also enabled.

{
"fetchAllComments": true,
"fetchCommentReplies": false
}

Fetch comment replies

UI field: Fetch comment replies
JSON field: fetchCommentReplies

Fetches replies below each returned root comment. Enable Fetch comments as well. Collecting replies can make a run take longer.

{
"fetchAllComments": true,
"fetchCommentReplies": true
}

Filter posts with AI

Use the optional Which posts should be kept? field to return only posts that match a natural-language request. Leave it empty to keep the normal collection unchanged.

UI field: Which posts should be kept?
JSON field: prompt

Describe the exact type of post you want to keep. You can mention the product or property, location, important details, price, and whether you want posts for sale, wanted posts, or rentals.

What the AI filter can understand

The prompt can combine several conditions in plain language:

ConditionExamples
ProductMacBook Pro M1, Toyota Camry, iPhone 15
Housing / property typehouses, apartments, condos, land, commercial property, single-family homes
Attributes16GB RAM, 2 bedrooms, furnished, waterfront, new construction
LocationHo Chi Minh City, Florida, New York or New Jersey, Charlotte, North Carolina
Priceunder $300,000, around VND 20 million, between $500 and $800 per month
Intentfor sale, for rent, seller listings, wanted/buying posts

Examples:

Find single-family homes and condos for sale in Florida.
Find 2-bedroom apartments for rent in Charlotte, North Carolina under $2,000 per month.
Find used Toyota Camry cars for sale in Texas under $25,000.
Find gaming PCs with an RTX 4070 and at least 32GB RAM in California for under $1,500.
Find MacBook Pro M1 laptops with at least 16GB RAM in Ho Chi Minh City for around VND 19–26 million.

Only include conditions that matter to your search. For example, if you do not mention a price, posts do not need to contain a price. A post must match the details you describe, not just mention the same city or product.

{
"url": ["https://www.facebook.com/groups/sciencehumor/"],
"maxPosts": 100,
"prompt": "Find MacBook Pro M1 laptops with at least 16GB RAM in Ho Chi Minh City for around VND 19–26 million.",
"aiFilterMode": "sell"
}
FieldDescription
promptNatural-language description of the posts to keep. Maximum 300 words.
aiFilterModeChoose all for any matching post, sell for seller/listing posts, or buy for wanted/buying posts. If you leave this empty while using a prompt, it is treated as all. An empty prompt disables AI filtering.

Matched posts are returned as normal post records.

Only newest posts for the next run

UI field: Only newest posts for the next run
JSON field: onlyNewPosts

Use this for recurring monitoring of the group URLs entered above.

Important: enter again only the group URL(s) you want to update in that run. onlyNewPosts stores a checkpoint per group, not the list of groups itself. You do not need to re-enter every URL from an earlier run: submit any subset, and the Actor returns newer posts only for that subset. Checkpoints for previously monitored URLs that are not submitted remain unchanged. If url is empty, the run fails safely and does not collect or update any checkpoint.

On the first run, the Actor collects posts normally. On a later run by the same Apify account with the same group URL, it returns only posts newer than the newest post successfully saved before. It then stops when it reaches the previously collected post.

The Actor automatically uses newest_posts order when this option is enabled.

{
"url": ["https://www.facebook.com/groups/sciencehumor/"],
"maxPosts": 100,
"onlyNewPosts": true
}

Use this for daily or hourly monitoring. Leave it off when you want to collect the feed again from the beginning.

Filter posts by time

You can set a lower time boundary (newer than), an upper boundary (older than), or both.

Posts newer than (days)

JSON field: postsNewerThanDays

Collect posts from a rolling number of days before the Actor starts. Decimal values are supported.

{ "postsNewerThanDays": 2 }

0.5 means the last 12 hours. 1.5 means the last 36 hours.

Posts newer than (hours)

JSON field: postsNewerThanHours

Collect posts from a rolling number of hours before the Actor starts. Decimal values are supported.

{ "postsNewerThanHours": 6 }

Time frame

UI field: Time frame
JSON field: postsNewerThan

Use the UI's Relative or Absolute mode:

  • Relative examples: "2 days", "90 minutes", "1.5 hours", "1 month"
  • Absolute example: "2026-10-01" (date only; timestamps are not accepted)
{ "postsNewerThan": "2 days" }

When it is set, Time frame takes priority over both day and hour fields. If Time frame is empty and both day and hour fields are set, days take priority.

Posts older than

UI field: Posts older than
JSON field: postsOlderThan

The UI provides a calendar for convenient date selection. API/JSON input can also use relative durations such as "7 days". Absolute input must be a normal date in YYYY-MM-DD format; timestamps are not accepted.

{ "postsOlderThan": "2026-10-01" }
{ "postsOlderThan": "7 days" }

Combine it with a newer-than field to collect a specific date range.

{
"postsNewerThan": "2026-09-01",
"postsOlderThan": "2026-10-01"
}

Posts inside the selected range are returned in the default dataset. Posts read while locating the selected range but outside it are stored separately in the out_timeframe dataset and are marked with out_of_time_frame: true.

Ready-to-use examples

Monitor the latest posts every day

{
"url": ["https://www.facebook.com/groups/sciencehumor/"],
"maxPosts": 100,
"onlyNewPosts": true,
"sortingOrder": "newest_posts"
}

Collect posts from the last 24 hours

{
"url": ["https://www.facebook.com/groups/sciencehumor/"],
"maxPosts": 100,
"postsNewerThanHours": 24,
"sortingOrder": "newest_posts"
}

Collect posts in a specific date range

{
"url": ["https://www.facebook.com/groups/sciencehumor/"],
"maxPosts": 100,
"postsNewerThan": "2026-09-01",
"postsOlderThan": "2026-10-01",
"sortingOrder": "newest_posts"
}

Collect posts with comments but without replies

{
"url": ["https://www.facebook.com/groups/sciencehumor/"],
"maxPosts": 20,
"fetchAllComments": true,
"fetchCommentReplies": false
}

Collect posts with comments and replies

{
"url": ["https://www.facebook.com/groups/sciencehumor/"],
"maxPosts": 20,
"fetchAllComments": true,
"fetchCommentReplies": true
}

Output data

The run can contain these datasets:

  • default — posts returned to the user. With AI filtering enabled, this contains only matching posts.
  • allPosts — every post fetched before AI filtering, so you can review candidates that were excluded.
  • out_timeframe — posts read while locating a selected time range but outside that range. This is used only when a time filter is set.

Every row in the default dataset represents one returned post.

Post fields

FieldDescription
post_idFacebook post identifier.
post_urlDirect URL to the post.
textPost text, when available.
creation_timeHuman-readable post date and time.
creation_timestampPost time as a Unix timestamp in milliseconds.
group_urlThe group URL used for the result.
group_idResolved Facebook group ID.
post_typePost type, such as a regular, shared, or sale post.
thumbnailPreview image URL, when available.
mediaAttached photos, videos, and media metadata.

Regular post example

{
"post_type": "regular",
"post_id": "26296717513297956",
"post_url": "https://www.facebook.com/groups/sciencehumor/permalink/26296717513297956/",
"text": "Example post text",
"user_name": "Post author",
"creation_time": "Fri, 06 Feb 2026 06:12:19 GMT",
"reactions_count": 2974,
"comments_count": 625,
"shares_count": 182,
"media": [
{
"type": "Photo",
"url": "https://www.facebook.com/photo/?fbid=..."
}
]
}

Author and engagement fields

FieldDescription
user_namePost author's display name.
user_urlPost author's Facebook profile URL, when available.
userAuthor object with ID, name, profile URL, and profile picture.
reactions_countTotal reactions on the post.
reactionLikeCountLike reactions.
reactionLoveCountLove reactions.
reactionHahaCountHaha reactions.
reactionCareCountCare reactions.
reactionSadCountSad reactions.
comments_countNumber of comments reported by Facebook.
shares_countNumber of shares reported by Facebook.

Shared posts and listings

FieldDescription
sharedPostOriginal post details when the post shares another Facebook post.
sale_postBuy/Sell listing details when available.

Comments and replies

The topComment field contains either the top comment or the comments collected with Fetch comments.

Comments and replies are returned as one flat array. The examples below show the two record types.

Root comment example

{
"id": "comment_1001",
"text": "This is the original comment.",
"author_name": "Comment author",
"author_id": "1000123456789",
"author_profile_url": "https://www.facebook.com/example.user/",
"comment_time": "2026-10-11T04:09:09.000Z",
"timestamp": 1791691749,
"replies_count": 2,
"is_reply": false,
"replyto_comment_id": null,
"depth": 0,
"reactions_count": 3,
"reaction_types": { "like": 2, "love": 1 },
"media": []
}

Reply example

{
"id": "comment_1002",
"text": "This is a reply to the original comment.",
"author_name": "Reply author",
"author_id": "1000987654321",
"comment_time": "2026-10-11T04:15:00.000Z",
"timestamp": 1791692100,
"replies_count": 0,
"is_reply": true,
"replyto_comment_id": "comment_1001",
"depth": 1,
"reactions_count": 1,
"reaction_types": { "like": 1 },
"media": []
}
  • id is the comment or reply ID.
  • is_reply is false for a root comment and true for a reply.
  • replyto_comment_id is null for a root comment; for a reply, it contains the parent comment's id.
  • depth is 0 for a root comment and increases for nested replies.
  • replies_count is the number of replies Facebook reports for a root comment.
  • media contains images or other media attached to the comment when available.

Important notes

  • Public groups provide the most reliable results. Private, unavailable, or login-protected groups may not return posts.
  • Facebook content can change between runs, so counts and ordering can change over time.
  • Fetching all comments and replies can increase runtime and the number of collected records.
  • Use onlyNewPosts for recurring monitoring and leave it off for a full collection.

FAQ

Can I submit many URLs at once?

Yes. Add all group URLs to the url array. The Actor handles each valid group independently.

Why did a run return fewer posts than maxPosts?

A group may have fewer available posts, fewer posts matching the selected time filter, or restricted access.

Does the Actor support private groups?

No. Private, unavailable, or login-protected groups may not return posts.

Does the default dataset contain error rows?

No. The default dataset contains post records only.

Contact

For bug reports, custom fields, or integration questions, contact tuananhhoangtran2010@gmail.com.