Skip to Content
Rate limits & quotas

Rate limits & quotas

Skoup enforces two kinds of limits: rate limits, which protect the API from abuse, and business quotas, which come from your plan. Both are reported on every relevant response, so your integration never has to guess.

Rate limits

Limits are counted per API key:

LimitValue
Requests per minute120
Requests per day20,000
Writes (POST, PATCH, DELETE) per minute50

Every response carries the current state of the limits:

X-RateLimit-Limit: 120 X-RateLimit-Remaining: 117 X-RateLimit-Reset: 1790150460 X-RateLimit-Daily-Limit: 20000 X-RateLimit-Daily-Remaining: 19842 X-RateLimit-Daily-Reset: 1790208000

*-Reset values are Unix timestamps (seconds, UTC) at which the window starts over.

Beyond a limit, requests fail with 429 rate_limit_exceeded and a Retry-After header giving the number of seconds to wait:

HTTP/1.1 429 Too Many Requests Retry-After: 23

Unauthenticated requests and requests with invalid keys are limited per IP address. Repeated authentication failures from the same address temporarily block it.

Need a higher limit? Contact us with your use case. Most integrations that hit the limit are polling — webhooks are usually the better tool.

Business quotas

Some resources are capped by your plan. The endpoints concerned report the quota in a Skoup-Quota-{Name} header, formatted after the IETF RateLimit header fields:

Skoup-Quota-Queries: limit=150, remaining=12 Skoup-Quota-Verifications: limit=10, remaining=7, reset=1790208000 Skoup-Quota-Competitors: limit=5, remaining=2
HeaderSent onCounts
Skoup-Quota-Queries…/queriesActive queries across all markets, against your plan’s quota.
Skoup-Quota-Verifications…/alerts/{id}/verifyTargeted re-samplings per brand and per day.
Skoup-Quota-Competitors…/competitorsTracked competitor brands, all markets included.

reset is only present when the quota frees up by itself over time. When a quota is reached, the write fails with 422 quota_exceeded and param names the quota.

Last updated on