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
401Missing, invalid, expired, or quota-exceeded API key.
429Rate limit exceeded or daily/monthly scan quota reached.
400Malformed request body or invalid parameters.
404Scan not found (or not owned by this key).