Can I get data from a private Instagram account?
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.
Checked September 2026 · request and response run against the API · no affiliate links
curl "https://api.openhandle.dev/v1/instagram/profiles/@quiet_harbor_test" \
-H "Authorization: Bearer $OPENHANDLE_API_KEY"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
}{
"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 returnsPROFILE_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 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 |
{
"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.
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.