Instagram media comments API
Page the comments on a post or Reel in Instagram's ranked order or newest first, each with its author, likes and reply count.
GET /v2/instagram/media/{media}/comments1 credit Failed requests are free
About this endpoint
GET /v2/instagram/media/{media}/comments takes a shortcode, a post or Reel URL, or a numeric media id. Read data.lookupStatus first (found or not_found), then data.comments: each comment has id, text, createdAt, author (the shared profile summary with handle, id, picture and verified flag), likeCount and replyCount.
sort=top (the default) is Instagram's own ranked order, the one the app shows first, and also reports isPinned, isByOwner and isLikedByOwner. sort=newest lists the latest comments first; where a view doesn't report them, replyCount and the owner flags are null. If one order is briefly unavailable (503), retry or try the other sort.
When data.page.hasMore is true, pass data.page.nextCursor as cursor with the same media and sort. A cursor works only for the post and order that issued it. A page is billed once, only when it is served, so read meta.creditsCharged. replyCount can exceed the replies you can list, because Instagram hides some; read a thread with GET /v2/instagram/media/{media}/comments/{commentId}/replies. meta.version is v2.
Instagram media comments API FAQ
How do I get the comments on an Instagram post or Reel via API?
Call GET /v2/instagram/media/{media}/comments with your Social Fetch API key (x-api-key) and a shortcode, post URL or media id in the path. Read data.lookupStatus, then data.comments, and keep following data.page.nextCursor while data.page.hasMore is true. See the API docs for parameters and examples.
How much does the Instagram comments API 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.
What is the difference between sort=top and sort=newest?
top is Instagram's ranked order: the comments the app shows first, with reply counts and the owner's pin and like flags. newest is newest first; where a view doesn't report them, reply counts and the owner flags are null. top is the default.
Why is the replyCount larger than the replies I can list?
Instagram hides some replies, such as those it filters, so a thread can list fewer replies than its replyCount says. The count is Instagram's own.
What does a 503 mean on this endpoint?
That sort is briefly unavailable. Nothing is charged. Retry with backoff, or try the other sort. The two orders never stand in for each other, so you always get the order you asked for.
Can I use a cursor with another post or another sort?
No. The cursor is tied to the post and the sort that issued it, so pass back the exact value you received with the same media and sort. A cursor from another post or order is a 400 bad_request.
What does not_found mean?
The post doesn't exist, was deleted, or belongs to a private account, in either sort. The response is a normal 200 with an empty comments list, billed as a page. A post with no comments, or with comments turned off, is found with an empty list.
Other Instagram endpoints
- ProfileGET /v2/instagram/profiles/{profile}
- Profile mediaGET /v2/instagram/profiles/{profile}/media
- Profile highlightsGET /v2/instagram/profiles/{profile}/highlights
- Profile storiesGET /v2/instagram/profiles/{profile}/stories
- Profile followingGET /v2/instagram/profiles/{profile}/following
- HighlightGET /v2/instagram/highlights/{highlightId}
- Profile engagementGET /v2/instagram/profiles/{profile}/engagement
- Search reelsGET /v2/instagram/reels/search