Amazon Ads API 7 min read

Amazon Ads API Rate Limits Explained (And How to Stop Hitting Them)

A 429 storm from the Amazon Ads API almost always means your retry logic is wrong, not that your limits are too low. Here's how the per-endpoint token buckets actually work, what the response headers tell you, and the request patterns that keep you comfortably under the limit.

Updated Jul 2026
Amazon Ads API Rate Limits Explained (And How to Stop Hitting Them)

How Ads API Throttling Actually Works #

The Amazon Ads API throttles with a token bucket, per endpoint — not one global limit for your whole app. Each endpoint has a bucket with a maximum capacity and a steady refill rate. Every request spends a token; when the bucket is empty, you get:

HTTP 429 Too Many Requests

Because buckets are per-endpoint, hammering the reports endpoint won't throttle your campaign-read calls, and vice versa. This matters: the fix is rarely "request a higher limit" — it's spreading and pacing requests so no single bucket runs dry.

Key mental model: a burst of requests can drain a bucket instantly even if your average rate is well under the limit. Smoothing bursts matters more than lowering total volume.

Read the Headers Before You Retry #

When you get a 429, the response tells you what to do. Respect the Retry-After header — it's the number of seconds to wait before trying again. Blindly retrying without reading it is how a small blip becomes a throttle spiral.

  • Retry-After — wait at least this long before re-sending.
  • Non-2xx bodies often include a descriptive code; log them so you can tell a 429 (rate) from a 403 (permissions) from a 400 (bad request).

The Retry Mistake That Makes It Worse #

The classic failure: catch a 429, retry immediately in a tight loop. Now you're draining the bucket faster than it refills, and if several workers do it at once you get a thundering herd. Use exponential backoff with jitter:

delay = min(base * 2 ** attempt, max_delay)
delay = delay * (0.5 + random())   # jitter avoids synchronized retries
sleep(delay)

Honor Retry-After when present, and cap attempts so a persistently failing call fails loudly instead of looping forever.

Use Async v3 Reporting, Not Polling Everything #

The v3 reporting endpoints are asynchronous: you request a report, then poll for completion, then download. The throttle magnet is the polling step — teams poll every second and drain the bucket. Poll with backoff (e.g., 10s, then 20s, then 30s), not in a tight loop, and download once the status is complete.

Related: the same async-then-download shape trips people up on the seller side too — see The SP-API Reports Pattern Everyone Gets Wrong.

Design So You Rarely Hit the Limit #

The durable fix is architectural, not more retries:

  • Cache what doesn't change — profile IDs, portfolio lists, campaign metadata. Don't re-fetch them every run.
  • Request only the data you need — narrower report types and date ranges cost fewer calls.
  • Spread jobs over time — stagger multi-account pulls instead of firing them all at the top of the hour.
  • Use Marketing Stream for hourly metrics — instead of polling reports every hour, let Amazon push hourly data to you. It sidesteps the reporting buckets entirely.

Drowning in throttles across many accounts? Multi-account pacing and pipelines are a specialty — see how I set up Ads API integrations that stay under the limits.

FAQ #

Is the Ads API rate limit per app or per endpoint?

Per endpoint. Each endpoint has its own token bucket, so throttling one operation doesn't throttle the others. Pace each hot endpoint independently.

What should I do when I get a 429?

Read the Retry-After header and wait that long, then retry with exponential backoff and jitter. Never retry immediately in a loop.

Can I ask Amazon to raise my rate limit?

Sometimes, but it's rarely the real fix. Most throttling comes from bursty requests or tight polling loops. Smooth your traffic first; a limit increase is a last resort.

Does Marketing Stream have the same limits?

No — Marketing Stream is push-based. Amazon delivers hourly data into your AWS, so you're not polling and not consuming reporting-endpoint tokens at all.

Don't want to build this yourself?

I set this up for sellers and agencies every week. Book a free 30-minute audit of your Amazon data & PPC setup — you'll leave with a plan either way, whether we work together or not.

Found this helpful? Share it:

WhatsApp