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 |
|---|---|---|---|
url | string | Yes | URL to audit |
lang | string | No | Report language (en, ru, de, zh, hi, th, fr, es, cs, ar). Default: en |
skip_performance | boolean | No | Skip Google PageSpeed check |
skip_broken_links | boolean | No | Skip 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 |
|---|---|---|
| Free | 3 | — |
| Registered | 5 | — |
| 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