Meta Marketing API Rate Limits and Free Tiers
Meta Marketing API rate limits are a score, not a call count. Limited access allows 60 points per 300 seconds, Full access 9,000. Here is the quota math.
Meta Marketing API rate limits are a score, not a call count. Every request you make spends points against a budget that drains and refills on a 300-second cycle, and the size of that budget depends on one setting on your app — your access tier.
Get the tier wrong and the ceiling is 60 points. Get it right and it is 9,000. That is a 150x difference, and it decides whether building your own Meta reporting pull is a weekend or a quarter.
Why this matters
Everyone who decides to build their own Meta reporting — or, since Meta's October agentic announcements, their own agent against the account — hits the quota wall before they hit anything else.
The wall is not where most write-ups say it is. Meta renamed the access tiers in 2026 and lowered the qualification bar, so much of the public guidance describes a system that no longer exists. And the numbers people budget against are usually the wrong numbers entirely.
The two tiers, and what they are called now
There are two access tiers. As of May 4, 2026, Meta renamed the feature from "Ads Management Standard Access" to "Marketing API Access Tier" and relabelled both levels.
| Dimension | Limited access | Full access |
|---|---|---|
| Called this before May 2026 | Standard Access | Advanced Access |
| Tier name in the rate-limit docs | Development tier | Standard tier |
| Maximum score | 60 | 9,000 |
| Decay rate | 300 seconds | 300 seconds |
| Block duration once maxed | 300 seconds | 60 seconds |
| Read call cost | 1 point | 1 point |
| Write call cost | 3 points | 3 points |
Three names for two things is the biggest source of confusion here. "Standard" meant the lower tier under the old feature naming and means the upper tier in the rate-limiting docs. A guide that says "Standard Access" without saying which cannot be trusted on anything else either.
There is also no dollar-denominated free tier. The Marketing API costs nothing to call. "Free tier limitations" means the Limited access ceiling, and that ceiling is measured in points.
What 60 points actually buys you
Per Meta's rate-limiting documentation, the score is held per app and ad account pair, a read costs 1 point, a write costs 3, and the window decays every 300 seconds.
On Limited access:
- 60 read calls per five minutes, per ad account. That is 12 per minute.
- 20 write calls per five minutes. Writes cost triple.
- Hit the max and you are blocked for 300 seconds — the full window, not a short cooldown.
On Full access the same arithmetic gives you 9,000 reads per five minutes per account, and a block lasts 60 seconds instead of 300.
The number you are probably budgeting against is the wrong one
Meta also publishes per-ad-account business use case limits on a rolling one-hour window. These are the figures most write-ups quote, because they are the biggest numbers on the page:
| Use case | Limited access | Full access |
|---|---|---|
| ads_insights | 600 + 400 x active ads | 190,000 + 400 x active ads |
| ads_management | 300 + 40 x active ads | 100,000 + 40 x active ads |
| custom_audience | 5,000 + 40 x active audiences | 190,000 minimum, 700,000 cap |
Now run the two budgets against each other. Take one ad account with 40 active ads on Limited access:
- Hourly
ads_insightsbudget: 600 + (400 x 40) = 16,600 calls. - What the 300-second score permits in that same hour: 60 x 12 = 720 calls.
The score binds about 23 times earlier than the hourly budget. Build your pull against the 16,600 figure and you will be throttled at roughly four percent of your assumed capacity.
This is the single most useful thing to know about Meta Marketing API rate limits: on Limited access the hourly business-use-case numbers are decoration. The 300-second score is your real ceiling. On Full access the two land in the same order of magnitude — 108,000 per hour from the score against 206,000 from the insights budget — so the score still binds first, just not catastrophically.
Qualifying for Full access
Two requirements, both now easier than the guidance you will find elsewhere:
- 500+ Marketing API calls in the past 15 days. Lowered from 1,500.
- Error rate below 15%, calculated over a rolling window of your last 500 calls rather than a fixed period.
The volume requirement is trivial — Limited access permits 720 calls an hour, so you can satisfy a 15-day minimum in one afternoon. The error rate is the one that traps people, and it traps them through their own retry logic.
The mechanism: you exhaust the 60-point score, Meta blocks you for 300 seconds and starts returning errors, and naive retry code keeps firing into the block. Every rejected call lands in the rolling 500-call window your error rate is computed from. A pull that hammers through a block can hold its own error rate above 15% indefinitely — which means the thing keeping you on Limited access is the thing you wrote to cope with being on Limited access.
Read the headers instead of guessing. X-Ad-Account-Usage returns acc_id_util_pct, reset_time_duration and ads_api_access_tier — so your own code can report which tier you are on. X-Business-Use-Case-Usage returns call_count, total_cputime and total_time as percentages, plus estimated_time_to_regain_access in minutes. Throttling surfaces as error 80000 for Ads Insights, 80004 for Ads Management and 80003 for Custom Audience.
Back off on the header, not on the exception.
Worked example: 25 client accounts, one weekly pull
Assume an agency with 25 Meta accounts and a Monday reporting job. Per account, a reasonable weekly pull is account-level insights across a 7-day and 28-day window, then campaign, ad set and ad level, two breakdowns, plus creative metadata. With pagination that is in the region of 120 read calls.
On Limited access, 120 points against a 60-point ceiling:
- Calls 1–60 go through.
- Blocked 300 seconds.
- Calls 61–120 go through after the window decays.
- Roughly 10 minutes of wall clock per account, most of it waiting.
The score is per app and ad account pair, so accounts do not compete with each other — run them concurrently and 25 accounts still finish in about ten minutes. Run them serially and you have a four-hour job. Either way you now own a concurrency model, a backoff scheduler and header parsing before you have produced a single number anyone reads.
On Full access, the same 120 calls never approach the 9,000 ceiling. The quota stops being the problem, and version maintenance becomes it.
The maintenance bill nobody quotes
Marketing API versions expire roughly twelve months after release, which is markedly faster than the Graph API versions they sit alongside. From Meta's versions page:
| Marketing API version | Released | Expired |
|---|---|---|
| v23.0 | May 29, 2025 | June 9, 2026 |
| v24.0 | October 8, 2025 | October 6, 2026 |
| v25.0 | February 18, 2026 | Not yet announced |
Two forced migrations landed within four months of each other this year. v24.0 expired on October 6, 2026 — if a pull is still pinned there, it is not slow, it is dead. A hardcoded version is a recurring calendar item, not a one-time build.
So the crossover question is whether the quota work plus two migrations a year costs less than buying the read.
Assume a loaded engineering rate of $100 an hour. A competent first build — app review for ads_read, token refresh, tier qualification, header-driven backoff, breakdown opt-in per account, schema handling for retired fields — is not a weekend. Call it 40 to 60 hours, so $4,000 to $6,000, then 4 to 8 hours a month to keep it alive. Those are assumptions, stated as assumptions. Your numbers will differ; the shape will not.
Good Morning is $199 a month and the quota problem is not yours. The point is narrower than "buy software": if your pipeline costs more than about two engineering hours a month, the arithmetic has already decided. A pull you maintain is infrastructure. What you actually wanted was the action list at the other end — pre-diagnosed, urgency-tiered, zero analysis required.
Related reading on where the DIY path runs out: what free Facebook Ads audits do and do not cover on the ceiling of free tooling, and Meta Ads AI connectors and security controls on the scopes and permissions side of app setup.
Common mistakes
- Budgeting against the hourly business-use-case numbers. On Limited access the 300-second score binds roughly 23x earlier. Size the job against the score.
- Retrying into a block. Those failures count toward the rolling 500-call error rate that gates Full access. You can lock yourself out of the upgrade with your own retry loop.
- Assuming "free tier" means a billing tier. The API is free to call. The limit is points per 300 seconds on Limited access.
- Trusting a guide that says 1,500 calls, "Standard Access" or "Advanced Access". Those changed on May 4, 2026. The threshold is 500 calls in 15 days.
- Pinning a version and moving on. Marketing API versions last about a year. Two expired in 2026 already.
FAQ
Is there a free tier for the Meta Marketing API? There is no paid tier — calling the API costs nothing. What gets called the free tier is Limited access, whose ceiling is 60 quota points per 300 seconds per ad account.
How many Meta Marketing API calls can I make per hour? On Limited access the 300-second score permits about 720 reads per hour per ad account; on Full access, about 108,000. The published hourly budgets are higher than both and are not the binding constraint.
How do I get Full access to the Marketing API? 500 or more calls in the past 15 days, and an error rate below 15% across your last 500 calls. Existing Advanced Access carried over automatically when the tiers were renamed.
Do read and write calls cost the same? No. A read is 1 point and a write is 3. An agent that changes budgets or targeting burns quota three times as fast as one that only reports.
Which header tells me how close to the limit I am?
X-Ad-Account-Usage for the account-level score, including an ads_api_access_tier field that reports your current tier. X-Business-Use-Case-Usage for per-use-case percentages and estimated_time_to_regain_access in minutes.
What to do with this
Act today. Read ads_api_access_tier off a live response and find out which tier you are actually on. Most people guess wrong.
This week. If you are on Limited access and pulling more than about 60 calls per account, add header-driven backoff before you add anything else — and check nothing is still pinned to v24.0.
Monitor. Marketing API version expiries. Put the next one in a calendar rather than discovering it from a 400.
If you manage several Meta accounts and would rather not own the quota arithmetic above, Meta Ads reporting for agencies is the version where the tier, the pull and the migrations are somebody else's problem and what lands is an action list. The broader product sits at Meta Ads reporting software; the Meta Ads audit tool is the one-off read.
Sources
- Meta for Developers — Marketing API Rate Limiting (Development tier max score 60, Standard tier max score 9,000, decay rate 300 seconds; "A read API call is equal to 1 point, and a write API call is equal to 3 points"; per-ad-account business use case formulas for ads_management, ads_insights and custom_audience; X-Ad-Account-Usage and X-FB-Ads-Insights-Throttle header fields)
- Meta for Developers blog — Update to Ads Management Standard Access: New Name, Revised Requirements, and More Transparency (feature renamed to "Marketing API Access Tier" effective May 4, 2026; Standard Access renamed Limited Access, Advanced Access renamed Full Access; minimum lowered from 1,500 to 500 calls in the past 15 days; error rate below 15% over a rolling window of the last 500 calls; "No code changes are required")
- Meta for Developers — Graph API and Marketing API Versions (Marketing API v23.0 released May 29, 2025 and expired June 9, 2026; v24.0 released October 8, 2025 and expired October 6, 2026; v25.0 released February 18, 2026)
- Meta for Developers — Graph API Rate Limiting overview (X-Business-Use-Case-Usage header fields call_count, total_cputime, total_time and estimated_time_to_regain_access; throttling error codes 80000 for Ads Insights, 80004 for Ads Management, 80003 for Custom Audience)
Related reading
GoodMorning Review: What It Does, Who It's For
A GoodMorning review from the founder who built it: what the weekly Meta Ads action list includes, what it costs, who should buy it, and who should not.
Meta Ads Update October 2026: The Agent Acts
Meta ads update October 2026: Meta's AI assistant moves from writing analysis to taking actions in your ad account. What is live, what is still a test.
Coupler.io vs Supermetrics for Meta Reporting
Coupler.io vs Supermetrics for Meta Ads reporting: $32/mo against $55/mo, what each covers after Meta's 2026 field changes, and what you still build.