Developer API

GO DEEPERWhat do you want to uncover next?

Every check on this site as a JSON endpoint. Free plan: 200 requests per day per key.

Get a key

Use it

curl -H "x-api-key: YOUR_KEY" \
  "https://sitedowncheck.com/api/v1/check?url=example.com"

You can also pass ?key=YOUR_KEY. Responses are JSON. Errors return an error field. Results are cached for about 30 seconds.

Quickstart

JavaScript

const res = await fetch('https://sitedowncheck.com/api/v1/check?url=example.com', { headers: { 'x-api-key': process.env.SDC_KEY } });
const data = await res.json();
console.log(data.up, data.status, data.responseTime);

Python

import os, requests
r = requests.get('https://sitedowncheck.com/api/v1/check', params={'url': 'example.com'}, headers={'x-api-key': os.environ['SDC_KEY']}, timeout=30)
print(r.json()['up'])

Example response

{
  "host": "example.com",
  "up": true,
  "status": 200,
  "responseTime": 143,
  "ip": "93.184.216.34",
  "redirects": 1,
  "checkedAt": 1759600000000
}

Newer tools (root-cause, page weight, TLS, CORS and others) return a common shape: verdict with a level of good, warn, bad or info, a title and summary; optional score and grade; sections of checks, tables or lists; and tips.

Errors

StatusMeaning
400Missing or invalid input, or a private or reserved address. The body has an error message.
401Missing or invalid API key.
429Daily key limit or per-minute rate limit reached. Check the X-RateLimit-Remaining header.
200 with errorThe check ran but the target could not be reached (for example a timeout). The error text explains why.

Endpoints

EndpointParameterReturns
GET /api/v1/checkurlIs the site up: status code, response time, redirects
GET /api/v1/sslhostCertificate details and expiry
GET /api/v1/dnshostDNS records (optional type=MX)
GET /api/v1/headersurlResponse headers
GET /api/v1/securityurlSecurity header grade
GET /api/v1/speedurlTiming breakdown
GET /api/v1/healthurlFull health score
GET /api/v1/whoishostDomain age, registrar, expiry
GET /api/v1/hostinghostASN, hosting provider, CDN
GET /api/v1/iphostIP addresses and reverse DNS
GET /api/v1/robotsurlrobots.txt and sitemap analysis
GET /api/v1/emaildnshostSPF, DKIM, DMARC
GET /api/v1/porthostTCP port check (port=443)
GET /api/v1/vitalsurlCore Web Vitals via PageSpeed (strategy=mobile)
GET /api/v1/reverseiphostOther domains on the same IP
GET /api/v1/blacklisthostDNS blacklist (DNSBL) listings
GET /api/v1/dnssechostDNSSEC status
GET /api/v1/mixedcontenturlInsecure resources on HTTPS pages
GET /api/v1/cookiesurlCookie security flags
GET /api/v1/metaurlMeta tags and social preview
GET /api/v1/linksurlBroken link scan (slow)
GET /api/v1/rootcauseurlFailing layer: DNS, TCP, TLS, HTTP or content
GET /api/v1/regionsurlReachability from each probe location
GET /api/v1/redirectdebugurlRedirect chain with loops, mixed schemes and cache hints
GET /api/v1/maintenanceurlMaintenance page vs real outage
GET /api/v1/cloudflareurlCloudflare detection and 52x / 1xxx error diagnosis
GET /api/v1/pageweighturlPage weight by resource type
GET /api/v1/protocolsurlHTTP/2 and HTTP/3 support
GET /api/v1/thirdpartyurlThird-party scripts and hosts
GET /api/v1/sitereporturlCombined site health report
GET /api/v1/sslchainhostCertificate chain problems
GET /api/v1/tlsversionshostSupported TLS versions and grade
GET /api/v1/corsurlCORS policy (optional origin=)
GET /api/v1/securitytxturlsecurity.txt validation (RFC 9116)
GET /api/v1/bulksslhostsSSL expiry for up to 50 hosts (separate with commas or new lines)
GET /api/v1/danglinghostDangling DNS / subdomain takeover risk
GET /api/v1/deliverabilityhostEmail deliverability test
GET /api/v1/spfhostSPF validation and lookup count
GET /api/v1/subdomainshostSubdomains from certificate transparency
GET /api/v1/dnshistoryhostRecorded DNS changes

Limits

200 requests/day per key (resets at 00:00 UTC). HTTP 429 when exceeded. Private and reserved addresses cannot be checked.