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
| Plan | Calls |
|---|---|
| No key | 10 a minute |
| Free key | 500 a month |
| Pro | 25,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.