Instagram Comments API — Comments on a Post
Documentation menu
FetchLayer FetchLayer API

Read a post’s comments

The public comments on an Instagram post or reel, by URL or short code, each with its text, author, timestamp, like count and reply count. The ceiling matters more than the fields, so it is stated first: only the first page of comments is public to a signed-out reader — about 13 of them. Instagram reports a far larger totalCount and sets hasMore true, but there is no further page to read, and every response says so in a note shaped like "These are the 13 comments of the 4,334 the source reports that are public for this post. The source does not publish the rest to a signed-out reader, so there is no further page to read." Do not loop on hasMore: paging returns the same comments and bills again. Reply text is not public either — each comment reports only how many replies it has. Billing: 1 credit.

POST /post-comments Posts & reels
https://api.fetchlayer.dev/instagram/post-comments
OpenAPI JSON

Headers

Authorization string required

Bearer token — your FetchLayer API key.

Parameters

post string required

A post or reel URL, or the short code from that URL.

format string optional

json or markdown. Markdown returns a rendered summary instead of the structured record. (default: json)

timeoutMs integer optional

Time limit for each individual page read, in milliseconds (max 60000). It bounds one page, not the whole request.

Response Fields

post-comments

Read a post’s comments

transport string

The upstream source. Always "instagram".

notes string[]

Caveats you can act on — a ceiling Instagram imposes, a counter it withholds, a list that stopped early. Several real limits are reported only here, so read them. An empty result always comes with a note explaining it, never as an unexplained empty array.

pagesFetched number

Pages of results read, which is what the request costs: one credit per page. resolve-url reports 0 and is not billed.

shortcode string

The post the comments belong to.

comments object[]

The first page of comments, in Instagram’s own order.

comments[].id string

Numeric comment id.

comments[].text string

The comment body.

comments[].createdAt string

ISO 8601 timestamp.

comments[].likeCount number

Likes on the comment.

comments[].replyCount number

How many replies the comment has, where Instagram publishes it. The reply text itself is not public.

comments[].author object

id, username, fullName, profilePicUrl, verified, privateAccount and profileUrl.

commentCount number

How many comments are in this response — about 13, which is the whole public page.

totalCount number

The total Instagram publishes for the post. Far larger than commentCount, and unreachable: the rest is not published to a signed-out reader.

hasMore boolean

What Instagram claims. It is true even when no further page can be read, which is why the note spells it out — do not loop on it.

Request

curl -X POST "https://api.fetchlayer.dev/instagram/post-comments" \
  -H "Authorization: Bearer ss-your-key" \
  -H "Content-Type: application/json" \
  -d '{"post":"DcOX3hWFiey"}'

Response

{
  "transport": "instagram",
  "notes": [
    "These are the 13 comments of the 4,334 the source reports that are public for this post. The source does not publish the rest to a signed-out reader, so there is no further page to read."
  ],
  "pagesFetched": 1,
  "shortcode": "DcOX3hWFiey",
  "comments": [
    {
      "id": "18389100721207166",
      "text": "I see some one holding ball",
      "createdAt": "2026-09-16T17:16:25.000Z",
      "likeCount": 0,
      "replyCount": null,
      "author": {
        "id": "56682311975",
        "username": "abhinaya.2024",
        "fullName": null,
        "verified": false,
        "privateAccount": null,
        "profileUrl": "https://www.instagram.com/abhinaya.2024/"
      }
    }
  ],
  "commentCount": 13,
  "totalCount": 4334,
  "hasMore": true
}