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

# API Reference

> SEO Crawler REST API

# API Reference

Base URL: `https://seocrawler.app/api/v1`

## Authentication

Include your API key in the `Authorization` header:

```bash theme={null}
Authorization: Bearer sc_your_api_key
```

<Note>
  API access requires an **Agency plan**. Generate keys at [Settings → API](https://seocrawler.app/settings).
</Note>

***

## Available Endpoints

<CardGroup cols={2}>
  <Card title="Crawls" icon="spider-web" href="/api-reference/crawls">
    Start crawls, check status, and retrieve results programmatically.
  </Card>

  <Card title="Webhooks" icon="webhook" href="/api-reference/webhooks">
    Configure real-time notifications for crawl events.
  </Card>
</CardGroup>

***

## Errors

All errors follow a consistent format:

```json theme={null}
{
  "error": {
    "message": "Human-readable message",
    "code": "ERROR_CODE"
  }
}
```

| Status | Code               | Description          |
| ------ | ------------------ | -------------------- |
| 400    | `VALIDATION_ERROR` | Invalid request      |
| 401    | `UNAUTHORIZED`     | Invalid API key      |
| 403    | `AGENCY_REQUIRED`  | Requires Agency plan |
| 404    | `NOT_FOUND`        | Resource not found   |
| 429    | `RATE_LIMITED`     | Too many requests    |

***

## Rate Limits

* **1,000 requests/minute** per API key
* **10 crawl starts/minute**

Headers included in every response:

```
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 999
X-RateLimit-Reset: 1699574400
```

<Tip>
  The `X-RateLimit-Reset` header contains a Unix timestamp indicating when your rate limit will reset.
</Tip>
