Skip to Content
APIRate limits

Rate Limits

The Carapis API is rate-limited per plan — higher tiers allow more requests — and a request over the limit returns HTTP 429. Design your client to throttle and retry rather than assume a fixed ceiling.

How limits work

Your throughput is tied to your subscription. Exact request quotas and concurrency depend on your tier, so check the pricing page for the limits that apply to your plan. Do not hard-code a specific number — read it from your plan and handle throttling defensively.

Handling 429 responses

When you exceed your limit the API returns:

HTTP/1.1 429 Too Many Requests
{ "error": { "code": "rate_limit_exceeded", "message": "Rate limit exceeded. Slow down and retry." } }

Back off and retry with increasing delays (exponential backoff):

import time, requests def get_with_retry(url, params, headers, max_retries=5): delay = 1.0 for _ in range(max_retries): resp = requests.get(url, params=params, headers=headers) if resp.status_code != 429: return resp time.sleep(delay) delay *= 2 return resp

Staying under the limit

  • Page deliberately and avoid tight loops — see Pagination.
  • Filter results server-side (make, model, year_min, price_max) to fetch fewer pages.
  • Cache responses you reuse rather than re-requesting them.
  • Upgrade your plan on the pricing page if you need more throughput.

See Errors for the full list of HTTP status codes.

Last updated on