DEV Community

SSK
SSK

Posted on

Instagram comment-to-DM rate limit 750/hour. So how do some accounts run 5,000?

Every developer who works with the Instagram Messaging API asks me the same thing: what is the DM rate limit? And every time, I tell them — that's the wrong question.

I've been working with social media APIs since 2016. The old Instagram API before it became the Graph API. Twitter back on v1.1 with its 15-minute limits. Facebook Pages, all of it. If you were building on this stuff in 2018 when everything locked down after Cambridge Analytica, you know the pain. Half the APIs we used were just gone. "Get a token and start" became "get reviewed, get a partner tag, or leave." And every platform slowly changed. Flat limits became limits based on how much you matter to them.

That last change is the one nobody talks about. And it's the answer to a question I get all the time:

Instagram seems to stop DM automation at a few hundred an hour. So how are some accounts sending thousands an hour without getting blocked?

A couple of those ten years went into Instagram DM automation. Today InstantDM, the tool I build, runs comment-to-DM for 30,000+ creators and brands (as of July 2026). So to be clear: I make a product in this space, and I'll use it as one example at the end. Everything else here is just how the API works, straight from Meta's own rate-limit docs. It's true whether you build your own or buy one.

TL;DR

  • There is no single "Instagram DM rate limit." Meta has three limits stacked on top of each other. The first one you hit is your real limit.
  • The one most people hit is the Private Replies limit for post and reel comments: 750 per hour, per account. That's the wall everyone thinks is "the" limit.
  • Accounts doing thousands an hour are not cheating. They send most of it through the Send API (100 a second), they get a bigger budget as their reach grows, and for tools, they add up many accounts together.
  • You can raise your own limit the right way. You cannot break it. Every trick that says it can (HUMAN_AGENT abuse, browser extensions, scrapers) is a fast way to lose your API access. I've seen people kill their accounts like this for ten years.

First, what ten years taught me

Every big platform API ends up in the same place. It stops counting your calls and starts checking how real you are. Twitter did it. Facebook did it after 2018. Instagram did it the most — its limits are now tied to your impressions. That means how many real people actually see your posts.

Once you get this, "how do I get a bigger limit" stops being a hack. It gets simple. Be more real on the platform, and your limit goes up on its own. Keep that in mind — there's an actual formula for it below.

Meta doesn't give you one number. It gives you three layers.

When people argue about "the Instagram rate limit," they're each looking at a different layer. All three are working at the same time.

Layer 1 — the app limit

Your whole app shares one pool:

Max calls per rolling hour = 200 × (number of users who authorized your app)
Enter fullscreen mode Exit fullscreen mode

One small project, one connected account? That's about 200 calls an hour for everything — reading and sending together. This is the "200 an hour" people talk about. It's a rolling 60-minute window, not a reset at the top of the hour. This matters when you pace your calls. It caught me a few times early on, when I thought the count went back to zero at :00.

Layer 2 — the reach budget (this one grows with you)

For non-messaging calls (reading comments, media, insights), Meta uses a Business Use Case limit. It's based on your impressions:

Calls within 24 hours = 4800 × (Number of Impressions)
Enter fullscreen mode Exit fullscreen mode

"Number of Impressions" is how many times your posts hit someone's screen in the last 24 hours. Read that again, because it's half the answer to today's question: your budget grows with your reach. 2,000 impressions a day gives you about 9.6M calls in 24 hours. 200,000 impressions a day gives you about 960M. More reach, bigger limit, for free. There's no basic or advanced level here. The formula is the same for everyone. So it all comes down to one thing: how real you are, not how many calls you make.

Layer 3 — the messaging limits (fixed, per account)

Messaging is where the automation really happens. It has its own limits, and these do not grow with your impressions:

Endpoint Limit (per professional account)
Conversations API 2 calls / second
Send API — text, links, reactions, stickers 100 calls / second
Send API — audio, video 10 calls / second
Private Replies API — live-video comments 100 calls / second
Private Replies API — post & reel comments 750 calls / hour

(Source: Meta rate-limit docs, as of July 2026. Meta changes these anytime, so I always check the live doc before I trust a number. You should too.)

Look at the last row. That's the wall most people hit. The classic "comment a keyword, get a DM" flow uses the Private Replies API for post and reel comments. It's capped at 750 an hour per account. That one number is fixed. Your reach does not raise it. If your setup sends one private reply per comment, 750 an hour is as fast as that step can go, no matter how big you are.

But here's the part most people miss. 750/hour is the cap on one door: post and reel comment private replies. It is not Instagram's overall DM limit. It doesn't touch the Send API. And your Layer 2 budget still grows with your reach. So there's no fixed "750 and you're done." Instagram's real limit scales. It goes up with how you build and how big your account gets. The rest of this post is how to use that.

Now look at the gap. 750 an hour on one row. 100 a second on another. Both sound like "sending a DM," but one is thousands of times bigger. After a few years you stop reading these tables top to bottom. You start reading them as choices about which door to use. That gap is the whole game.

So how does an account run 3,000–5,000 automations an hour?

Not by breaking rules. By never getting stuck on the 750/hour door in the first place. Four ways, all clean:

1. The private reply is just the door. The chat runs on the Send API.
The comment-to-DM trigger uses one Private Replies call from that 750/hour bucket. But everything after it — follow-ups, the menu, sending a link, asking for an email — goes through the Send API at 100 a second. On paper that's 360,000 an hour for the chat itself. So use the rare private-reply call only to open the chat, and let the Send API do the rest. Now one account can do thousands of messages an hour while using way under 750 private replies.

