Référence développeur
Recherche DNS
API DomScan : Effectuez des recherches DNS pour n'importe quel type d'enregistrement.
Recherche DNS
Effectuez des recherches DNS pour n'importe quel type d'enregistrement.
GET
/v1/dns
Crédits: 1
Paramètres de requête
| Paramètre | Type | requis |
|---|---|---|
| domain | string | requis |
| type |
string
Valeurs autorisées
AAAAAMXNSTXTSOACNAMECAAPTRSRVALL
Défaut
A
|
optionnel |
Champs de réponse
Exemple de requête
curl -H "X-API-Key: $DOMSCAN_API_KEY" "https://domscan.net/v1/dns?domain=example.com&type=A"const response = await fetch("https://domscan.net/v1/dns?domain=example.com&type=A", {
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/dns?domain=example.com&type=A",
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/dns?domain=example.com&type=A", 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/dns?domain=example.com&type=A")
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))Exemple de réponse
{
"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"
}
],
"meta": {
"served_by": "pop=unknown country=unknown"
}
}
Codes de statut HTTP
200OK400Requête incorrecte401Non autorisé402Paiement requis429Trop de requêtes
POST
/v1/dns/bulk
Corps de la requête
| Champ | Type | Description |
|---|---|---|
| domains requis | string[] | Tableau de noms de domaines complets à vérifier |
| type requis | string | Type d'enregistrement DNS (A, AAAA, MX, TXT, NS, etc.) |
Utilisez POST /v1/dns/bulk pour interroger un type d'enregistrement sur plusieurs domaines dans une seule requête. Envoyez un corps JSON avec domains et type. Prend en charge jusqu'à 25 domaines par requête.
Exemple de requête
curl -H "X-API-Key: your-api-key" -X POST "https://domscan.net/v1/dns/bulk" -H "Content-Type: application/json" -d '{
"domains": ["example.com", "github.com", "cloudflare.com"],
"type": "MX"
}'
Exemple de réponse
{
"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",
"record_type": "MX"
}
}
Champs de réponse
| Champ | 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.record_type |
string |
GET
/v1/dns/all
Crédits: 2
Paramètres de requête
| Paramètre | Type | requis |
|---|---|---|
| domain | string | requis |
| wildcard_probe |
string
Valeurs autorisées
1
|
optionnel |
Champs de réponse
| Champ | 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 |
meta |
object |
meta.served_by |
string |
Exemple de requête
curl -H "X-API-Key: $DOMSCAN_API_KEY" "https://domscan.net/v1/dns/all?domain=example.com&wildcard_probe=1"const response = await fetch("https://domscan.net/v1/dns/all?domain=example.com&wildcard_probe=1", {
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/dns/all?domain=example.com&wildcard_probe=1",
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/dns/all?domain=example.com&wildcard_probe=1", 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/dns/all?domain=example.com&wildcard_probe=1")
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))Exemple de réponse
{
"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:[email protected]",
"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"
}
Codes de statut HTTP
200OK400Requête incorrecte401Non autorisé402Paiement requis429Trop de requêtes