Facebook Comments API and MCP — Comments and Replies on Posts
Send the URL of a public Facebook post, photo, video or reel and this source returns its comments as data: text, date, author, likes, reply count and attachments. Switch on include_replies and it also returns replies up to three levels deep, each as its own record.
- You send
- A public post, photo, video or reel URL
- You get back
- Comments (and optionally replies) with text, date, author and likes
- Coverage
- Comments on public Facebook posts, photos, videos and reels.
- Price
- 5 points per returned comment, up to 1,000 per request — $5 per 1,000
- Billed per comment actually returned, replies included, capped by max_items. A post with no comments 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 |
|---|---|---|---|
| Reading comments by hand | Expand threads and copy text into a sheet | Free, and very slow | Not workable past a few dozen comments |
| Meta's Graph API | App review and page permissions | Free, gated by review | Comment access is limited to pages you manage |
| NeuralVerge | One request per post | $5 per 1,000, misses not billed | Public comments only — hidden or deleted comments are not returned |
What you get back
Every field in the example response below.
| Field | Type | Description |
|---|---|---|
total_items | number | How many comments came back. |
items[].id | string | Facebook's comment ID. |
items[].url | string | Direct link to the comment. |
items[].text | string | Comment text. |
items[].date | string | When the comment was posted (ISO 8601). |
items[].author_name | string | Display name of the commenter. |
items[].author_url | string | Link to the commenter's profile or page. |
items[].likes_count | number | Likes on the comment. |
items[].replies_count | number | null | How many replies the comment has. |
items[].depth | number | 0 for a top-level comment, 1-3 for replies. |
items[].reply_to_comment_id | string | null | The parent comment, for replies. |
items[].attachments | array | Images or stickers attached to the comment. |
items[].post_url | string | The post the comment belongs to. |
items[].post_title | string | The post's text, for context. |
Example response
A real response, as returned.
{
"session_id": "1914f99d-a87a-4dc5-9b48-39e7cdf8035e",
"kind": "facebook_comments",
"url": "https://www.facebook.com/NASA/posts/pfbid037y4YEtzSz15deRRZ5SeZg2vWoCgThrYAHqNTkcxrshdkwhnaNknzD3KE8G1Hp3Upl",
"max_items": 2,
"include_replies": false,
"sort": "RANKED_UNFILTERED",
"partial": false,
"machine": {
"total_items": 2,
"items": [
{
"id": "1140810088286470",
"text": "The Hunter’s Moon and Halloween decorations? That’s a whole spooky vibe! 🌕🎃 Nature really knows how to set the mood",
"date": "2026-10-26T07:59:18.000Z",
"author_name": "Nova",
"author_url": "https://www.facebook.com/people/…",
"likes_count": 0,
"replies_count": 1,
"depth": 0,
"reply_to_comment_id": null,
"attachments": [],
"post_title": "Have you put up your Halloween decor? The night sky will add the finishing touch. 🌕 …"
},
{
"id": "1703354588023652",
"text": "Hunter's Moon over a flock of birds is such a cool shot. Do you think the orange color is mostly from the haze near the horizon?",
"date": "2026-10-26T07:40:23.000Z",
"author_name": "Mark",
"author_url": "https://www.facebook.com/people/…",
"likes_count": 0,
"replies_count": null,
"depth": 0,
"reply_to_comment_id": null,
"attachments": [],
"post_title": "Have you put up your Halloween decor? The night sky will add the finishing touch. 🌕 …"
}
],
"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 50), sort (RANKED_UNFILTERED for all, RANKED_THREADED for most relevant, RECENT_ACTIVITY for newest; default RANKED_UNFILTERED), include_replies (boolean — each reply is billed as a result), newer_than (a date or a period).
curl -X POST https://api.neuralverge.ai/functions/v1/run-facebook-comments \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "url": "https://www.facebook.com/NASA/posts/pfbid037y4YEtzSz15deRRZ5SeZg2vWoCgThrYAHqNTkcxrshdkwhnaNknzD3KE8G1Hp3Upl", "max_items": 50, "sort": "RECENT_ACTIVITY" }'What teams use it for
Where this field shows up in an actual workflow.
Score the reaction to a launch, price change or announcement from the comments themselves.
Collect the questions and complaints people raise under a competitor's posts.
Spot recurring problems customers report in public before they escalate.
Read how an audience talks about a topic in its own words.
Coverage, freshness and limits
What this source covers, how fresh it is, and where it stops.
Comments on public Facebook posts, photos, videos and reels.
Read at request time.
This source returns publicly visible content, which can include the names and words of private individuals. Use it for legitimate business purposes under your own lawful basis, honour deletion and opt-out requests, and check the acceptable use policy for what is out of bounds. Every record is stamped with the URL it was read from and a session id you can trace.
- —Comments the page hid or deleted are not returned.
- —Replies are only included when include_replies is on, and only up to three levels deep.
- —Comment order depends on the sort you choose; 'most relevant' is Facebook's own ranking.
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 comments on your own data
One request format across every source in the catalog.