LurkAPI
Docs · Post comments

Post comments

A public post's top comments with their authors, times and reaction counts.

1 credit per callFresh within 5 minutesMCP tool: facebook_post_comments
GEThttps://api.lurkapi.com/v1/facebook/post/comments

Example responseView as markdown

When to use this

Pass a public post, video or reel url. Returns the comments Facebook shows logged-out visitors on the post's page, its "most relevant" first page (usually 10), and comment_count, the post's total. There's no cursor: later pages need Facebook's GraphQL, which it refuses to our servers. Replies aren't included; reply_count says how many each comment has.

Parameters

All parameters go in the query string.

ParameterDescription
url
stringrequired
A public Facebook post or video URL. Supports posts, permalink.php, story.php, videos and watch URLs; share links and groups are unavailable.
Example
https://www.facebook.com/NASA/posts/pfbid0jzaSu71udHuXXhr9dE2wWtP3B23baKHFfD3dfAKXCoFQ3gCR8UpZa6iErzsiq77zl

Example request

Replace YOUR_API_KEY with your key, or set LURKAPI_KEY for the code. Get a free key.

Language

Example response

A real response from this endpoint, captured from the live API and trimmed to a couple of items. Strings over 96 characters (mostly signed media URLs) are cut short and end in ….

Show the example response (1 KB)
{
  "success": true,
  "credits_remaining": 999988,
  "credits_charged": 1,
  "comments": [
    {
      "id": "1862694261574416",
      "text": "This looks like a PS2 cut scene",
      "created_at": 1792197064,
      "author": {
        "id": "pfbid02miHVvvByo5tZubddt29nYwro7DNwUNP4p4qWKEC8hk8oxtsYPnVQdC6tXqhwjwvxl",
        "name": "Alberto Sánchez",
        "url": null
      },
      "reaction_count": 292,
      "reply_count": 2
    },
    {
      "id": "1116632204174565",
      "text": "It's a rocket induced nebula.",
      "created_at": 1792183476,
      "author": {
        "id": "pfbid02uHxufd7XaHVUqtAeSQZZJejKBDV3ZYLCJMKnBNdvjq8dxSvdLaW1Zw79AtRBSZ66l",
        "name": "Christian Bradley Hubbs",
        "url": "https://www.facebook.com/c.b.hubbs.102"
      },
      "reaction_count": 210,
      "reply_count": 7
    }
  ],
  "comment_count": 2565
}

Response fields

Every field of a successful response. [] marks a list: a[].b is the b of each item in a. nullable fields can be null; optional fields can be missing.

Show all 14 fields
FieldTypeDescription
successtrueAlways true here; errors have success: false.
credits_remainingnumberYour balance after this call. On anonymous playground calls: free tries left today.
credits_chargednumberCredits this call cost; 0 on free endpoints. On anonymous playground calls: tries used (1).
commentsobject[]Top comments, most relevant first.
comments[].idstringNumeric comment id.
comments[].textstringnullableThe comment's text; null for a sticker- or image-only comment.
comments[].created_atnumbernullableWhen it was posted, as Unix seconds; null when Facebook does not disclose it to public visitors.
comments[].authorobjectWho wrote the comment.
comments[].author.idstringnullableCommenter id. Facebook gives logged-out visitors an opaque pfbid… id for most people, the numeric id for Pages.
comments[].author.namestringnullableCommenter's display name.
comments[].author.urlstringnullableCommenter's Facebook URL; null when Facebook hides it from logged-out visitors.
comments[].reaction_countnumbernullableReactions to the comment, when Facebook shows an exact number; null when Facebook does not disclose it to public visitors.
comments[].reply_countnumbernullableReplies to the comment; null when Facebook does not disclose it to public visitors.
comment_countnumbernullableTotal comments on the post; null when Facebook does not disclose it to public visitors.

Caching and freshness

Responses are cached for up to 5 minutes, so a repeat call within that window can return the same data. It still costs 1 credit.

Errors

Errors return { success: false, error, code, docs } with the HTTP status below. Validation errors, 401/402/429 rejections and 5xx failures are free; not_found is charged (how charging works). All error codes.

StatusCodeMeaning
401missing_api_keyNo API key. Send it in the x-api-key header.
401invalid_api_keyThe key is unknown or was revoked.
402insufficient_creditsNot enough credits for this call. Buy a pack or wait for tomorrow's top-up.
403account_suspendedThis account is suspended. Contact support@lurkapi.com. Never charged.
403not_publicThe platform confirmed this account or content isn't available to logged-out visitors. Use a publicly visible target. Charged when the platform was checked.
404not_foundThe endpoint, or the thing you asked for (ad, post, subreddit), doesn't exist. Charged when the platform was checked.
405method_not_allowedEndpoints take GET with query params.
429rate_limitedToo many calls at once. Wait for the retry-after seconds, then retry.
500internal_errorSomething broke on our side. Retry; 5xx errors are free.
502upstream_errorThe platform didn't give a usable answer. Retry; 5xx errors are free.
503upstream_busyAll our connections to the platform are busy. Retry in a few seconds; 5xx errors are free.
504upstream_timeoutThe platform took over 30 seconds to answer (90 for web pages). Retry; timeouts are free.

Use it in Claude

Once LurkAPI is connected to Claude, this endpoint is the facebook_post_comments tool. Ask in plain English, for example:

Ask Claude
Use LurkAPI's facebook_post_comments with url "https://www.facebook.com/NASA/posts/pfbid0jzaSu71udHuXXhr9dE2wWtP3B23baKHFfD3dfAKXCoFQ3gCR8UpZa6iErzsiq77zl" and summarize what you find.

Claude calls facebook_post_comments with arguments like these, and each call costs 1 credit:

Tool arguments
{
  "url": "https://www.facebook.com/NASA/posts/pfbid0jzaSu71udHuXXhr9dE2wWtP3B23baKHFfD3dfAKXCoFQ3gCR8UpZa6iErzsiq77zl"
}

Tool results are compact to save tokens: no nulls or empty lists, one URL per image or video, transcripts as plain text unless you pass timestamps=true. A result over 45,000 characters comes in parts: its _note gives the offset for the rest, and later parts are free for 15 minutes. trim=false returns the full response.

From the blog

All posts