The GoodPing API

The same live checks the website runs, returned as JSON. One GET request, no SDK, no OAuth dance. Useful for status dashboards, CI pipelines, client reporting and anything that needs to know whether a site is answering.

Try it right now

curl "https://goodping.com/api/v1/check?host=bbc.co.uk"

Keyless requests are capped at ten a minute. A free key raises that to 500 calls a month and gives you usage tracking.

Get a free key

No password, no card. The key arrives by email with a link to your account page.

Allowances

PlanCalls
No key10 a minute
Free key500 a month
Pro25,000 a month

Need more than that? Ask — bulk allowances are fine, we just want to know what you are building.

Endpoints

All endpoints take ?host= and an optional &key= (or an X-API-Key header).

GET /api/v1/check

Availability, status code, response time, TTFB, IP, server, redirects and ping.

curl "https://goodping.com/api/v1/check?host=example.com&key=gp_yourkeyhere"

GET /api/v1/dns

Every DNS record type the domain publishes.

curl "https://goodping.com/api/v1/dns?host=example.com&key=gp_yourkeyhere"

GET /api/v1/ssl

Live certificate: issuer, expiry, days remaining, hostname match, protocol.

curl "https://goodping.com/api/v1/ssl?host=example.com&key=gp_yourkeyhere"

GET /api/v1/email

MX, SPF, DKIM selectors, DMARC policy and a deliverability grade.

curl "https://goodping.com/api/v1/email?host=example.com&key=gp_yourkeyhere"

GET /api/v1/headers

All response headers plus a security grade and what is missing.

curl "https://goodping.com/api/v1/headers?host=example.com&key=gp_yourkeyhere"

Example response

{
  "host": "example.com",
  "endpoint": "check",
  "checked_at": "2026-08-27T10:54:53+00:00",
  "took_ms": 214,
  "quota": { "plan": "free", "limit": 500, "used": 37 },
  "data": {
    "up": true,
    "status_code": 200,
    "response_ms": 186.4,
    "ttfb_ms": 141.2,
    "ip": "93.184.216.34",
    "server": "nginx",
    "redirects": 1,
    "ping_ms": 12.4,
    "packet_loss": 0
  }
}

Errors return a JSON body with error and message, and an HTTP status that matches: 400 bad request, 401 bad key, 429 over quota, 502 host unreachable.

Fair use

Every call makes a real request to the host you name, so please check things you own or have a reason to watch, cache results you poll often, and do not point it at a third party at high frequency. Abuse gets a key revoked, and we would much rather raise your allowance than do that.