Troubleshooting · October 2026

Instagram Graph API vs Instagram Scraping API

You signed up for Meta's official Instagram API, got an access token, and still can't pull another account's posts or followers. Here's why, and what to use instead.

· 8 minute read

“Instagram API” means two very different things, and the confusion costs developers real time. One is Meta's official Instagram Graph API (formerly Instagram Basic Display API, now folded into the Instagram Platform) — a permissioned interface for managing accounts that have explicitly connected to your app. The other is a scraping API — a third-party service that reads public Instagram data directly, the way a browser would, without needing the target account's permission.

If you came here after your Graph API app returned an empty result for someone else's profile, or after hitting a wall in Meta's app review process, you are not missing a parameter. You are using the wrong tool for the job.

What the Graph API is actually built for

Meta's Instagram Platform documentation is explicit: it is a collection of APIs that let your app manage Instagram professional (business or creator) accounts. It is built for cases like:

Every one of those cases requires the Instagram account owner to go through Meta's OAuth flow and grant your app permission. There is no endpoint that takes an arbitrary username and returns that account's public posts or follower count unless that account owns the access token your app is using.

Where developers get stuck

What you wantWhat the Graph API requires
Read a competitor's public profile or postsNot possible — you can only read accounts that connected to your app
Monitor an industry hashtagLimited hashtag search exists but only for a connected business account's own recent-media context, with strict rate ceilings
Pull data without the account owner's involvementNot possible — every account must complete OAuth with your app first
Go live with more than a handful of test usersApp review: business verification, a written use-case, often a screencast, and a waiting period that can run days to weeks
Personal (non-business) account dataLargely out of scope; most useful endpoints require a professional account

None of this is a bug. Meta built the Graph API as a permissioned management layer, not a public data API, specifically so that arbitrary apps cannot pull data about accounts that never agreed to it. The friction — OAuth, business verification, app review — is the access-control model working as designed.

If your use case is competitive research, influencer vetting, lead sourcing, or any workflow that needs data from accounts you do not own or manage, the Graph API was never going to serve that request, no matter how the permissions are configured.

What a scraping API does differently

A scraping API reads the same public information a signed-out browser or the Instagram app would show for a public account — profile fields, posts, followers count, stories while they're live, hashtag pages — without requiring that account to authorize anything. The trade-offs run the other way from the Graph API's:

A side-by-side request

The practical difference shows up immediately in what each call can target:

Instagram Graph API — reads only an account YOUR app owns/manages
GET https://graph.instagram.com/me?fields=id,username,media_count
  &access_token=TOKEN_FROM_THAT_ACCOUNTS_OAUTH_FLOW
GramScraper — reads any public account by username
curl --get \
  "https://gramscraper.com/api/instagram/v1/user/by/username" \
  --header "Authorization: Bearer $GRAMSCRAPER_API_KEY" \
  --data-urlencode "username=natgeo"

The Graph API call only works if natgeo's own Instagram account completed your app's OAuth flow and granted that token. The second call works for any public username, with no action required from that account, because it reads public data rather than acting on behalf of an authorized one.

When you genuinely need the Graph API instead

If your product publishes content to a business's own Instagram account, reads that business's own comments and insights, or needs official write access, the Graph API is the correct and only compliant path — a scraping API cannot post, reply, or act on an account's behalf, and should not be used to try. Build for OAuth and plan for app review time from the start.

When a scraping API is the right tool

If your product needs public data about accounts that have no relationship with your app — competitor tracking, influencer vetting, lead lists, market research, content discovery — a scraping API is the tool built for that, and the Graph API was never going to grant it no matter how you configure permissions. GramScraper covers profiles, posts, stories, reels, comments, hashtags, locations, and audio data for public Instagram accounts, plus documented TikTok routes, billed per request from a prepaid credit balance that does not expire.

Where to go next

For a working profile call end to end, see the API documentation. If you're evaluating providers rather than just the access model, see five Instagram scraping APIs compared. If you've already started with a DIY scraper and are hitting platform pushback, read the blocked and challenge triage guide.

Frequently asked questions

Can the Instagram Graph API get data from any public account?

No. The Graph API only returns data for Instagram professional accounts that have explicitly connected to your Meta app through OAuth. It cannot fetch posts, followers, or profile data for an arbitrary public account you don't control.

Why does my Instagram Graph API app need app review?

Most Graph API permissions beyond basic profile access are restricted until Meta reviews your app's use case, which requires a business verification, a use-case description, and often a screencast. This can take days to weeks and can be rejected.

What should I use instead of the Graph API for public competitor or market data?

A scraping API that reads public Instagram data directly, without requiring the target account to authorize your app. It trades official support for not needing account ownership, business verification, or app review.

Get 100 free API credits

Pull public Instagram profile and post data without OAuth, business verification, or app review.

Create a free account →