Developer Reference
DNS Lookup API Documentation
DNS Lookup API Documentation: Perform DNS lookups for any record type.
DNS Lookup
Perform DNS lookups for any record type.
GET
/v1/dns
Query Parameters
| Parameter | Type | required |
|---|---|---|
| domain | string | required |
| type | string | optional |
Response Fields
| Field | Type |
|---|---|
domain |
string |
record_type |
string |
records[] |
object[] |
records[] |
object |
records[].type |
string |
records[].name |
string |
records[].data |
string |
records[].ttl |
integer |
records[].priority |
integer |
records[].classification |
string |
status |
string |
dnssec_validated |
boolean |
query_time_ms |
integer |
checked_at |
string |
warnings[] |
object[] |
warnings[] |
object |
warnings[].code |
string |
warnings[].message |
string |
warnings[].severity |
string |
Example Request
curl -H "X-API-Key: $DOMSCAN_API_KEY" "https://domscan.net/v1/dns?domain=example.com&type=example.com"
Example Response
{
"domain": "google.com",
"record_type": "TXT",
"records": [
{
"type": "TXT",
"name": "google.com",
"data": "v=spf1 include:_spf.google.com ~all",
"ttl": 300,
"classification": "spf"
},
{
"type": "TXT",
"name": "google.com",
"data": "google-site-verification=abc123",
"ttl": 300,
"classification": "verification"
}
],
"status": "success",
"dnssec_validated": false,
"query_time_ms": 37,
"checked_at": "2026-04-18T21:00:00Z",
"warnings": [
{
"code": "TXT_MULTIPLE_RESPONSES",
"message": "Domain publishes multiple TXT records; use classification to isolate the security ones.",
"severity": "info"
}
]
}
POST
/v1/dns/bulk
Request Body
| Field | Type | Description |
|---|---|---|
| domains required | string[] | Array of full domain names to check |
| type required | string | DNS record type (A, AAAA, MX, TXT, NS, etc.) |
Use POST /v1/dns/bulk to query one record type across multiple domains in a single request. Send a JSON body with domains and type. Supports up to 25 domains per request.
Example Request
curl -X POST "https://domscan.net/v1/dns/bulk" -H "Content-Type: application/json" -d '{
"domains": ["example.com", "github.com", "cloudflare.com"],
"type": "MX"
}'
Example Response
{
"results": [
{
"domain": "example.com",
"record_type": "MX",
"records": [
{"type": "MX", "name": "example.com", "data": "mx.example.com", "ttl": 300, "priority": 10}
],
"status": "success",
"dnssec_validated": true,
"query_time_ms": 22,
"checked_at": "2024-01-15T12:00:00Z"
},
{
"domain": "bad domain",
"record_type": "MX",
"records": [],
"status": "error",
"dnssec_validated": false,
"query_time_ms": 0,
"checked_at": "2024-01-15T12:00:00Z",
"error": {
"code": "INVALID_DOMAIN",
"message": "Invalid domain format"
}
}
],
"summary": {
"total": 2,
"successful": 1,
"nxdomain": 0,
"errors": 1,
"query_time_ms": 31
},
"meta": {
"served_by": "pop=MAD country=ES",
"worker_version": "2.0.0",
"record_type": "MX"
}
}
Response Fields
| Field | Type |
|---|---|
results[] |
object[] |
results[] |
object |
results[].domain |
string |
results[].record_type |
string |
results[].records[] |
object[] |
results[].records[] |
object |
results[].records[].type |
string |
results[].records[].name |
string |
results[].records[].data |
string |
results[].records[].ttl |
integer |
results[].records[].priority |
integer |
results[].records[].classification |
string |
results[].status |
string |
results[].dnssec_validated |
boolean |
results[].query_time_ms |
integer |
results[].checked_at |
string |
results[].error |
object |
results[].error.code |
string |
results[].error.message |
string |
summary |
object |
summary.total |
integer |
summary.successful |
integer |
summary.nxdomain |
integer |
summary.errors |
integer |
summary.query_time_ms |
integer |
meta |
object |
meta.served_by |
string |
meta.worker_version |
string |
meta.record_type |
string |
GET
/v1/dns/all
Query Parameters
| Parameter | Type | required |
|---|---|---|
| domain | string | required |
| wildcard_probe | string | optional |
Response Fields
| Field | Type |
|---|---|
domain |
string |
records |
object |
summary |
object |
summary.has_a |
boolean |
summary.has_aaaa |
boolean |
summary.has_ns |
boolean |
summary.has_mx |
boolean |
summary.has_txt |
boolean |
summary.has_https |
boolean |
summary.has_svcb |
boolean |
summary.ipv6_parity |
string |
warnings[] |
object[] |
warnings[] |
object |
warnings[].code |
string |
warnings[].message |
string |
warnings[].severity |
string |
wildcard |
object |
wildcard.suspected |
boolean |
wildcard.probe_label |
string |
query_time_ms |
integer |
checked_at |
string |
Example Request
curl -H "X-API-Key: $DOMSCAN_API_KEY" "https://domscan.net/v1/dns/all?domain=example.com&wildcard_probe=example.com"
Example Response
{
"domain": "openai.com",
"records": {
"A": [
{
"type": "A",
"name": "openai.com",
"data": "104.18.33.45",
"ttl": 300
}
],
"AAAA": [
{
"type": "AAAA",
"name": "openai.com",
"data": "2606:4700::6812:212d",
"ttl": 300
}
],
"MX": [
{
"type": "MX",
"name": "openai.com",
"data": "aspmx.l.google.com",
"ttl": 300,
"priority": 1
}
],
"NS": [
{
"type": "NS",
"name": "openai.com",
"data": "ns1-02.azure-dns.com",
"ttl": 172800
},
{
"type": "NS",
"name": "openai.com",
"data": "ns2-02.azure-dns.net",
"ttl": 172800
}
],
"TXT": [
{
"type": "TXT",
"name": "openai.com",
"data": "v=spf1 include:_spf.google.com ~all",
"ttl": 300,
"classification": "spf"
},
{
"type": "TXT",
"name": "openai.com",
"data": "v=TLSRPTv1; rua=mailto:tlsrpt@openai.com",
"ttl": 300,
"classification": "tls_rpt"
}
]
},
"summary": {
"has_a": true,
"has_aaaa": true,
"has_ns": true,
"has_mx": true,
"has_txt": true,
"has_https": false,
"has_svcb": false,
"ipv6_parity": "full"
},
"warnings": [
{
"code": "MX_PRIORITY_SHARED",
"message": "Multiple MX hosts share the same priority.",
"severity": "info"
}
],
"wildcard": {
"suspected": false,
"probe_label": "_domscan-probe-4f6a2c.openai.com"
},
"query_time_ms": 82,
"checked_at": "2026-04-18T21:00:00Z"
}