> ## Documentation Index
> Fetch the complete documentation index at: https://docs.scraper.creatorlookup.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Rate Limits

> Per-key rate limiting to ensure fair usage

## How rate limiting works

Each API key has a configurable `rate_limit_per_minute` value. The API uses a **sliding window** algorithm — it tracks requests over a rolling 60-second window rather than fixed clock-minute boundaries.

## Default limits

| Plan    | Requests per minute |
| ------- | ------------------- |
| Default | 60                  |

Rate limits are set per API key and can be adjusted on request.

## Rate limit response

When you exceed your limit, the API returns `429 Too Many Requests`:

```json theme={null}
{
  "error": {
    "code": "RATE_LIMITED",
    "message": "Rate limit exceeded. Try again later."
  }
}
```

No credits are deducted for rate-limited requests.

## Best practices

* **Cache responses client-side** — profile data doesn't change every second
* **Add delays between requests** — spread requests over time rather than bursting
* **Monitor your usage** — if you're frequently hitting 429s, consider requesting a higher limit
* **Use exponential backoff** — when you receive a 429, wait increasingly longer before retrying

### Example: retry with backoff

<CodeGroup>
  ```javascript JavaScript theme={null}
  async function fetchWithRetry(url, headers, maxRetries = 3) {
    for (let i = 0; i < maxRetries; i++) {
      const res = await fetch(url, { headers });

      if (res.status === 429) {
        const delay = Math.pow(2, i) * 1000;
        await new Promise((r) => setTimeout(r, delay));
        continue;
      }

      return res.json();
    }
    throw new Error("Max retries exceeded");
  }
  ```

  ```python Python theme={null}
  import time
  import requests

  def fetch_with_retry(url, headers, max_retries=3):
      for i in range(max_retries):
          res = requests.get(url, headers=headers)

          if res.status_code == 429:
              time.sleep(2 ** i)
              continue

          return res.json()

      raise Exception("Max retries exceeded")
  ```
</CodeGroup>
