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.

🔑 No API key

Start calling endpoints immediately — zero signup.

⚡ Real checks

Live HTTP requests from our VPS, not stale crowdsourced data.

🧊 45s cache

Responses cached 45 seconds for speed and fairness.

📊 Rich data

Verdicts, timings, stage-by-stage diagnostics and 24h history.

Quick start

GET https://websitedownornot.com/check.php?host=example.com
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

GET /check.php?host={domain} · cached 45s
ParameterTypeDescription
hoststring, requiredDomain 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

2 · Global recent checks

GET /check.php?action=history · cached 10s

Returns the latest public checks (max 30) as [ { "host", "verdict", "ts" }, … ] — the same feed shown on our homepage.

3 · Per-domain response-time history

GET /check.php?action=history&host={domain} · cached 30s

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

GET /check.php?action=outages · cached 30s

Returns domains currently detected or reported as down, with report counts: [ { "host", "count", "ts" }, … ].

5 · Subscribe a "back online" alert

POST /notify.php · form-encoded
ParameterTypeDescription
hoststring, requiredDomain to watch.
emailstring, requiredAddress 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

POST /check.php?action=report · 1 report / hour / browser

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

See the API in action

Try the same engine in the browser, or explore a live status page.

Check a website now Live status page How it works