QuotaExceeded means you have exceeded the rate limit for the operation you called. The important detail is that SP-API limits are per operation, not one global budget: orders, reports, listings and finance endpoints each have their own rate and burst, so an integration can be comfortably within budget on one call and throttled on the next. The response carries x-amzn-RateLimit-Limit with the rate that applies. Sleeping between calls works and is what most people do first, but it paces to the slowest endpoint and wastes most of the available throughput.
QuotaExceeded is Amazon’s throttling response on the Selling Partner API. Your credentials are valid, the request was acceptable, and you have called this operation too often for the rate you are allowed.
The response includes x-amzn-RateLimit-Limit, reporting the rate that applies to the operation you just called.
Limits are per operation, not per application.
This is the difference between an integration that works and one that spends its life throttled. There is no single budget you can pace against. Getting orders, requesting reports, updating listings and pulling financial events each have their own rate and burst allowance, and they differ by an order of magnitude in places.
Two consequences follow:
Amazon also adjusts some limits based on usage over time, so a number that was accurate when the integration was written may not be accurate now. Anything hard-coded from documentation will drift.
The most common way to make this worse is to respond to a backlog by going faster.
After an outage, an expired authorisation or a failed overnight run, there is a queue of work and an obvious temptation to clear it quickly. That is precisely the pattern that exhausts the burst allowance, triggers throttling, and leaves you with a larger backlog than you started with.
The correct response is to drain a backlog more slowly than the steady state, not faster. It feels wrong and it is right.
| Practice | Why |
|---|---|
Read x-amzn-RateLimit-Limit from responses | The applicable rate, from the authority, right now |
| Keep a token bucket per operation | Each endpoint runs near its own allowance |
| Exponential backoff with jitter | Stops parallel workers retrying in lockstep |
| One shared limiter across all workers | Otherwise concurrency silently multiplies your rate |
| Idempotency on writes | A retried feed or confirmation must not apply twice |
| Throttle backlog drain below steady state | Catching up fast is how you stay throttled |
SP-API is not a stable target. Amazon adds operations, deprecates others, moves functionality between report types and adjusts limits. An integration paced correctly at build time will drift out of correctness without anyone touching it.
Seeing this in production and want it to stop being your problem? We design, build, and permanently operate the pipeline, including the validation and retry logic that stops this class of failure reaching you. Fixed-price scoping quote within 48 hours.