# Instagram Graph API alternative for accounts you do not own

An Instagram Graph API alternative for other people’s accounts. The Graph API reads accounts that log in to your app, plus a little data on other business and creator accounts. Openhandle reads any public account with one API key. Start with 100 free requests, no card.

Checked October 2026. Public pricing pages. No affiliate links.

## At a glance

| Criteria | Instagram Graph API | Openhandle |
|---|---|---|
| Free tier | Free to call once your app is set up and approved | 100 free requests, no card |
| Time to first call | A Meta app, a business or creator account, and App Review before you serve accounts you do not manage | Seconds. No approval wait |
| Coverage | Accounts that log in to your app. Business Discovery reads a few fields of other business and creator accounts | 43 Instagram, 28 TikTok, and 15 X endpoints. More platforms and data added by demand |
| Rate limits | Tied to your account’s impressions. Hashtag search: 30 unique hashtags per 7 days | 10 per second per key. Higher on request |
| Response shape | Instagram only. You pick Graph fields on each call | One schema across Instagram, TikTok, X, Reddit, and YouTube |

## What the Instagram Graph API can read

Meta built the Instagram API for account owners. It works with business and creator accounts. Personal accounts are not supported. A permission only gives you data from the user who granted it.

- **Accounts that log in to your app.** Full access to their media, comments, and insights. To serve accounts you do not manage, you need Advanced Access, and that needs App Review.
- **Business Discovery.** Reads follower count, media count, and media of other business and creator accounts. It skips personal accounts and age-gated accounts. It needs Facebook Login and an Instagram account linked to a Facebook Page.
- **Hashtag search.** Up to 30 unique hashtags in any 7 days. It needs the Instagram Public Content Access feature, which goes through App Review.
- **Rate limits.** For your own accounts, calls in 24 hours equal 4,800 times the number of impressions that account had. Business Discovery and hashtag search follow Meta’s platform rate limits.

So comments on a post you do not own are out of reach. See [how to get comments on an Instagram post that is not yours](/questions/how-do-i-get-comments-on-an-instagram-post-that-is-not-mine). If you used the old Basic Display API, read [what to do now that it is gone](/questions/instagram-basic-display-api-is-deprecated-what-now). For the full limits and setup, see [Instagram API pricing](/compare/instagram-api-pricing).

## Why people look for an alternative

- **Other people’s accounts.** Brands track creators, competitors, and fans. Most of those accounts will never log in to your app.
- **Personal accounts.** Business Discovery cannot see them. Openhandle reads any public account, whatever its type.
- **Comments and followers.** The Graph API reads comments only on media from accounts that granted your app access. It has no follower lists for other accounts.
- **Setup before the first call.** A Meta app, a linked Facebook Page for Business Discovery, and App Review. For a quick number, see [how to get a follower count without logging in](/questions/how-do-i-get-an-instagram-follower-count-without-logging-in).

## Where the Instagram Graph API may fit

- **Publishing and replies.** Post media, reply to comments, and handle messages for accounts you manage. Openhandle is read-only and never writes to Instagram.
- **Private insights.** Reach and audience data for accounts that log in to your app. Public data cannot show those numbers.
- **Official terms.** If your product must run under Meta’s own platform terms, use the Graph API.

You can use both. Use the Graph API for publishing and insights, and Openhandle to read public accounts.

## What changes when you move

- **No App Review.** Create a key and call. Seconds. No approval wait.
- **Any public account.** Business, creator, and personal accounts all work if they are public. Private accounts return PROFILE_PRIVATE.
- **More of the public data.** Comments and replies, followers and following, tagged posts, reels, hashtags, locations, and search.
- **One price per request.** $0.0025 per request, down to $0.002 at volume. 30-day cache hits are free.
- **Failed requests are free.** You pay only when Openhandle returns an answer.
- **One shape.** Profiles, posts, and comments look the same on Instagram, TikTok, X, Reddit, and YouTube.

## Move your integration

1. **Start with a Test key.** Create a Test key in the dashboard. Use the synthetic identifiers in the [quickstart](/docs/quickstart) to check your integration without charges.
2. **Map your calls.** Match the data you need to the [API reference](/docs/api-reference). Check endpoints, parameters, and returned fields before you switch. Keep publishing, replies, and private insights on the Graph API. The table below lists common calls.
3. **Update paths, parameters, and authentication.** Use https://api.openhandle.dev/v1 with Authorization: Bearer followed by your key. There are no user tokens to refresh. Profile usernames need an @ prefix in REST paths. Do not reuse Graph API IDs. Look up profiles by handle and posts by shortcode or URL.
4. **Map response fields.** Successful responses contain platform, resource, capturedAt, source, and data. Map fields using the [response schemas](/docs/concepts/envelope-and-errors). Keep unavailable metrics as null.
5. **Handle pagination and errors.** Pass meta.cursors.next back as cursor for list requests. Graph API paging cursors do not work here. Handle Openhandle error codes and retry only when retryable is true. See [pagination](/docs/concepts/pagination) and [errors](/docs/concepts/envelope-and-errors).
6. **Set a cap.** Pick a monthly spending cap before you go live. We stop before it, so a bad loop cannot run up a bill.
7. **Check before switching.** Check success, empty, private, and not-found cases with a Test key. Then [move to Live](/docs/test-environment/test-to-live) and compare a small sample with the Graph API before you switch production traffic.

| What you fetch | Openhandle call |
|---|---|
| A profile by handle | GET /v1/instagram/profiles/@handle |
| A profile’s posts | GET /v1/instagram/profiles/@handle/posts |
| One post by ID or shortcode | GET /v1/instagram/posts/{identifier} |
| Comments on a post | GET /v1/instagram/posts/{identifier}/comments |
| Followers of a profile | GET /v1/instagram/profiles/@handle/followers |
| Posts for a hashtag | GET /v1/instagram/hashtags/{name}/posts |
| Reel search | GET /v1/instagram/search/reels?q=term |
| A post or profile from a URL | POST /v1/urls/fetch with a JSON url field |

## Verdicts

- **Choose Openhandle.** to read public Instagram accounts you do not own, including personal accounts, with no App Review.
- **Choose the Graph API.** if you publish, reply, or need private insights for accounts that log in to your app.
- **Use both.** Use the Graph API to manage your accounts and Openhandle to read public data.

## How we checked

We read Meta’s Instagram Platform docs at developers.facebook.com in October 2026: the overview, Business Discovery, hashtag search, and rate limits. Meta changes its rules often. If something is out of date, tell us and we fix it.
