Facebook Post API
Resolve a public Facebook post or Reel permalink to structured JSON — caption, author, engagement, and media URLs — without a Meta Graph app for content you do not own.
GET /v1/facebook/posts1 credit Failed requests are free
About this endpoint
GET /v1/facebook/posts takes a required public post or Reel url query param and returns the shared Social Fetch envelope. Branch on data.lookupStatus before you write a row — found or not_found. On found, read data.post (id, URL, description, publishedAt, feedbackId, and linkAttachment for link-share posts), plus author, metrics, media, and music when present. media.imageUrl is the primary image; when the post is a multi-image carousel, media.imageUrls lists the full gallery. Those are source-platform CDN links and can expire. Pass includeComments=true for a sample of top-level comments, or includeTranscript=true when you want plain-text transcript text for a video that has one.
This route is one post or Reel by permalink. To page a page's feed use GET /v1/facebook/profiles/posts. For a full comment thread use GET /v1/facebook/posts/comments. A dedicated transcript-only call is GET /v1/facebook/posts/transcript. Bill from meta.creditsCharged.
Facebook Post API FAQ
How do I get a Facebook post or Reel via API?
Call GET /v1/facebook/posts with your Social Fetch API key (x-api-key) and a public post or Reel url query param. Read data.lookupStatus and the post payload in the JSON response. See the API docs for parameters and examples.
How much does the Facebook Post API cost?
Pricing is documented on the operation in the API registry (shown on this page). Confirm on every response with meta.creditsCharged — that field is the billing source of truth.
What fields does the Facebook post response include?
When lookupStatus is found, the payload can include post identity (postId, URL, description, publishedAt, feedbackId), the shared link preview (linkAttachment: url, title, imageUrl) on link-share posts, author (name, profile URL, avatar, verified), metrics (likes, comments, shares, views, reaction breakdowns when exposed), media (thumbnail, primary imageUrl, gallery imageUrls for carousels, video and HD video URLs, duration, dimensions), and attached music metadata when Facebook shows it. Source CDN image and video URLs can expire outside the original retrieval context.
Can I include comments or a transcript on the same call?
Yes. Set includeComments=true for a sample of top-level comments when available. Set includeTranscript=true for plain-text transcript text when the video has one. For paging a full comment thread, use GET /v1/facebook/posts/comments instead.
Facebook post by URL vs profile posts list?
Use GET /v1/facebook/posts when you already have a post or Reel permalink. Use GET /v1/facebook/profiles/posts to page posts for a page or profile URL. They are separate operations on the Facebook hub.
Do I need Meta Graph API access or page admin rights?
No. Social Fetch returns publicly visible post and Reel data for enrichment-style lookups. Meta's Graph and Marketing APIs are for assets and ads accounts you control or that authorize your app — not arbitrary public competitor posts.
What happens for missing or unavailable Facebook posts?
The call still returns a typed lookupStatus. Unknown or removed URLs resolve as not_found with null post fields. Do not invent captions, metrics, or media URLs. Keep meta.requestId if you need support on a failed enrichment row.
Other Facebook endpoints
- ProfileGET /v1/facebook/profiles
- Profile postsGET /v1/facebook/profiles/posts
- Profile reelsGET /v1/facebook/profiles/reels
- Profile photosGET /v1/facebook/profiles/photos
- Profile eventsGET /v1/facebook/profiles/events
- CommentsGET /v1/facebook/posts/comments
- RepliesGET /v1/facebook/posts/comments/replies
- TranscriptGET /v1/facebook/posts/transcript