Instagram’s official API is good at one job: managing professional accounts that log in to your app. Ask it about anyone else and it gets stingy fast. The rate limits scale with users you may not have yet, Business Discovery returns a handful of counts, and hashtag search stops at 30 tags a week.
Here’s how each limit actually works, so you can tell early whether Meta’s API will carry your project or whether you need something else alongside it.
In short
- Most Instagram calls are capped per user at 4,800 × the account’s daily impressions. Business Discovery and Hashtag Search share a separate app-wide cap of 200 × your daily active users per hour.
- Business Discovery gives follower, post, like, comment and view counts for other business and creator accounts. No comment text, no audience data, no personal accounts.
- Hashtag Search allows 30 unique hashtags per account per rolling 7 days.
- For follower lists, comments, stories or any personal account, you need a scraping API.
Which Instagram API you’re using
Meta now calls the product the Instagram Platform. It only serves Instagram professional accounts, meaning business and creator accounts, that log in to your app. Meta shut the Basic Display API on 4 December 2024 and said there would no longer be Instagram APIs for consumer developer apps, so personal accounts have no official route at all.
There are three ways to set it up, and the choice decides which features you get:
- Instagram API with Instagram Login runs on
graph.instagram.comand doesn’t need a Facebook Page. It doesn’t support Hashtag Search. - Instagram API with Facebook Login runs on
graph.facebook.comand needs a linked Facebook Page. It has Business Discovery, Hashtag Search and the Creator Marketplace API. - Instagram API with Unified Login is what Meta recommends for new integrations. Users can log in with either Instagram or Facebook.
If you want data about accounts you don’t manage, you need the Facebook Login route (or Unified Login), and you’ll need to pass App Review for each permission you ask for. Meta charges nothing for the API itself.
How the rate limits work
Instagram calls fall under one of two systems, and they behave very differently.
Business Use Case limits: most Instagram calls
Calls to Instagram Platform endpoints, apart from messaging, count against a Business Use Case limit. Meta’s formula is 4,800 × the number of impressions on the app user’s professional account, per rolling 24 hours. Impressions here means the number of times that account’s content entered someone’s screen in the last 24 hours.
The count is kept separately for each pair of app and user. In practice that’s generous for an active account and tight for a dormant one: an account nobody has seen today gives you almost nothing to spend. You can track it in the X-Business-Use-Case-Usage response header, which also reports estimated_time_to_regain_access in minutes. The throttling error is code 80002.
Platform limits: Business Discovery and Hashtag Search
The two features you’d use to look at other accounts don’t follow the Instagram formula. They share Meta’s general Platform Rate Limit: 200 × the number of users per rolling hour, where users means your app’s unique daily active users (weekly or monthly if usage is uneven).
It’s an app-wide pool, not 200 per person. Meta’s own example: an app with 100 users can make 20,000 calls an hour, and ten heavy users could take 19,000 of them. The flip side is the problem for anyone starting out. A new tool with five users gets about 1,000 Business Discovery calls an hour, however many creators it wants to look up.
Usage shows up in the X-App-Usage header as percentages. When you go over, calls fail with code 4 (app), 17 (user), 32 or 613, and Meta warns that carrying on calling extends the time before you’re let back in.
Messaging has its own per-second limits, which we don’t cover here.
Business Discovery
Business Discovery is the main official way to read another account’s public data. Your app queries another business or creator account by username through your own professional account, for example business_discovery.username(bluebottle).
What comes back is short:
- The account:
followers_count,media_countand basic profile fields. - Its media:
like_count,comments_count,media_urlandview_count, which Meta added for reels in June 2025. Media pages throughbeforeandaftercursors, with no ready-made next and previous links.
And the limits are specific:
- Personal and private accounts can’t be queried. Neither can age-gated business accounts.
- You get
comments_count, not the comments. media_urlis left out for video with copyrighted or licensed audio, and for reels whose owner has turned off downloads.- A direct request for a returned media object fails. You can only read media nested inside a Business Discovery call.
You’ll need instagram_basic, instagram_manage_insights and pages_read_engagement on a Facebook user token, plus App Review. This is how a request looks, with the usage header checked on the way back:
import json, time, requests
GRAPH = "https://graph.facebook.com/{API_VERSION}"
THROTTLED = {4, 17, 32, 613, 80002} # Meta's rate-limit error codes
def business_discovery(ig_user_id, username, token):
fields = (
f"business_discovery.username({username})"
"{followers_count,media_count,"
"media.limit(25){like_count,comments_count,view_count,timestamp}}"
)
r = requests.get(f"{GRAPH}/{ig_user_id}",
params={"fields": fields, "access_token": token},
timeout=30)
# Platform-limit usage, as percentages of your allowance
usage = json.loads(r.headers.get("X-App-Usage", "{}"))
if usage.get("call_count", 0) > 80:
time.sleep(600) # ease off before Meta cuts you off
body = r.json()
if "error" in body and body["error"].get("code") in THROTTLED:
raise RuntimeError("Rate limited: stop calling until usage drops")
return body.get("business_discovery")Hashtag Search
Hashtag Search returns top_media and recent_media for a hashtag. It needs App Review approval for the Instagram Public Content Access feature, and it has the hardest cap in the API: 30 unique hashtags per Instagram account in a rolling 7 days.
- Each hashtag counts for 7 days from first use. Querying it again doesn’t count twice, and doesn’t reset its timer.
- Calling
top_mediaorrecent_mediacounts too, even if you already have the hashtag’s ID. - Story hashtags and emoji hashtags aren’t supported. Hashtags Meta deems sensitive return a generic error.
- As with Business Discovery,
media_urlis left out for video with copyrighted audio and for reels whose owner has turned off downloads.
Thirty tags a week is enough to monitor a brand’s own campaign hashtags. It isn’t enough for discovery, and there’s no keyword, caption, location or audio search to fall back on.
The Creator Marketplace API
Since 1 October 2025, Meta has offered the closest thing to an official influencer-search API. The Creator Marketplace API lets an eligible brand search creators by country, audience age and gender, follower range, interests, engagement and more, and returns:
- profile details, including country, gender and age bucket;
- insights such as followers, reach, engaged accounts and reels interaction rate;
- up to 30 recent posts and the 30 most recent branded-content posts;
- past partnerships, and an email “if available”.
It’s the only official way to see another creator’s reach or audience. But it comes with conditions:
- Your brand has to be eligible for the marketplace. Ineligible brands get error code
10. - You need
instagram_creator_marketplace_discoverywith Advanced Access through App Review. Standard Access only returns test data. - Search only covers marketplace-eligible creators, although an exact username match returns any eligible professional account.
Meta’s reference page lists 5,000 requests per user per hour, and 5,000 × effective users at app level. Its March 2026 changelog gave different figures, so treat the response headers as the truth.
The data you can’t get
Put the three features together and this is what you can read about accounts you don’t manage:
| What you need | Your connected accounts | Business Discovery | Creator Marketplace API |
|---|---|---|---|
| Follower and post counts | Yes | Yes | Yes |
| Likes, comments and reel views per post | Yes | Yes | Yes |
| Comment text | Yes | No | No |
| Reach, saves and audience demographics | Yes | No | Some |
| Stories | Yes | No | No |
| Follower lists | No | No | No |
| Contact email | No | No | Some |
| Personal accounts | No | No | No |
The gaps are the reason scraping APIs exist:
- Personal and private accounts. No official API covers them.
- Follower and following lists. There’s no endpoint for anyone’s list, not even your own. You get a count.
- Comments on other accounts’ posts. Only the count.
- Other accounts’ stories, which vanish after 24 hours unless highlighted.
- Search beyond 30 hashtags a week: keywords, captions, locations, audio, users.
- Audience data on creators who aren’t in the marketplace, and on accounts that haven’t connected to you. Demographics are only shared with the account that authorised your app.
- Scale before you have users, because both rate limits grow with them.
Meta also changes metrics under you. It replaced impressions and plays with views in 2025, so historical comparisons break at that point. Store your own timestamps.
Workarounds
Get more from the official API first
- Cache hard. Follower counts don’t need refreshing every hour. Fetch once a day per account and serve the cache in between.
- Ask creators to connect. If a creator logs in to your app, you get their insights, comments, stories and audience demographics under their own impression-based limit. For influencer platforms, that’s often the best data you can get.
- Apply for the Creator Marketplace API if you’re a brand that qualifies and your creators are in the marketplace.
- Researchers can apply for access to the Meta Content Library. It’s free but only for qualified academic and research institutions, and data can’t be exported.
Use a scraping API for the rest
For public data on any account, at a scale that doesn’t depend on your user count, a scraping API is the practical answer. You send a username and get JSON back, with no App Review and no Facebook Page. Coverage varies a lot: every provider returns profiles and posts, most return comments, and only a few return stories or follower lists. Our Instagram scraping API ranking compares what each one covers and charges.
- 1ScrapeCreatorsMost developers and most jobs8.7
- 2Bright DataLarge companies collecting in bulk8.4
- 3InflushipProfiles, posts and reels at scale, billed after use8.3
If you’re building a production app or an AI agent, Influship is worth a look. Its Instagram profile call returns up to 50 recent posts in one request at a flat $1.80 per 1,000 calls, billed after use like infrastructure, and failed calls are free. It has a REST API, a TypeScript SDK and an MCP server, and a direct line to its founders and solutions engineers whatever you spend.
For audience estimates and contact emails on creators who haven’t connected to you, look at an influencer data API instead. Our influencer data API ranking covers those.
Scraping comes with its own rules. Logged-out collection of public data is on the firmest legal ground, and GDPR still applies to public profiles. Our guide to the law explains where the lines are, and our guide to getting Instagram profile data without the Graph API walks through choosing and testing a provider.
Questions
What is the Instagram Graph API rate limit?
It depends on the call. Most Instagram Platform calls get 4,800 × the number of impressions on the user’s account per rolling 24 hours. Business Discovery and Hashtag Search share Meta’s platform limit instead: 200 × your app’s daily active users per rolling hour.
Can I raise the limit?
Not by asking. Both formulas grow with your users: more connected accounts, more impressions on them, or more daily active users. There’s no paid tier.
Can Business Discovery look up personal accounts?
No. It only returns other business and creator accounts, and it skips age-gated ones. Personal and private accounts aren’t covered by any official Instagram API since Meta shut the Basic Display API in December 2024.
Why does Hashtag Search stop working after a few days?
Each Instagram account can query 30 unique hashtags in a rolling 7 days. Once you’ve used them, new hashtags fail until the oldest drops out of the window.
Is the Graph API free?
Yes. Meta publishes no usage fees. The cost is App Review, the limits and the engineering time.
What’s the best alternative for data the Graph API won’t give me?
A scraping API for public profiles, posts, comments and follower lists, and an influencer data API for audience estimates and contact emails. Our rankings compare both.


