Facebook hub

Facebook comments API

Pull top-level comments on a public Facebook post or Reel — text, author, reactions, reply counts — with cursor pagination in the shared Social Fetch envelope.

GET /v1/facebook/posts/comments

1 credit per successful request.

About this endpoint

A Facebook post caption is often thin. The useful signal sits in the thread: price haggling under a group listing, product complaints on a brand Page, vendor names in a local buy/sell reply. You already have a post or Reel permalink (or a feedback id from an earlier Facebook call). You need the comment text and who wrote it, and you need to page when the thread is long. Homegrown Facebook comment scrapers hit login walls and markup churn the same way page scrapers do.

`GET /v1/facebook/posts/comments` accepts a public post or Reel `url`, an optional `feedbackId`, or both (at least one is required). Optional `cursor` continues from a previous page. On a completed lookup, read `data.lookupStatus` (`found` or `not_found`), then `data.comments` and `data.page`. Each top-level comment can include `id`, `text`, `createdAt`, `replyCount`, `reactionCount`, `repliesCursor`, and an `author` with `name`, optional `platformUserId`, and `shortName`. When `data.page.hasMore` is true, pass `data.page.nextCursor` as `cursor` on the next call.

This route lists top-level comments only. Nested replies use `GET /v1/facebook/posts/comments/replies` with a comment's `repliesCursor`. Post or Reel metadata is `GET /v1/facebook/posts`. Pricing is on the credit badge for this operation; bill from `meta.creditsCharged` on every response.

Facebook comments API FAQ

How do I list Facebook post or Reel comments via API?

Call `GET /v1/facebook/posts/comments` with your Social Fetch API key (`x-api-key`) and either a public post/Reel `url`, a `feedbackId`, or both. Read `data.lookupStatus`, then `data.comments` and `data.page`. Full parameters and examples are in the API docs.

How much does the Facebook comments endpoint 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. Each paginated page is a separate billed request.

How does pagination work on Facebook post comments?

Each response includes `data.page.nextCursor` and `data.page.hasMore`. When `hasMore` is true, pass `nextCursor` as the `cursor` query param on the next request. The cursor is opaque — do not invent or parse it.

What fields are in each Facebook comment?

Items can include id, text, createdAt (ISO-8601), replyCount, reactionCount, repliesCursor (string or null), and author with name, optional platformUserId, and shortName when Facebook exposes them.

When should I pass feedbackId instead of (or with) url?

Provide at least one of `url` or `feedbackId`. Use a post or Reel permalink when that is what you have. Pass `feedbackId` when an earlier Facebook response already gave you that identifier — it can speed up the lookup. You can send both on the same request.

Facebook comments vs replies vs post detail?

Use this route for top-level comments on one post or Reel. Use `GET /v1/facebook/posts/comments/replies` with a comment `repliesCursor` for nested replies. Use `GET /v1/facebook/posts` for the post or Reel card itself. See the Facebook platform hub for the full list.

Does a found lookup always return comments?

No. `lookupStatus` of `found` means the post or Reel resolved. `data.comments` can still be an empty array when there are no comments or none were returned for that page. You still pay the credit for a completed lookup. Missing or unresolved targets return `not_found` with an empty list.