Referencia para desarrolladores
Búsqueda DNS
API de DomScan: Realiza búsquedas DNS para cualquier tipo de registro.
Búsqueda DNS
Realiza búsquedas DNS para cualquier tipo de registro.
GET
/v1/dns
Créditos: 1
Parámetros de consulta
| Parámetro | Tipo | obligatorio |
|---|---|---|
| domain | string | obligatorio |
| type |
string
Valores permitidos
AAAAAMXNSTXTSOACNAMECAAPTRSRVALL
Predeterminado
A
|
opcional |
Campos de respuesta
Solicitud de ejemplo
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))Respuesta de ejemplo
{
"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"
}
}
Códigos de estado HTTP
200OK400Solicitud incorrecta401No autorizado402Pago requerido429Demasiadas solicitudes
POST
/v1/dns/bulk
Cuerpo de la solicitud
| Campo | Tipo | Descripción |
|---|---|---|
| domains obligatorio | string[] | Array de nombres de dominio completos a comprobar |
| type obligatorio | string | Tipo de registro DNS (A, AAAA, MX, TXT, NS, etc.) |
Usa POST /v1/dns/bulk para consultar un tipo de registro en varios dominios en una sola solicitud. Envía un cuerpo JSON con domains y type. Admite hasta 25 dominios por solicitud.
Solicitud de ejemplo
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"
}'
Respuesta de ejemplo
{
"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"
}
}
Campos de respuesta
| Campo | Tipo |
|---|---|
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éditos: 2
Parámetros de consulta
| Parámetro | Tipo | obligatorio |
|---|---|---|
| domain | string | obligatorio |
| wildcard_probe |
string
Valores permitidos
1
|
opcional |
Campos de respuesta
| Campo | Tipo |
|---|---|
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 |
Solicitud de ejemplo
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))Respuesta de ejemplo
{
"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"
}
Códigos de estado HTTP
200OK400Solicitud incorrecta401No autorizado402Pago requerido429Demasiadas solicitudes