Free Website Status API
The same real-time down-detector engine that powers WebsiteDownOrNot — exposed as a simple, free JSON API for developers. No API key required for light, non-commercial use.
Why build on our status API?
WebsiteDownOrNot performs real server-side diagnostics — DNS lookup, TCP/TLS connection and HTTP response analysis — and returns a clean, machine-readable verdict. Use it to power status dashboards, uptime badges, incident bots, monitoring integrations, browser extensions or research projects, without running your own probing infrastructure.
Start calling endpoints immediately — zero signup.
Live HTTP requests from our VPS, not stale crowdsourced data.
Responses cached 45 seconds for speed and fairness.
Verdicts, timings, stage-by-stage diagnostics and 24h history.
Quick start
curl "https://websitedownornot.com/check.php?host=example.com"
JavaScript (Node, or any CORS-enabled client):
const res = await fetch('https://websitedownornot.com/check.php?host=example.com');
const data = await res.json();
console.log(data.verdict, data.ms); // e.g. "up" 214
1 · Check a website's status
| Parameter | Type | Description |
|---|---|---|
host | string, required | Domain to check. Schemes, paths and ports are stripped automatically. |
Example response:
{
"host": "example.com",
"ts": 1754300000000,
"from": "VPS Server",
"verdict": "up",
"title": "example.com is up — for everyone",
"text": "The server responded normally (HTTP 200).",
"ms": 214,
"stages": [
{ "label": "DNS lookup", "detail": "Domain resolves", "ok": true, "ms": 12 },
{ "label": "Connection", "detail": "TCP + TLS handshake OK", "ok": true, "ms": 120 },
{ "label": "HTTP response","detail": "HTTP 200", "ok": true, "ms": 214 }
]
}
Verdict values
up— server responded normally (HTTP 2xx/3xx).down— DNS failure, no connection, or HTTP 5xx server error.protected— reachable, but anti-bot protection returned 403/429 (usually up for humans).tls— answers over HTTP but the HTTPS/TLS handshake failed (certificate problem).
2 · Global recent checks
Returns the latest public checks (max 30) as [ { "host", "verdict", "ts" }, … ] — the same feed shown on our homepage.
3 · Per-domain response-time history
Returns the last 24 hours of data points (max 200) for one domain: [ { "ts", "ms", "verdict" }, … ] — perfect for drawing your own uptime/response-time charts.
4 · Live outage board
Returns domains currently detected or reported as down, with report counts: [ { "host", "count", "ts" }, … ].
5 · Subscribe a "back online" alert
| Parameter | Type | Description |
|---|---|---|
host | string, required | Domain to watch. |
email | string, required | Address to notify when the site recovers. |
host=example.com&email=you@domain.com
Returns { "success": true, "message": "…" } or { "error": "…" }. The subscription is deleted automatically once the alert is sent.
6 · Submit a community outage report
Increments the crowdsourced outage counter for a domain (the "it's down for me too" button). Returns { "success": true }, or a friendly message if the browser already reported recently.
Error handling
All endpoints speak JSON. For invalid input the status endpoint returns an error key inside a normal 200 response, so always check for it:
{ "error": "Invalid domain format. Please try again." }
Private, reserved and internal IP ranges are rejected to keep the API safe (no SSRF).
Rate limits & fair use
- Results are cached for 45 seconds — design your integration around that instead of polling faster.
- Light, non-commercial use is free with attribution: "Data by WebsiteDownOrNot".
- Do not scan private, internal or non-public networks.
- For commercial or high-volume use, contact us first. We reserve the right to rate-limit abusive traffic.
See the API in action
Try the same engine in the browser, or explore a live status page.