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

# Rate limits

> Understand request limits and how to handle retry logic with response headers.

## Request limits

<Info>
  The Octoparse MCP server allows up to **300 requests per minute** per OAuth session. This limit applies to all MCP tool calls, including search, execution, export, and task management.
</Info>

### What happens when the limit is exceeded

<Warning>
  If the request limit is exceeded, the server returns HTTP `429 Too Many Requests`.
</Warning>

Use the response headers below to decide when to retry instead of relying on fixed wait times.

### Retry headers

<table>
  <thead>
    <tr>
      <th style={{ width: "260px" }}>Header</th>
      <th>Description</th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td><code style={{ whiteSpace: "nowrap" }}>X-RateLimit-Limit</code></td>
      <td>Maximum number of requests allowed in the current rate limit window.</td>
    </tr>

    <tr>
      <td><code style={{ whiteSpace: "nowrap" }}>X-RateLimit-Remaining</code></td>
      <td>Number of requests remaining in the current window.</td>
    </tr>

    <tr>
      <td><code style={{ whiteSpace: "nowrap" }}>X-RateLimit-Reset</code></td>
      <td>ISO 8601 timestamp showing when the current window resets. Use this value to determine the next safe retry time.</td>
    </tr>

    <tr>
      <td><code style={{ whiteSpace: "nowrap" }}>X-RateLimit-Window</code></td>
      <td>Length of the current rate limit window in milliseconds.</td>
    </tr>
  </tbody>
</table>

### Recommended handling

<Steps>
  <Step title="Check the status code">
    If the server returns `429`, treat the request as rate-limited rather than failed permanently.
  </Step>

  <Step title="Read the retry headers">
    Check `X-RateLimit-Remaining` and `X-RateLimit-Reset` to understand whether the current window is exhausted and when it will reset.
  </Step>

  <Step title="Retry after reset">
    Wait until the time indicated by `X-RateLimit-Reset` before sending the next request.
  </Step>
</Steps>
