Ontwikkelaarsreferentie
Domeinengezondheid
DomScan-API: Uitgebreide gezondheidscontrole voor een domein met inbegrip van DNS, SSL, bereikbaarheid van websites en beveiligingsheaders.
Domeinengezondheid
Uitgebreide gezondheidscontrole voor een domein met inbegrip van DNS, SSL, bereikbaarheid van websites en beveiligingsheaders.
GET
/v1/health
Tegoeden: 3
Queryparameters
| Parameter | Type | vereist |
|---|---|---|
| domain | string | vereist |
| details |
boolean
Standaard
true
|
optioneel |
Antwoordvelden
| Veld | Type |
|---|---|
domain |
string |
health_score |
integer |
grade |
string |
checks |
object |
checks.dns_configured |
boolean |
checks.ssl_valid |
boolean |
checks.email_deliverable |
boolean |
checks.blacklist_status |
string |
checks.age_years |
integer | null |
checks.registration_stable |
boolean |
checks.dnssec_enabled |
boolean |
enriched |
object |
enriched.tls |
object |
enriched.tls.grade |
string |
enriched.tls.protocol |
string | null |
enriched.tls.cipher |
string | null |
enriched.tls.chain_valid |
boolean |
enriched.tls.days_to_expiry |
integer |
enriched.tls.hostname_match |
boolean | null |
enriched.tls.ocsp_stapling |
boolean |
enriched.tls.grade_reasons[] |
string[] |
enriched.http_versions |
object |
enriched.http_versions.http1_1 |
boolean |
enriched.http_versions.http2 |
boolean |
enriched.http_versions.http3 |
boolean |
enriched.http_versions.alt_svc |
string | null |
enriched.http_versions.http3_advertised |
boolean |
enriched.http_versions.alt_svc_protocols[] |
string[] |
enriched.http_versions.curl_http3_supported |
boolean |
enriched.http_versions.h2_alpn_accepted |
string | null |
enriched.http_versions.h3_alpn_accepted |
string | null |
enriched.hsts |
object |
enriched.hsts.reachable |
boolean |
enriched.hsts.final_url |
string | null |
enriched.hsts.status_code |
integer | null |
enriched.hsts.header_present |
boolean |
enriched.hsts.hsts_header |
string | null |
enriched.hsts.max_age |
integer | null |
enriched.hsts.include_subdomains |
boolean | null |
enriched.hsts.preload_directive |
boolean | null |
enriched.hsts.preload_eligible |
boolean |
enriched.hsts.preload_status |
string | null |
enriched.hsts.preloaded_domain |
string | null |
enriched.hsts.preload_bulk |
boolean | null |
enriched.hsts.issues[] |
string[] |
enriched.hsts.errors[] |
string[] |
enriched.smtp |
object |
enriched.smtp.host |
string |
enriched.smtp.port |
integer |
enriched.smtp.reachable |
boolean |
enriched.smtp.tls_mode |
string |
enriched.smtp.tls_negotiated |
boolean |
enriched.smtp.tls_protocol |
string |
enriched.smtp.tls_cipher |
string |
enriched.smtp.starttls_offered |
boolean | null |
enriched.smtp.banner |
string |
enriched.smtp.error |
string |
enriched.smtp.fcrdns |
object |
enriched.smtp.fcrdns.addresses[] |
string[] |
enriched.smtp.fcrdns.ptr_hostnames[] |
string[] |
enriched.smtp.fcrdns.all_forward_confirmed |
boolean |
enriched.smtp.fcrdns.confirmed_addresses[] |
string[] |
enriched.smtp.fcrdns.unconfirmed_addresses[] |
string[] |
warnings[] |
string[] |
recommendations[] |
string[] |
component_summary |
object |
component_summary.score |
integer |
component_summary.grade |
string |
component_summary.check_count |
integer |
component_summary.passed_count |
integer |
component_summary.failed_count |
integer |
component_summary.warning_count |
integer |
component_summary.recommendation_count |
integer |
component_summary.confidence |
string |
component_summary.dns_ok |
boolean |
component_summary.https_ok |
boolean |
component_summary.email_ok |
boolean |
component_summary.blacklist_status |
string |
component_summary.dnssec_enabled |
boolean |
component_summary.enriched_section_count |
integer |
component_summary.enriched_sections[] |
string[] |
details |
object |
health_checks[] |
object[] |
health_checks[] |
object |
health_checks[].category |
string |
health_checks[].name |
string |
health_checks[].passed |
boolean |
health_checks[].score |
integer |
health_checks[].weight |
integer |
health_checks[].details |
string | null |
checked_at |
string |
meta |
object |
meta.check_duration_ms |
integer |
meta.served_by |
string |
Voorbeeldverzoek
curl -H "X-API-Key: $DOMSCAN_API_KEY" "https://domscan.net/v1/health?domain=example.com&details=true"const response = await fetch("https://domscan.net/v1/health?domain=example.com&details=true", {
headers: { "X-API-Key": process.env.DOMSCAN_API_KEY },
});
const data = await response.json();
console.log(data);import os
import requests
response = requests.get(
"https://domscan.net/v1/health?domain=example.com&details=true",
headers={"X-API-Key": os.environ["DOMSCAN_API_KEY"]},
)
print(response.json())package main
import (
"fmt"
"io"
"net/http"
"os"
)
func main() {
req, err := http.NewRequest(http.MethodGet, "https://domscan.net/v1/health?domain=example.com&details=true", nil)
if err != nil {
panic(err)
}
req.Header.Set("X-API-Key", os.Getenv("DOMSCAN_API_KEY"))
resp, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
data, err := io.ReadAll(resp.Body)
if err != nil {
panic(err)
}
fmt.Println(resp.Status, string(data))
}require "json"
require "net/http"
uri = URI("https://domscan.net/v1/health?domain=example.com&details=true")
request = Net::HTTP::Get.new(uri)
request["X-API-Key"] = ENV.fetch("DOMSCAN_API_KEY")
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http|
http.request(request)
end
puts JSON.pretty_generate(JSON.parse(response.body))Voorbeeldantwoord
{
"domain": "cloudflare.com",
"health_score": 94,
"grade": "A",
"checks": {
"dns_configured": true,
"ssl_valid": true,
"email_deliverable": true,
"blacklist_status": "clean",
"age_years": 15,
"registration_stable": true,
"dnssec_enabled": true
},
"enriched": {
"tls": {
"grade": "A+",
"protocol": "TLSv1.3",
"cipher": "TLS_AES_256_GCM_SHA384",
"chain_valid": true,
"days_to_expiry": 72,
"hostname_match": true,
"ocsp_stapling": true,
"grade_reasons": [
"TLS 1.3 enabled",
"Valid certificate chain"
]
},
"http_versions": {
"http1_1": true,
"http2": true,
"http3": true,
"alt_svc": "h3=\":443\"; ma=86400",
"http3_advertised": true,
"alt_svc_protocols": [
"h3"
],
"curl_http3_supported": true,
"h2_alpn_accepted": "h2",
"h3_alpn_accepted": "h3"
},
"hsts": {
"reachable": true,
"final_url": "https://cloudflare.com/",
"status_code": 200,
"header_present": true,
"hsts_header": "max-age=31536000; includeSubDomains",
"max_age": 31536000,
"include_subdomains": true,
"preload_directive": false,
"preload_eligible": true,
"preload_status": "preloaded",
"preloaded_domain": "cloudflare.com",
"preload_bulk": false,
"issues": [
"missing preload directive"
],
"errors": []
}
},
"warnings": [],
"recommendations": [
"Publish the HSTS preload directive if you want preload-list eligibility."
],
"checked_at": "2026-04-18T21:00:00Z",
"details": {
"dns": {
"has_a_record": true,
"has_aaaa_record": true,
"has_nameservers": true,
"has_mx_record": true,
"nameservers": [
"ns3.cloudflare.com",
"ns5.cloudflare.com"
],
"mx_records": [
"route1.mx.cloudflare.net"
],
"a_records": [
"104.16.132.229",
"104.16.133.229"
],
"aaaa_records": [
"2606:4700::6810:84e5",
"2606:4700::6810:85e5"
]
},
"ssl": {
"https_works": true,
"certificate_valid": true,
"days_until_expiry": 72,
"issuer": "Google Trust Services"
},
"email": {
"has_mx": true,
"has_spf": true,
"has_dmarc": true,
"has_dkim_selector": true,
"spf_record": "v=spf1 include:_spf.google.com ~all",
"dmarc_policy": "reject",
"mx_hosts": [
"route1.mx.cloudflare.net"
]
},
"security": {
"dnssec_enabled": true,
"has_caa_record": true,
"caa_issuers": [
"digicert.com",
"letsencrypt.org"
],
"http_to_https_redirect": true,
"has_security_txt": true,
"security_txt_fields": [
"Contact",
"Expires",
"Preferred-Languages"
],
"security_headers": {
"has_hsts": true,
"hsts_max_age": 31536000,
"has_csp": true,
"has_x_frame_options": true,
"has_x_content_type_options": true,
"has_referrer_policy": true,
"has_permissions_policy": true,
"score": 92
}
},
"age": {
"registration_date": "2010-07-06T00:00:00Z",
"expiration_date": "2030-07-06T00:00:00Z",
"last_updated": "2025-07-06T00:00:00Z",
"age_days": 5766,
"age_years": 15,
"days_until_expiry": 1540,
"registrar": "Cloudflare Registrar"
},
"blacklist": {
"clean": true,
"status": "clean",
"listed_on": [],
"checked_lists": [
"spamhaus",
"surbl"
],
"domain_listed_on": [],
"ip_listed_on": [],
"check_type": "mixed"
}
},
"health_checks": [
{
"category": "dns",
"name": "Authoritative DNS records present",
"passed": true,
"score": 100,
"weight": 15
}
],
"meta": {
"check_duration_ms": 248,
"served_by": "pop=MAD country=ES"
}
}
HTTP-statuscodes
200OK401Niet geautoriseerd402Betaling vereist429Te veel verzoeken
GET
/v1/health/quick
Tegoeden: 1
Queryparameters
| Parameter | Type | vereist |
|---|---|---|
| domain | string | vereist |
Antwoordvelden
| Veld | Type |
|---|---|
domain |
string |
dns_ok |
boolean | null |
https_ok |
boolean | null |
dns_complete |
boolean |
checked_at |
string |
confidence |
object |
confidence.checks_run[] |
string[] |
confidence.passed_count |
integer |
confidence.failed_count |
integer |
confidence.unknown_count |
integer |
confidence.confidence |
string |
confidence.dns_ok |
boolean | null |
confidence.https_ok |
boolean | null |
meta |
object |
meta.check_duration_ms |
integer |
Voorbeeldverzoek
curl -H "X-API-Key: $DOMSCAN_API_KEY" "https://domscan.net/v1/health/quick?domain=example.com"const response = await fetch("https://domscan.net/v1/health/quick?domain=example.com", {
headers: { "X-API-Key": process.env.DOMSCAN_API_KEY },
});
const data = await response.json();
console.log(data);import os
import requests
response = requests.get(
"https://domscan.net/v1/health/quick?domain=example.com",
headers={"X-API-Key": os.environ["DOMSCAN_API_KEY"]},
)
print(response.json())package main
import (
"fmt"
"io"
"net/http"
"os"
)
func main() {
req, err := http.NewRequest(http.MethodGet, "https://domscan.net/v1/health/quick?domain=example.com", nil)
if err != nil {
panic(err)
}
req.Header.Set("X-API-Key", os.Getenv("DOMSCAN_API_KEY"))
resp, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
data, err := io.ReadAll(resp.Body)
if err != nil {
panic(err)
}
fmt.Println(resp.Status, string(data))
}require "json"
require "net/http"
uri = URI("https://domscan.net/v1/health/quick?domain=example.com")
request = Net::HTTP::Get.new(uri)
request["X-API-Key"] = ENV.fetch("DOMSCAN_API_KEY")
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http|
http.request(request)
end
puts JSON.pretty_generate(JSON.parse(response.body))Voorbeeldantwoord
{
"domain": "example.com",
"dns_ok": true,
"https_ok": true,
"checked_at": "2026-04-18T21:00:00Z",
"meta": {
"check_duration_ms": 89
}
}
HTTP-statuscodes
200OK400Ongeldig verzoek401Niet geautoriseerd402Betaling vereist429Te veel verzoeken500Serverfout