How do I get comments on an Instagram post that is not mine?
Call the Openhandle comments endpoint with the post ID. Each request returns one page of comments with the author, text, time, and like count, plus a cursor for the next page. The post can belong to anyone, as long as the account is public.
If you start from a post URL, pass the URL to the fetch endpoint first. It returns the post with its id. Then page through the comments with that ID.
Checked September 2026 · request and response run against the API · no affiliate links
curl "https://api.openhandle.dev/v1/instagram/posts/910100000001/comments" \
-H "Authorization: Bearer $OPENHANDLE_API_KEY"import { OpenHandle } from '@openhandle/sdk';
const openhandle = new OpenHandle({ apiKey: process.env.OPENHANDLE_API_KEY! });
let page = await openhandle.instagram.post('910100000001').comments.list();
while (page) {
for (const comment of page.data) console.log(comment.author.handle, comment.text);
page = await page.next();
}{
"platform": "instagram",
"resource": "comment",
"capturedAt": "2026-09-18T09:20:41Z",
"source": "live",
"data": [
{
"id": "910200000001",
"postId": "910100000001",
"text": "This fictional kit is excellent.",
"createdAt": "2026-08-09T16:30:00Z",
"author": { "id": "910000000020", "handle": "copperfield_notes_test" },
"metrics": { "likes": 12, "replies": 0 }
},
{
"id": "910200000002",
"postId": "910100000001",
"text": "Does the synthetic compass point north?",
"createdAt": "2026-08-09T17:30:00Z",
"author": { "id": "910000000020", "handle": "copperfield_notes_test" },
"metrics": { "likes": 11, "replies": 0 }
}
],
"meta": { "cursors": { "next": "b3BhcXVlLWN1cnNvcg" } }
}Trimmed to two comments and the fields this question needs. The example post is a Test fixture with 24 comments over several pages, so you can test pagination on a free Test key.
Why the official Instagram API does not do this
The Instagram Graph API reads comments only on media owned by an account that authorized your app. A post on a brand you monitor, a creator you vet, or a competitor is out of reach. There is no permission you can request for it.
Start from a URL
Comments endpoints take the canonical post ID, not a URL. Pass the URL to POST /v1/urls/fetch and it returns the post, including id. In the TypeScript SDK that is openhandle.fetch(url). Store the ID. Shortcodes and URLs change shape, IDs do not.
Paging and replies
- —One page per request. Pass
meta.cursors.nextback ascursor. When it isnull, you have every comment. Cursors are opaque and bound to this post and freshness. Do not build them by hand. - —Replies are separate. A comment with
metrics.repliesabove zero has a thread. Read it withGET /v1/instagram/posts/{id}/comments/{commentId}/replies. - —Hidden numbers stay hidden. When Instagram does not show a like count,
metrics.likesisnull. We never write a zero for a number the platform hid.
When this does not work
These answers are definitive. Store them, do not retry them.
| Situation | Status | Code |
|---|---|---|
| The post is deleted or never existed | 404 | POST_NOT_FOUND |
| The account went private | 403 | PROFILE_PRIVATE |
| The cursor came from another request | 400 | CURSOR_MISMATCH |
| The identifier is malformed | 400 | INVALID_IDENTIFIER |
{
"error": {
"code": "POST_NOT_FOUND",
"message": "This post was not found.",
"requestId": "req_01j8…",
"retryable": false
}
}An account can flip private while you page. Handle PROFILE_PRIVATE on any page, not only the first. Every new workspace starts with 100 free live requests, no card needed.
Read next
More Instagram questions
Send your agent ahead.
Paste the prompt into your agent and it sets everything up. Or come yourself, it takes five minutes.