# Can I get data from a private Instagram account?

Instagram. Checked September 2026.

No. A private Instagram account shows nothing to anyone who does not follow it, and Openhandle reads only what a logged-out visitor can see. The API returns a `PROFILE_PRIVATE` error with no profile data, no posts, and no follower count.

Any service that promises private account data either uses fake follower accounts, which breaks Instagram's terms and gets banned, or makes numbers up. We do neither.

## GET /v1/instagram/profiles/@username

```bash
curl "https://api.openhandle.dev/v1/instagram/profiles/@quiet_harbor_test" \
  -H "Authorization: Bearer $OPENHANDLE_API_KEY"
```

```ts
import { OpenHandle } from '@openhandle/sdk';

const openhandle = new OpenHandle({ apiKey: process.env.OPENHANDLE_API_KEY! });

try {
    await openhandle.instagram.profile('quiet_harbor_test').get();
} catch (error) {
    console.log(error.code); // PROFILE_PRIVATE
}
```

403 Forbidden:

```json
{
  "error": {
    "code": "PROFILE_PRIVATE",
    "message": "This profile is private.",
    "requestId": "req_01j8…",
    "retryable": false
  }
}
```

This is the whole response. No partial profile, no cached numbers from before the account went private. The example account is a Test fixture, so you can see the error on a free Test key.

## What you can still do

- **Store the answer.** A private answer is a result, not a failure. Store it with the time. Re-check on your own schedule. Accounts flip public again more often than you would think.
- **Keep the ID.** If you read the account while it was public, you have its `id`. Look up by ID later. A renamed account still resolves. A deleted one returns `PROFILE_NOT_FOUND`.
- **Ask the owner.** If the account owner wants to share their data with you, the Instagram Graph API is the right tool. They authorize your app, and you read their own account with their consent.

## What we never do

Openhandle never logs in, never follows, and never sends a follow request. We do not read direct messages, close-friends posts, or stories from private accounts. Account owners can ask us to block their profile even when it is public. The [public data notice](/legal/public-data-notice) lists every limit.

## When this does not work

The three answers a profile lookup can give, and what each one means.

| Situation | Status | Code |
|---|---|---|
| The account is private | 403 | `PROFILE_PRIVATE` |
| The account is deleted, banned, or never existed | 404 | `PROFILE_NOT_FOUND` |
| The account is public | 200 | `profile data` |

```json
{
  "error": {
    "code": "PROFILE_NOT_FOUND",
    "message": "This profile was not found.",
    "requestId": "req_01j8…",
    "retryable": false
  }
}
```

Private and not-found answers bill like any answered request, because the API did the work to find out. Provider errors and our errors are never billed. Branch on `code`, never on `message`.

## Related

- [Private and deleted accounts](https://openhandle.dev/docs/guides/private-and-deleted-accounts): How to handle the three definitive answers in a pipeline.
- [Public data notice](https://openhandle.dev/legal/public-data-notice): What Openhandle reads, what it never does, and how owners can block a profile.
- [How do I get an Instagram follower count without logging in?](https://openhandle.dev/questions/how-do-i-get-an-instagram-follower-count-without-logging-in): The public-account version of this question, with a working request.
