API errors and rate limits
Status codes, error shapes and request limits for the Serpfull API.
Errors return { "error": { "code": "…", "message": "…", "details": … } } with a matching HTTP status.
- 400 invalid_parameter: a query parameter such as since, until or outcome is malformed.
- 401 unauthorized: missing, invalid or revoked key.
- 403 plan_required: API access needs a Scale plan or above on at least one website.
- 403 insufficient_scope: the key is read-only.
- 429 cooldown, concurrency, daily_quota, monthly_quota, competitor_quota or host_busy: an SEO audit limit applies; see retry_at and Retry-After.
- 403 org_suspended: contact support.
- 404 not_found: the resource doesn't exist in your organisation.
- 409 conflict: the search term already exists for that country and device.
- 422 validation_failed / limit_exceeded / plan_required / project_unverified: see message and details.
- 429 rate_limited: wait for Retry-After seconds.
- 500 internal_error: try again; contact support if it persists.
- 503 unavailable: the API is temporarily unavailable; retry with backoff.
Rate limits
120 requests per minute per key. A 429 response includes Retry-After: 60. Every request is logged against the key, and the key's last-used time (updated at most once a minute) is shown in Settings → API keys.
Plan limits
Adding or changing terms never silently lowers your numbers: if a request would go over the website's search-term or clicks-per-day limit, it fails with 422 and tells you how much is left.
Updated