Instagram Graph API vs a scraper API: limits, pricing, when to use which
An honest comparison of Meta's Instagram Graph API and third-party scraper APIs: what data each can access, setup and review effort, rate limits, cost and the use cases where each one wins.
By the Scrape Everything team · · 5 min read
If you are building anything with Instagram data, you will hit this question early: should you use Meta's official Instagram Graph API or a third-party scraper API? The two are often discussed as alternatives, but they solve different problems. Picking the wrong one costs weeks: either waiting for an app review that will not give you the access you need, or building on scraped data when your product really needed first-party access.
This post compares them on what matters in practice. It is written by a scraper API provider, so we have tried to be explicit about where the official API is the better choice.
The short answer
- Use the Graph API when your users connect their own professional Instagram accounts to your app and you act on their behalf: publishing, reading their insights, replying to their comments and messages.
- Use a scraper API when you need public data about accounts that are not your users: creator discovery, competitor tracking, research, enrichment.
- Many products use both: the Graph API for connected accounts, a scraper API for everyone else.
What the Instagram Graph API is
The Instagram Graph API is Meta's official API for Instagram professional accounts (business and creator accounts). Your app authenticates the account owner through Meta's login flow, requests specific permissions, and then reads or writes data for that account. Typical capabilities include publishing media, reading the account's media and comments, moderating comments, reading insights such as reach and impressions, and handling messages through the messaging APIs.
Meta also offers a business discovery feature that lets a connected professional account look up basic public information about other professional accounts, such as follower counts and recent media. It does not cover personal accounts, and it is still tied to your own connected account and Meta's permission model.
What a scraper API is
A scraper API reads the data that Instagram shows publicly to logged-out visitors and returns it as structured JSON. You send a username or a post URL, and the provider handles fetching, proxies, retries and parsing. No Instagram account or Meta app is involved on your side. The flip side: you only get public data. No insights, no private accounts, no direct messages, no publishing.
Side by side
| Instagram Graph API | Scraper API | |
|---|---|---|
| Whose data | Professional accounts that authorized your app | Any public account or post |
| Personal accounts | No | Public profile data, yes |
| Private data (insights, DMs) | Yes, for connected accounts with permission | No |
| Publishing and moderation | Yes | No (read only) |
| Setup | Meta app, business verification and app review for most permissions | Sign up, create an API key |
| Time to first request | Days to weeks, depending on review | Minutes |
| Rate limits | Meta's usage-based limits per app and account | Provider's per-account limits |
| Cost | No direct fee from Meta | Pay per request or subscription |
| Stability | Versioned, with deprecation schedules | Depends on provider; platform changes can break fields |
| Terms | Meta Platform Terms and developer policies | Provider terms; you remain responsible for lawful use |
Where the Graph API wins
- Social media management tools. Scheduling posts, replying to comments and reading insights for clients' accounts requires first-party access.
- Analytics for your own accounts. Reach, impressions, saves and audience demographics are private metrics. Only the account owner (and apps they authorize) can see them.
- Messaging and customer support. Handling Instagram DMs is only possible through Meta's messaging APIs.
- Long-term stability. Versioned endpoints with deprecation notices are easier to maintain than any scraped source.
Where a scraper API wins
- Influencer discovery and vetting. The creators you evaluate have not connected their accounts to your app, and many are not professional accounts at all.
- Competitor and market monitoring. Tracking other brands' public posts and engagement over time.
- Research and journalism. Collecting public posts and comments for analysis, within the bounds of applicable law and ethics review.
- Lead and CRM enrichment. Adding public bio, link and follower data to company or creator records.
- Prototyping. Testing an idea in an afternoon instead of waiting for app review.
Rate limits and scale
The Graph API's limits are calculated by Meta based on your app and the accounts using it, and the exact formula has changed over the years. In practice, it scales well for operations on connected accounts but is not designed for looking up thousands of arbitrary accounts.
A scraper API's limits are set by the provider and are usually simple: requests per minute and concurrent requests per account. On Scrape Everything, for example, free accounts get 60 requests per minute and 5 in parallel, and paid accounts 300 per minute and 20 in parallel, with higher limits on request. The real constraint at scale is cost, not limits.
Cost
Meta does not charge for Graph API calls, but it is not free in practice: you invest engineering time into the app review process, business verification and keeping up with policy changes. For a product built around connected accounts, that investment is unavoidable and worth it.
Scraper APIs charge per request or by subscription. On Scrape Everything, a profile lookup costs 1 credit; credit packs bring that to roughly $0.90 to $1.56 per 1,000 requests, failed requests are refunded and repeated reads within your cache window are free. Our pricing comparison shows how other providers charge.
Data quality and freshness
Both approaches return live data. The Graph API returns exact metrics for connected accounts, including some that are not visible publicly. A scraper API returns what the public page shows: exact counts for most fields, but some values may be hidden by the account owner (for example when like counts are disabled on a post). Good scraper APIs make these cases explicit, for instance with a like_and_view_counts_disabled flag rather than a misleading zero.
Compliance
With the Graph API, the rules are Meta's platform terms plus the consent you collect from your users. With a scraper API, the provider's terms apply, and you are responsible for how you use the data: public data about people is still personal data under laws like the GDPR. We cover this in more depth in Is scraping public social media data legal? (not legal advice).
A simple decision checklist
- Do the accounts you need data from belong to your users, and will they log in to your app? If yes, start with the Graph API.
- Do you need private metrics, publishing or messaging? Graph API only.
- Do you need data about accounts that are not your users, including personal accounts? Scraper API.
- Do you need it this week, without app review? Scraper API, and plan the Graph API integration in parallel if you will need it later.
If a scraper API fits your case, the Instagram Scraper API covers profiles, posts, reels, comments and reels search, and the profile scraping tutorial gets you to a working integration in Node.js or Python. New accounts get 100 free credits.