Public API
Free Website Audit API
The same JSON that powers this website — free, keyless, CORS-enabled, and cached at Cloudflare's edge. Pipe it into CI, dashboards, monitoring, or your own product.
No signup
Public endpoint, no API key or account required.
CORS enabled
Call it directly from the browser, edge, or server.
Cached at the edge
Sub-second reads worldwide. Reports refresh every 24h.
Endpoint
One GET, one path parameter, one JSON response.
GET https://websiteauditor.net/api/public/audit/{domain}Returns 200 when a cached report exists, 404 if the domain has never been scanned. Trigger a scan by visiting /report/{domain} first.
Quickstart
curl
curl https://websiteauditor.net/api/public/audit/example.comBrowser / fetch
const res = await fetch(
"https://websiteauditor.net/api/public/audit/example.com"
);
const { ok, cachedAt, report } = await res.json();
console.log(report.grade); // "A", "B", "C", …
console.log(report.score); // 0–100
console.log(report.categories); // per-category scores
console.log(report.modules); // every check, with detailsNode.js — scan on demand + poll
import { setTimeout as delay } from "node:timers/promises";
async function getReport(domain) {
const url = `https://websiteauditor.net/api/public/audit/${domain}`;
for (let i = 0; i < 5; i++) {
const res = await fetch(url);
if (res.ok) return res.json();
if (res.status === 404) {
// No cached report yet — trigger one by hitting the report page,
// then wait and retry.
await fetch(`https://websiteauditor.net/report/${domain}`);
await delay(4000);
continue;
}
throw new Error(`${res.status} ${res.statusText}`);
}
throw new Error("No report available");
}
const { report } = await getReport("example.com");
console.log(report.score, report.grade);Response shape
Every field the report UI shows is available in the JSON. Categories, module-level scores, findings, and remediation hints are all first-class.
{
"ok": true,
"cachedAt": 1735689600000,
"report": {
"domain": "example.com",
"score": 82,
"grade": "A-",
"categories": {
"security": { "score": 88, "grade": "A" },
"infrastructure": { "score": 91, "grade": "A" },
"seo": { "score": 76, "grade": "B" },
"email": { "score": 84, "grade": "A" },
"performance": { "score": 74, "grade": "C" },
"trust": { "score": 100, "grade": "A+" }
},
"modules": [
{
"id": "hsts",
"title": "HSTS",
"status": "pass" | "warn" | "fail",
"score": 100,
"details": "...",
"recommendation": "..."
}
],
"finalUrl": "https://example.com/",
"fetchedAt": 1735689600000
}
}Common use cases
- CI security gate — fail the build if
score < 80. - Agency dashboards — track client sites weekly with one call each.
- Lead qualification — enrich CRM rows with a real security grade.
- Uptime + posture — pair with your monitoring to catch drift in HTTPS, DNS, or headers.
Grade badge
Every scanned domain gets a shareable SVG badge — perfect for READMEs and status pages.
<a href="https://websiteauditor.net/report/example.com">
<img src="https://websiteauditor.net/badge/example.com.svg" alt="Website Auditor grade" height="28"/>
</a>Frequently asked questions
Popular tools
Tool
Security Headers Checker
Test HSTS, CSP, X-Frame-Options, Referrer-Policy and Permissions-Policy in seconds.
Read
Tool
SSL Certificate Checker
Verify the SSL certificate for any domain in seconds.
Read
Tool
TLS Checker
Confirm modern TLS support for any hostname.
Read
Tool
Cookie Security Checker
See exactly which cookies a site drops and whether they're safe.
Read
Related guides
Guide
HTTP Security Headers: A Practical Guide
Every HTTP security header explained in plain English, with production-ready examples for Nginx, Apache, Cloudflare, Express and WordPress.
Read
Guide
Content Security Policy (CSP): What It Is and How to Ship It
A step-by-step guide to writing, testing and shipping a strict Content Security Policy without breaking your site.
Read
Guide
HTTP Strict Transport Security (HSTS)
How HSTS works, how to enable it safely, and when (and how) to preload your domain into every major browser.
Read
Guide
Referrer-Policy
Referrer-Policy controls how much of your URL is sent to other sites. Here's the setting that balances analytics with privacy.
Read