# SEO API
> Run an on-page SEO audit on any URL — title and meta-description analysis, heading structure, content length, image alt coverage, canonical / viewport / Open Graph checks and an internal/external link breakdown — with an overall 0–100 score. Plus a dedicated link analysis endpoint.

## Authentication
All requests require your oanor API key in the `x-oanor-key` header. Get one at https://www.oanor.com/developer/keys.

```bash
curl -H "x-oanor-key: oanor_live_…" "https://api.oanor.com/seo-api/..."
```

## Pricing
- **Free** (Free) — 600 calls/Mo, 1 req/s
- **Basic** ($16/Mo) — 25,000 calls/Mo, 5 req/s
- **Pro** ($49/Mo) — 120,000 calls/Mo, 15 req/s
- **Mega** ($129/Mo) — 500,000 calls/Mo, 40 req/s

## Endpoints

### SEO

#### `GET /v1/audit` — On-page SEO audit + score

**Parameters:**
- `url` (query, required, string) — Page URL to audit Example: `https://example.com`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/seo-api/v1/audit?url=https%3A%2F%2Fexample.com"
```

**Response:**
```json
{
    "data": {
        "h1": [
            "Example Domain"
        ],
        "url": "https://example.com/",
        "lang": "en",
        "links": {
            "total": 1,
            "external": 1,
            "internal": 0,
            "nofollow": 0
        },
        "score": 45,
        "title": "Example Domain",
        "checks": [
            {
                "id": "title_present",
                "pass": true
            },
            {
                "id": "title_length_ok",
                "pass": false
            },
            {
                "id": "meta_description_present",
                "pass": false
            },
            {
                "id": "meta_description_length_ok",
                "pass": false
            },
            {
                "id": "single_h1",
                "pass": true
            },
            {
                "id": "has_viewport",
                "pass": true
            },
            {
                "id": "has_canonical",
                "pass": false
            },
            {
                "id": "image_alt_coverage",
                "pass": true
            },
            {
                "id": "has_open_graph",
                "pass": false
            },
            {
                "id": "enough_content",
                "pass": false
            },
            {
                "id": "has_lang",
                "pass": true
            }
        ],
        "images": {
            "count": 0,
       
…(truncated, see openapi.json for full schema)
```

#### `GET /v1/links` — Link analysis

**Parameters:**
- `url` (query, required, string) — Page URL Example: `https://example.com`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/seo-api/v1/links?url=https%3A%2F%2Fexample.com"
```

**Response:**
```json
{
    "data": {
        "url": "https://example.com/",
        "links": [
            {
                "url": "https://iana.org/domains/example",
                "internal": false,
                "nofollow": false
            }
        ],
        "total": 1,
        "external": 1,
        "internal": 0,
        "nofollow": 0,
        "final_url": "https://example.com/"
    },
    "meta": {
        "timestamp": "2026-05-30T01:58:29.180Z",
        "request_id": "da2d0d13-146c-48ae-a9c2-19f2e64428b1"
    },
    "status": "ok",
    "message": "Links retrieved successfully",
    "success": true
}
```


---
Marketplace page: https://www.oanor.com/api/seo-api
OpenAPI spec: https://www.oanor.com/api/seo-api/openapi.json
