Facebook page posts
Get a public Facebook page's recent posts (newest first) with engagement counts and per-type reaction breakdowns. For a date range, pass start_date/since — the walk pages back until it reaches that date instead of stopping at a fixed count. This feed yields only ~3 posts per upstream call, so a month costs ~60 calls; if the page posts mostly reels, facebook_page_reels covers the same span 3x faster.
For a date range pass since and until rather than a large item cap — plus tz, the user's timezone, so the days are cut on THEIR calendar. The walk pages back until it reaches that date, and the tool returns a totals block (posts, views, likes, comments, engagement_rate) computed over exactly that window. Quote those numbers; never add up the rows yourself. Before reporting a total, read these four fields — each one exists because ignoring it produced a wrong report:
partial: true— the walk stopped early, so this is a FLOOR, not a measurement. Say so, or re-run; never present it as the period's total.overlaps— names a sibling feed returning the SAME pieces. Report one feed or the other; adding both counts every piece twice.views_metric— which upstream numberviewscame from. Two feeds on one platform can report different values for the same piece, so only compare or combine totals whoseviews_metricmatches.measured_at— when it was read. Live counts move fast; state it whenever you report a total, and never explain a difference between two runs as a mistake before checking whether the pieces simply gained views between them.
COVERING MORE THAN ONE ACCOUNT OR FEED: never add these totals in your head. Each result carries a receipt — a TSV block with the same five columns on every platform. Paste the receipts into run_code and total them there: dedupe on (platform, id) so a piece returned by two feeds is counted once, keep an empty field as missing rather than 0, and only add views across receipts whose views_metric matches. Report the code's number, not a retyped one, and hand back the per-piece list so the total can be checked by hand. For search across many pages use facebook_search.
Authorization
bearerAuth JWT token from authentication
In: header
Header Parameters
Pin the caller to an API major (1). Omit to accept the current version. A major this deployment cannot serve is refused with 400 unsupported_api_version.
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/social/facebook_page_posts" \ -H "Content-Type: application/json" \ -d '{ "organization_id": "string", "input": { "page": "string" } }'{ "operation": "instagram_profile", "result": { "summary": "string", "page_id": "string", "count": -9007199254740991, "totals": { "window": { "since": "string", "until": "string", "tz": "string" }, "posts": -9007199254740991, "views": 0, "likes": 0, "comments": 0, "engagement_rate": 0, "rows_without_views": -9007199254740991, "rows_without_likes": -9007199254740991, "rows_without_comments": -9007199254740991, "views_metric": "string", "measured_at": "string", "partial": true, "overlaps": "string", "oldest": "string", "newest": "string" }, "receipt": "string", "coverage": "string", "posts": [ { "post_id": "string", "type": "string", "url": "string", "text": "string", "created_at": "string", "comments_count": 0, "reactions_count": 0, "reshare_count": 0, "reactions": { "property1": 0, "property2": 0 }, "video_view_count": 0, "external_url": "string", "image_url": "string", "album_image_urls": [ "string" ], "author": { "id": "string", "name": "string", "url": "string" }, "group": { "group_id": "string", "name": "string", "url": "string" } } ] }, "requests": 0, "credits_charged": 0}