# How do I get comments on an Instagram post that is not mine?

Instagram. Checked September 2026.

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.

## GET /v1/instagram/posts/{id}/comments

```bash
curl "https://api.openhandle.dev/v1/instagram/posts/910100000001/comments" \
  -H "Authorization: Bearer $OPENHANDLE_API_KEY"
```

```ts
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();
}
```

200 OK:

```json
{
  "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.next` back as `cursor`. When it is `null`, 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.replies` above zero has a thread. Read it with `GET /v1/instagram/posts/{id}/comments/{commentId}/replies`.
- **Hidden numbers stay hidden.** When Instagram does not show a like count, `metrics.likes` is `null`. 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` |

```json
{
  "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.

## Related

- [Pagination](https://openhandle.dev/docs/concepts/pagination): Opaque cursors, one page per request, and what CURSOR_MISMATCH means.
- [URL resolution](https://openhandle.dev/docs/concepts/url-resolution): Paste a platform URL and get the right resource and its ID.
- [Instagram API without Graph approval](https://openhandle.dev/docs/guides/instagram-api-without-graph-approval): What the official APIs cover and what they never did.
