Developer API
API Documentation
Integrate website scans, DNS lookups, SSL checks and JSON utilities into your own applications. API keys are available on paid plans.
Authentication
Every request must include an API key in the X-Api-Key header. Create and manage your keys from the dashboard.
Header:
X-Api-Key: www_xxxxx
Keep your key secret — anyone with it can use your quota. Missing or invalid keys return 401.
Rate Limits
- Per-minute request cap (higher for API keys).
- Per-day request cap (higher for API keys).
- Scan & API usage also count toward your plan's monthly quota.
Exceeding a limit returns 429 with a JSON error body.
Queue a Scan
Queues a full website audit (SEO, security, performance, DNS, email, accessibility, AI readiness, technical).
POST /api/v1/website/scan
{ "url": "example.com" }
Response:
202 Accepted
{
"scanId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"status": "Queued",
"hangfireJobId": "5"
}
- Limited by your plan's daily scan allowance.
- Scans run in the background; poll the GET endpoint until status is Completed.
Fetch a Scan
Returns the scan status and category scores once available.
GET /api/v1/website/{scanId}
200 OK
{
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"websiteId": "...",
"status": "Completed",
"overallScore": 87,
"seoScore": 92,
"securityScore": 80,
"performanceScore": 88,
"errorMessage": null,
"startedAtUtc": "2026-09-24T10:00:00Z",
"finishedAtUtc": "2026-09-24T10:00:12Z"
}
DNS Lookup
Resolve DNS records (default type A) or fetch all common record types.
GET /api/v1/dns?host=example.com&type=A
200 OK
{
"host": "example.com",
"type": "A",
"records": [ { "name": "example.com.", "type": "A", "ttl": 3600, "value": "93.184.216.34" } ]
}
GET /api/v1/dns/all?host=example.com
200 OK
{
"host": "example.com",
"records": [ ... ]
}
Check SSL Certificate
Returns certificate details, validity and expiry for the host.
GET /api/v1/ssl?host=example.com&port=443
200 OK
{
"valid": true,
"issuer": "...",
"subject": "CN=example.com",
"expiresAtUtc": "2026-12-24T00:00:00Z",
...
}
Only ports 443 and 8443 are allowed.
JSON Validate & Format
Validate or pretty-print a JSON document. Send the raw string as the request body.
POST /api/v1/json/validate
Content-Type: text/plain
{ "foo": "bar" }
200 OK
{ "valid": true }
POST /api/v1/json/format
Content-Type: text/plain
{"foo":"bar"}
200 OK
{ "formatted": "{\n \"foo\": \"bar\"\n}" }
Errors
| Status | Meaning |
|---|---|
| 401 | Missing, invalid, expired, or quota-exceeded API key. |
| 429 | Rate limit exceeded or daily/monthly scan quota reached. |
| 400 | Malformed request body or invalid parameters. |
| 404 | Scan not found (or not owned by this key). |