Facebook Posts API and MCP — Text, Reactions, Shares & Views
Send a Facebook page URL or name and this source returns the page's posts as data: text, time, likes, comments and shares counts, reactions broken down by type, video views, attached media with OCR text, links and a few top comments. Pass a single post URL instead and it returns that one post.
- You send
- A page URL, page name or single post URL, with optional date filters
- You get back
- Posts with text, time, engagement counts, reactions by type and media
- Coverage
- Posts on public Facebook pages, and single public posts by URL.
- Price
- 5 points per returned post, up to 1,000 per request — $5 per 1,000
- Billed per post actually returned, capped by max_items. A page with no posts in your window costs nothing.
Ways to get this data
Three approaches teams use today, and where each one runs into trouble.
| Approach | What it takes | Cost | Trade-off |
|---|---|---|---|
| Scrolling the page | Open the feed, copy posts and counts by hand | Free, and slow | No way to cover months of posts across several competitors |
| A social listening suite | A sales call and a seat licence | Annual contract | Broad dashboards, but the raw post data is often hard to get out |
| NeuralVerge | One request per page | $5 per 1,000, misses not billed | Public engagement counts only — no reach or impression data, which only the page owner sees |
What you get back
Every field in the example response below.
| Field | Type | Description |
|---|---|---|
total_items | number | How many posts came back. |
items[].id | string | Facebook's post ID. |
items[].url | string | Direct link to the post. |
items[].time | string | When the post was published (ISO 8601). |
items[].text | string | Post text. |
items[].author | object | The page or person who posted: id, name and profile link. |
items[].likes_count | number | Likes on the post. |
items[].comments_count | number | Comments on the post. |
items[].shares_count | number | Shares of the post. |
items[].views_count | number | null | Video views, for video posts. |
items[].reactions | object | Reaction counts by type: like, love, haha, wow, sad, angry, care. |
items[].is_video | boolean | Whether the post is a video or reel. |
items[].video_transcript | string | null | What was said in the video, when include_video_transcript is on. |
items[].media | array | Attached photos and videos, with thumbnail and OCR text where available. |
items[].link | string | null | Outbound link in the post. |
items[].paid_partnership | boolean | Whether the post is marked as a paid partnership. |
items[].top_comments | array | A few top comments with text, date, author and likes. |
Example response
A real response, as returned.
{
"session_id": "5c009905-3d0b-4c6f-91bc-f39fd32385db",
"kind": "facebook_posts",
"url": "https://www.facebook.com/NASA/",
"max_items": 2,
"include_video_transcript": false,
"partial": false,
"machine": {
"total_items": 2,
"items": [
{
"id": "1667357668092936",
"url": "https://www.facebook.com/NASA/posts/pfbid037y4YEtzSz15deRRZ5SeZg2vWoCgThrYAHqNTkcxrshdkwhnaNknzD3KE8G1Hp3Upl",
"time": "2026-10-25T22:30:00.000Z",
"text": "Have you put up your Halloween decor? The night sky will add the finishing touch. 🌕 October’s full moon, named the Hunter’s Moon, will rise on the night of Oct. 26. Its name comes from the seasonal practice of hunters relying on bright moonlight.",
"author": {
"id": "100044561550831",
"name": "NASA - National Aeronautics and Space Administration",
"profile_url": "https://www.facebook.com/100044561550831"
},
"page_name": "NASA",
"likes_count": 3802,
"comments_count": 120,
"shares_count": 532,
"views_count": null,
"reactions": { "like": 2399, "love": 1308, "haha": 4, "wow": 20, "sad": null, "angry": 1, "care": 70 },
"is_video": false,
"media": [
{
"type": "Photo",
"url": "https://www.facebook.com/photo/?fbid=1667357648092938&set=a.416661013162614",
"ocr_text": "A mostly-full Moon appears deep yellow in contrast with the blue night sky around it. A dark flock of birds flies just below it."
}
],
"link": null,
"paid_partnership": false,
"top_comments": []
},
{
"id": "1665530011609035",
"url": "https://www.facebook.com/reel/1803909017420449/",
"time": "2026-10-23T23:40:58.000Z",
"text": "We are not slowing down. 🚀 Our Artemis III mission will send four astronauts to low Earth orbit next year to test critical systems needed for future lunar landings https://go.nasa.gov/4zV3TuG and we’re accelerating efforts to ensure the success of Artemis IV, the first Artemis mission on the lunar surface https://go.nasa.gov/3UeKjdl.",
"page_name": "NASA",
"likes_count": 3815,
"comments_count": 158,
"shares_count": 379,
"views_count": 277481,
"reactions": { "like": 3270, "love": 467, "haha": 14, "wow": 17, "sad": null, "angry": 1, "care": 46 },
"is_video": true,
"video_transcript": null,
"link": "https://go.nasa.gov/4zV3TuG",
"paid_partnership": false
}
],
"errors": []
},
"total_points": 10
}How to run it
The same lookup works from the app, the API, or as a tool an agent can call mid-task.
This endpoint is synchronous: the call blocks until the lookup completes and returns the records directly. If a lookup hits its time budget before finishing, the response comes back with partial: true and whatever it collected so far — re-run with a smaller max_items for a complete result. url is required. Optional: max_items (1-1,000, default 20), newer_than and older_than (a date like 2026-01-01 or a period like 3 months), include_video_transcript (boolean).
curl -X POST https://api.neuralverge.ai/functions/v1/run-facebook-posts \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "url": "https://www.facebook.com/NASA/", "max_items": 20, "newer_than": "3 months" }'What teams use it for
Where this field shows up in an actual workflow.
See what competitors post, how often, and which posts get engagement.
Compare reactions, shares and video views across brands over the same window.
Read what a prospect has announced recently before you reach out.
Pull transcripts of video posts to analyse messaging, not just thumbnails.
Coverage, freshness and limits
What this source covers, how fresh it is, and where it stops.
Posts on public Facebook pages, and single public posts by URL.
Read at request time — engagement counts are a snapshot at that moment.
This source returns content a page published publicly. Top comments can include the names and words of private individuals — use them for legitimate business purposes and check the acceptable use policy.
- —Reach and impressions are private to the page owner and are not returned.
- —Engagement keeps growing after a post goes up, so recent posts undercount compared with older ones.
- —Video transcripts are only available when the video has speech that can be transcribed.
Questions, answered
Yes — every Data Source endpoint, including this one, is synchronous: the lookup runs inside the request and the result comes back in the same response, no polling. If a lookup hits its time budget before finishing, the response comes back with partial: true and whatever records it collected so far — re-run with a smaller max_items to get a complete result instead of a partial one.
Related sources
Try facebook posts on your own data
One request format across every source in the catalog.