nvNeuralVerge
Social media

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.
Comparison

Ways to get this data

Three approaches teams use today, and where each one runs into trouble.

ApproachWhat it takesCostTrade-off
Reading comments by handExpand threads and copy text into a sheetFree, and very slowNot workable past a few dozen comments
Meta's Graph APIApp review and page permissionsFree, gated by reviewComment access is limited to pages you manage
NeuralVergeOne request per post$5 per 1,000, misses not billedPublic comments only — hidden or deleted comments are not returned
Response

What you get back

Every field in the example response below.

FieldTypeDescription
total_itemsnumberHow many comments came back.
items[].idstringFacebook's comment ID.
items[].urlstringDirect link to the comment.
items[].textstringComment text.
items[].datestringWhen the comment was posted (ISO 8601).
items[].author_namestringDisplay name of the commenter.
items[].author_urlstringLink to the commenter's profile or page.
items[].likes_countnumberLikes on the comment.
items[].replies_countnumber | nullHow many replies the comment has.
items[].depthnumber0 for a top-level comment, 1-3 for replies.
items[].reply_to_comment_idstring | nullThe parent comment, for replies.
items[].attachmentsarrayImages or stickers attached to the comment.
items[].post_urlstringThe post the comment belongs to.
items[].post_titlestringThe post's text, for context.
Response

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
}
Integration

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" }'
Use cases

What teams use it for

Where this field shows up in an actual workflow.

Sentiment analysis

Score the reaction to a launch, price change or announcement from the comments themselves.

Objection mining

Collect the questions and complaints people raise under a competitor's posts.

Support signal detection

Spot recurring problems customers report in public before they escalate.

Community research

Read how an audience talks about a topic in its own words.

Coverage & limits

Coverage, freshness and limits

What this source covers, how fresh it is, and where it stops.

Coverage

Comments on public Facebook posts, photos, videos and reels.

Freshness

Read at request time.

Handling

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.

What it will not do
  • —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.
FAQ

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

Related sources

Try facebook comments on your own data

One request format across every source in the catalog.

Get started