REST API Documentation

Run SEO audits programmatically via the CheckSEO REST API. Available on Agency and Enterprise plans.

Authentication

All API requests must include your API key in the Authorization header. Create API keys in your Account settings.

Authorization: Bearer csk_your_api_key_here

API keys start with csk_ prefix. Keep them secret — do not expose in client-side code.

Base URL

https://checkseo.site
POST /api/audits

Start a new SEO audit. Returns audit_id for polling status.

Request Body (JSON)

Field Type Required Description
urlstringYesURL to audit
langstringNoReport language (en, ru, de, zh, hi, th, fr, es, cs, ar). Default: en
skip_performancebooleanNoSkip Google PageSpeed check
skip_broken_linksbooleanNoSkip broken links check

Example

curl -X POST https://checkseo.site/api/audits \
  -H "Authorization: Bearer csk_your_api_key" \
  -H "Content-Type: application/json" \
  -d '{"url": "https://example.com", "lang": "en"}'

Response (200)

{
  "audit_id": "a1b2c3d4e5f6...",
  "url": "https://example.com"
}
GET /api/audits/{audit_id}/status

Poll this endpoint to check audit progress. When status is "done", the redirect field contains the report URL.

Response

// In progress
{"status": "running", "step": 3, "total": 8, "percent": 37}

// Completed
{"status": "done", "redirect": "/audits/a1b2c3d4...", "percent": 100}

// Error
{"status": "error", "error_message": "...", "percent": 0}
GET /audits/{audit_id}/pdf

Download the audit report as PDF. Agency/Enterprise plans get clean PDF without watermark.

Typical Workflow

1 POST /api/audits — Start the audit, get audit_id
2 GET /api/audits/{id}/status — Poll every 2-3 seconds until status is "done"
3 GET /audits/{id} — View the full report
4 GET /audits/{id}/pdf — Download PDF (optional)

Rate Limits

Current Plan Audits / month API
Free3
Registered5
Pro ($19/mo)30
Agency ($49/mo)100
Enterprise ($149/mo)500

Python Example

import requests, time

API_KEY = "csk_your_api_key"
BASE = "https://checkseo.site"
HEADERS = {"Authorization": f"Bearer {API_KEY}",
           "Content-Type": "application/json"}

# 1. Start audit
r = requests.post(f"{BASE}/api/audits",
                  json={"url": "https://example.com", "lang": "en"},
                  headers=HEADERS)
audit_id = r.json()["audit_id"]

# 2. Poll until done
while True:
    s = requests.get(f"{BASE}/api/audits/{audit_id}/status").json()
    if s["status"] == "done":
        break
    if s["status"] == "error":
        raise Exception(s["error_message"])
    time.sleep(2)

# 3. Download PDF
pdf = requests.get(f"{BASE}/audits/{audit_id}/pdf",
                   headers=HEADERS)
with open("report.pdf", "wb") as f:
    f.write(pdf.content)

API access is available on Agency ($49/mo) and Enterprise ($149/mo) plans.

View Plans