How to get Facebook group posts
GET request to /v1/facebook/group-posts with your input. You get clean JSON back in seconds for 2 credits per call — no OAuth, scraping or platform SDKs. Public Facebook group posts — listingHits / hydrateFailures / hydrateSkipped, sortBy, and per-count *IsApproximate.How to get Facebook group posts (step by step)
- 1
Get a free API key
Create a free Captapi account (100 credits, no card) and generate an API key from the dashboard.
- 2
Call the Facebook Group Posts API
Send an authenticated GET request to /v1/facebook/group-posts with your input. No OAuth, no scraping setup.
- 3
Read the JSON response
Parse the clean JSON response. Pass cache=true for a free 24h cache hit; default is always fresh.
Code example
curl "https://api.captapi.com/v1/facebook/group-posts?url=https%3A%2F%2Fwww.facebook.com%2Fgroups%2Fdogspotting" \
-H "Authorization: Bearer capt_live_..."
# or: -H "x-api-key: capt_live_..."What the response looks like
{
"success": true,
"data": {
"url": "https://www.facebook.com/groups/dogspotting",
"totalReturned": 2,
"posts": [
{
"platform": "facebook",
"url": "https://www.facebook.com/groups/dogspotting/posts/10165927007174467/",
"id": "10165927007174467",
"caption": "Dog in a basket…I repeat…dog in a basket!",
"description": "Dog in a basket…I repeat…dog in a basket!",
"publishedAt": "2026-07-27T16:34:51.000Z",
"author": {
"displayName": "Beth Oxford"
},
"engagement": {
"likes": 87,
"comments": 0
},
"isVideo": false,
"permalink": "https://www.facebook.com/groups/dogspotting/posts/10165927007174467/"
},
{
"platform": "facebook",
"url": "https://www.facebook.com/groups/dogspotting/posts/10165913663824467/",
"id": "10165913663824467",
"caption": "Waiting patiently in the Mustang.",
"description": "Waiting patiently in the Mustang.",
"publishedAt": "2026-07-24T22:16:11.000Z",
"thumbnailUrl": "https://scontent-iad6-1.xx.fbcdn.net/v/t39.30808-6/754824625_10163571025602896_890543610805686018_n.jpg?stp=dst-jpg_tt6&cstp=mx2048x1536&ctp=p600x600&_nc_cat=107&ccb=1-7&_nc_sid=63...",
"author": {
"displayName": "Chet Rhodes"
},
"engagement": {
"likes": 36,
"comments": 2
},
"isVideo": false,
"permalink": "https://www.facebook.com/groups/dogspotting/posts/10165913663824467/"
}
],
"sortBy": "CHRONOLOGICAL"
}
}Billing metadata (credits charged, cache hit/miss) is returned in the X-Captapi-Credits and X-Captapi-Cache response headers.
Request parameters
| Name | Type | Required | Description |
|---|---|---|---|
| url | string | Yes | Public Facebook group URL, e.g. https://facebook.com/groups/ID. The URL platform must match this endpoint's platform. Do not pass cross-platform URLs, e.g. YouTube to TikTok, Instagram to Facebook, LinkedIn to X/Twitter, or Pinterest to Rumble. |
| limit | integer | No | Max items to return (default 20, max 200). Flat 2 credits per call. |
| sortBy | string | No | TOP_POSTS | RECENT_ACTIVITY | CHRONOLOGICAL (default) | CHRONOLOGICAL_LISTINGS. Maps to Facebook sorting_setting. |
| cache | boolean | No | Set true to serve from the 24h response cache (0 credits on hit). Default false — always fetch fresh. |
Frequently asked questions
What does the Facebook Group Posts API do?
The Facebook Group Posts API lets you list items in bulk with metadata from a public Facebook post using one GET request to /v1/facebook/group-posts. It returns clean JSON — no OAuth or infrastructure setup required.
How many credits does the Facebook Group Posts API cost?
Each successful call costs 2 credits. Pass cache=true to serve from the 24h cache (0 credits on hit); default is always fresh. Selected profile endpoints also accept cacheMaxAge=1d|3d|7d|14d|30d. Failed or empty results are never charged.
Do I need a Facebook API key or OAuth?
No. A single Captapi key works across every platform Captapi supports — YouTube, TikTok, Instagram, Facebook, Twitter/X, Reddit, Threads, Bluesky, Pinterest, LinkedIn, Rumble, Spotify, Kwai, and more. We handle proxies, rate limits, retries, and authentication for you.
Why did I get 3 posts when I asked for 20?
Read the envelope: listingHits − hydrateFailures − hydrateSkipped = totalReturned when hasMore is false. listingHits is how many distinct posts the HTML window had; hydrateFailures did not become a row; hydrateSkipped were found but not hydrated (deadline). truncatedReason is listing-window or hydrate-budget. Those keys are the reason to use this endpoint.
Where is permalink? And why did shares have no *IsApproximate?
permalink does not ship — it was an embed-alias of url and is gone. Use posts[].url. shares: null is a present key, so sharesIsApproximate is now always stamped (false when the count is null). comments and commentsIsApproximate are always keyed too — never treat a missing comments key as 0.
Do topComments include the commenter's gender?
No. Facebook sometimes exposes an inferred gender on group commenters; we drop it. topComments is {id, text, publishTime, author{id,name,url}}.
Is the Facebook Group Posts API suitable for production use?
Yes. It is a stable REST endpoint with predictable JSON and automatic retries. Pass cache=true to serve from the 24h cache (0 credits on hit); default is always fresh. Selected profile endpoints also accept cacheMaxAge=1d|3d|7d|14d|30d. Use it for analytics, monitoring, and content automation.
Ready to get Facebook group posts?
Start free with 100 credits — no credit card required.
Get your free API key