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

  • 200 OK
  • 400 Requête incorrecte
  • 401 Non autorisé
  • 402 Paiement requis
  • 429 Trop de requêtes
POST /v1/dns/bulk

Corps de la requête

ChampTypeDescription
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

  • 200 OK
  • 400 Requête incorrecte
  • 401 Non autorisé
  • 402 Paiement requis
  • 429 Trop de requêtes