Facebook feed API: user timeline and group posts
GET /api/v1/feed · GetSocialAPI
One endpoint for small feed pages of a user timeline or a group feed — convenient when you don't need large ~100-post pages.
Request
| Parameter | In | Required | Description |
|---|---|---|---|
user_id | query | one of | Numeric user id — profile timeline |
group_id | query | one of | Numeric group id — group feed |
per_page | query | no | Page size, 3–20 (default 10) |
after | query | no | Cursor from page_info.end_cursor of the previous page; omit for the first page |
Pass exactly one of user_id / group_id.
Response
The shape matches the target:
- user:
data.profile.timeline_feed_units— Story nodes andpage_info, up to ~10 posts per request (seeper_page) - group:
data.group_address.group_feed— the same Story nodes andpage_infoas group posts
# user: page 1 (10 posts)
curl -H "X-API-Key: $KEY" \
"https://api.getsocialapi.com/fb/api/v1/feed?user_id=100053723115450"
# user: page 2
curl -H "X-API-Key: $KEY" \
"https://api.getsocialapi.com/fb/api/v1/feed?user_id=100053723115450&after=<end_cursor>"
# group: 10 posts per page
curl -H "X-API-Key: $KEY" \
"https://api.getsocialapi.com/fb/api/v1/feed?group_id=800246542990860&per_page=10"
Behavior details
- user pages: the service requests 10 upstream; Facebook may return a post or two more — the response is not trimmed (trimming would lose posts at page seams; per-page cursors do not exist upstream).
- group pages: Facebook hard-caps its native page at ~2 posts; the
service stitches several native pages up to
per_page— up to 2 duplicate edges can appear at the seam. Dedupe bynode.cache_id. - A page may occasionally come back short — follow
has_next_pageinstead of counting posts. - Cursor: reusable, not session-bound; take
end_cursoronly from the connection'spage_info.
Python SDK: client.fb.feed(user_id=..., group_id=..., per_page=..., after=...); see Facebook SDK.
Errors
| HTTP | Case |
|---|---|
400 + {{"error": "Invalid Cursor…"}} | broken/foreign after (FB code 1675011) |
400 | neither or both of user_id/group_id; per_page outside 3–20 |
401 / 429 | see Rate limits |
502 | upstream Facebook error (after retries) |
503 | no live slots (Retry-After: 15) |
Partial errors
Facebook can attach a non-empty errors[] to a 200 response while still
returning data — treat it as "data present, but check the field" and keep
paging.