Skip to main content
Rate limits are enforced per API key on a .

Limits by plan

PlanRequests per minute
Free60
Pro300
Scale1,000

Response headers

Every API response includes rate limit headers:
HeaderDescription
X-RateLimit-LimitMaximum requests per window
X-RateLimit-RemainingRemaining requests in current window
Retry-AfterSeconds until reset (only on 429 responses)

How to handle rate limits

When you exceed the limit, the API returns HTTP 429 (see error codes for the full list):
{
  "success": false,
  "error": {
    "code": "RATE_LIMIT",
    "message": "Rate limit exceeded. Retry after 12 seconds."
  }
}

Retry strategy

import time
import requests

def api_request_with_retry(url, headers, max_retries=3):
    for attempt in range(max_retries):
        response = requests.get(url, headers=headers)
        if response.status_code == 429:
            retry_after = int(response.headers.get("Retry-After", 10))
            time.sleep(retry_after)
            continue
        return response
    raise Exception("Max retries exceeded")
Use the Retry-After header to implement exponential backoff. Wait the specified number of seconds before retrying.

Best practices

Cache responses

Tech stacks don’t change every minute. Cache domain lookups for at least 24 hours.

Use batch endpoints

/v1/technologies/lookup and /v1/companies/batch let you look up multiple items in a single request.

Monitor usage

Check /v1/usage to track request counts and credit consumption.

Authentication

Set up your API key for Bearer token authentication.

Credits

Credit costs per endpoint and plan details.

Errors

Error codes including 429 rate limit responses.

Account API

Monitor usage statistics and credit balance.

Frequently asked questions

The API returns HTTP 429 with a Retry-After header indicating how many seconds to wait. Your request isn’t charged credits. Wait the specified time and retry. See errors for the full error response format.
Rate limits are enforced per API key on a rolling 60-second window. Since each organization has a single API key, the limit applies to all requests from your organization combined.
Cache domain lookups for at least 24 hours (tech stacks don’t change that often). Use batch endpoints like /v1/companies/batch and /v1/technologies/lookup to process multiple items in one request. Monitor your usage with the free /v1/usage endpoint.
No. When the API returns HTTP 429, your request isn’t charged any credits. You only pay credits for successful responses. Wait the number of seconds in the Retry-After header and resend your request.
The Scale plan supports up to 1,000 requests per minute. If you need more throughput, contact TechnologyChecker for enterprise-level rate limits. Enterprise plans include custom request quotas alongside higher credit allocations. Visit technologychecker.io to discuss your requirements.
Instead of resetting your request count at fixed intervals, the API uses a sliding window. Each request’s timestamp is tracked, and the count includes only requests from the last 60 seconds. This prevents burst traffic at window boundaries and gives you a steady, predictable request allowance.