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-comments Posts & reels https://api.fetchlayer.dev/instagram/post-comments 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
}