2. Live comments are a whole different door.
Private replies to live-video comments get 100 a second, not 750 an hour. So a creator running automation on a live stream has a totally different limit than one running it on a normal post. Same comment-to-DM idea, about 500x more room. Most people never even see that row.

3. Your reach budget handles all the reading.
Reading comments, looking up users, pulling media — that's all Layer 2, all 4800 × impressions. A big-reach account has way more read budget, so the sending never runs dry. More reach, higher limit. Simple as that.

4. Tools add up many accounts.
Layer 1 (200 × users) is shared across the whole app. A tool with tens of thousands of connected accounts has a huge shared pool. But each single account still lives inside its own Layer-3 messaging limits. That's how a tool can show numbers no single account could. It's many clean accounts added up, not one account cheating.

How to actually grow your limit (the honest way)

Building your own thing? Here's how to send more, the clean way. This is the same order I've used across platforms since 2016:

  1. Grow reach. It literally is the limit. Layer 2 is 4800 × impressions. I mean this literally — more impressions means more API budget, for free. The biggest "rate limit boost" you can get is a bigger, real audience. Ten years in, this is still the one thing people skip, because it doesn't feel like coding.
  2. Use the right door. Use private replies (750/hour) only to open a chat. Do the rest on the Send API (100/sec). If you waste private replies on follow-ups, you've put your whole flow behind your slowest door.
  3. Slow down before you hit the limit. Don't run straight into it. A big burst that hits 429 errors doesn't just fail those calls. More and more errors make Meta slow you down harder, and can flag the account. Read the usage headers and slow down before you reach 100%:
   // read Meta's usage header and slow down before you hit the wall
   const usage = JSON.parse(res.headers['x-app-usage'] || '{}');
   if (usage.call_count > 90 || usage.total_time > 90) {
     await sleep(backoffMs);   // wait, then try again slower
   }
Enter fullscreen mode Exit fullscreen mode

Add a simple queue (a token bucket) so a viral spike goes out at a safe speed, not all at once. This one habit has saved more accounts than any clever trick I've written.

  1. Get Advanced Access (for app builders). App review moves you off the smallest limits onto the real ones. It takes time, not money, so do it before you need it. The review won't care about your launch date.
  2. Work with the window, don't fight it. Automated DMs only go to people who interacted in the last 24 hours. Private replies are one per comment, within 7 days. Build flows that stay inside these windows instead of trying to reopen them.

Keep your account safe: only send automated DMs as replies to something the person did — a comment, a story reply, a DM. Never send cold blasts. Stay inside Instagram's limits and Meta's rules. Tools built on the official API (with rate limits and queues) are there to keep you inside the lines, not to get around them.

What does not work (and I've seen it kill people's API access)

  • Abusing the HUMAN_AGENT tag. It opens the messaging window from 24 hours to 7 days — but only for a real human agent. Meta clearly bans it for bots and automated messages, and they catch it. It's one of the fastest ways to lose messaging access. I've seen it happen in days.
  • Browser extensions, scrapers, "unlimited DM" tools that work outside the API. They don't raise any limit. They fake your session and get accounts blocked. The API limits exist to stop exactly this, and Instagram has only gotten better at catching it every year since 2018.
  • Making extra accounts to get around a per-account limit. That's dodging the rules, and they watch for it. The clean way to get "more room" is more reach (Layer 2), or for tools, more real connected accounts (Layer 1). Not fake accounts.

There's no ?bypass=true. The only things that move your limit are the ones Meta built in on purpose. That's been true on every platform I've shipped on, and it gets more true every year.

How I handle this in InstantDM (one real example)

Like I promised, a real example. And it follows everything above.

Our plans line up with this exact idea. Legend Pro ($9.99/mo) paces comment-to-DM at 750 an hour. That's the same number as Instagram's private-reply cap. So your automation sits right at the safe edge and never trips it. Trendsetter ($24.99/mo) opens it up: it pushes more of the flow through the Send API and adds extra safety modes, so busy accounts aren't stuck behind the 750 comment gate.

Four always-on guards keep both plans inside Instagram's lines: a DM Queue (the token bucket), Super Slow Mode for careful accounts, a Rate Limit Controller that watches the usage headers, and Flood Control to smooth out spikes.

One thing I want to be clear about: the 750/hour is Instagram's cap on comment private replies, not a number we made up. We stay under Instagram's caps on every plan. The plan only changes how fast we go inside them.

None of it is magic. It's just ten years of working with the limits instead of fighting them.

Takeaways for builders

  • Stop asking "what's the Instagram rate limit." Ask which of the three layers you're hitting: the app pool, the reach budget, or a messaging endpoint.
  • The comment-to-DM wall is the 750/hour private-reply cap for posts and reels. It's one endpoint, not Instagram's whole limit. If that's your ceiling, you've built onto the tightest door.
  • Reach is your rate limit (4800 × impressions). That's where every platform API has been going for ten years: how real you are beats how many calls you make.
  • Stay under the cap and read the usage headers. Running into 429s makes you slower, not faster.
  • Every clean way to grow your limit is something the platform gives you on purpose. Everything else is a way to lose access.

If you're building on the Messaging API too, I'd love to swap notes — especially on how you pace the private-reply endpoint. That's the one everyone gets wrong until a post blows up. Drop it in the comments.

Rate limits and rules change a lot, and they roll out at different times, so treat all of this as true for July 2026. Check Meta's rate-limit docs and the Instagram messaging API docs for the current numbers before you ship. And if you'd rather not build the queue yourself, here's how we think about safe pacing.

Top comments (0)