API de Comparación de servidores DNS recursivos
Compara las respuestas de los servicios DNS recursivos públicos de Cloudflare y Google. Son dos proveedores DoH con anycast global, no sondas geográficas ni servidores de nombres autoritativos. Usa esta referencia para elegir una operación e integrar su contrato de respuesta documentado.
Operaciones
GET /v1/dns/propagation
GET
/v1/dns/propagation
Parámetros de consulta
| Parámetro | Tipo | obligatorio |
|---|---|---|
| domain | string | obligatorio |
| type |
string
Valores permitidos
AAAAACNAMEMXTXTNSSOA
Predeterminado
A
|
opcional |
| expected | string | opcional |
Campos de respuesta
| Campo | Tipo |
|---|---|
domain |
string |
record_type |
string |
expected_value |
string | null |
measurement_scope |
string |
percentage_basis |
string |
propagation_percentage |
number |
fully_propagated |
boolean |
consistent |
boolean |
unique_values[] |
string[] |
results[] |
object[] |
results[] |
object |
results[].server |
object |
results[].server.name |
string |
results[].server.ip |
string |
results[].server.provider |
string |
results[].server.location |
string |
results[].server.country |
string |
results[].server.scope |
string |
results[].server.doh_endpoint |
string |
results[].server.documentation_url |
string |
results[].server.format |
string |
results[].success |
boolean |
results[].records[] |
string[] |
results[].ttl |
integer | null |
results[].response_time_ms |
integer |
results[].error |
string | null |
checked_at |
string |
total_duration_ms |
integer |
summary |
object |
summary.total_servers |
integer |
summary.successful |
integer |
summary.failed |
integer |
summary.matching_expected |
integer |
propagation_summary |
object |
propagation_summary.measurement_scope |
string |
propagation_summary.percentage_basis |
string |
propagation_summary.resolver_count |
integer |
propagation_summary.successful_count |
integer |
propagation_summary.failed_count |
integer |
propagation_summary.propagation_percentage |
number |
propagation_summary.fully_propagated |
boolean |
propagation_summary.consistent |
boolean |
propagation_summary.unique_value_count |
integer |
propagation_summary.matching_expected_count |
integer |
propagation_summary.expected_value_present |
boolean | null |
propagation_summary.countries_checked |
integer |
propagation_summary.providers_checked |
integer |
propagation_summary.locations_checked |
integer |
propagation_summary.slowest_resolver |
string | null |
propagation_summary.slowest_response_ms |
integer | null |
propagation_summary.fastest_response_ms |
integer | null |
propagation_summary.disagreement_count |
integer |
propagation_summary.confidence |
string |
Solicitud de ejemplo
curl -H "X-API-Key: $DOMSCAN_API_KEY" "https://domscan.net/v1/dns/propagation?domain=example.com&type=example.com&expected=example.com"
Respuesta de ejemplo
{
"domain": "example.com",
"record_type": "A",
"expected_value": "string",
"measurement_scope": "configured_recursive_resolvers",
"percentage_basis": "expected_value_match",
"propagation_percentage": 1,
"fully_propagated": true,
"consistent": true,
"unique_values": [
"string"
],
"results": [
{
"server": {
"name": "string",
"ip": "198.51.100.10",
"provider": "string",
"location": "Global anycast",
"country": "GLOBAL",
"scope": "global-anycast",
"doh_endpoint": "https://example.com",
"documentation_url": "https://example.com",
"format": "dns-json"
},
"success": true,
"records": [
"string"
],
"ttl": 1,
"response_time_ms": "2026-04-15T12:00:00Z",
"error": "string"
}
],
"checked_at": "2026-04-15T12:00:00Z",
"total_duration_ms": 1,
"summary": {
"total_servers": 1,
"successful": 1,
"failed": 1,
"matching_expected": 1
},
"propagation_summary": {
"measurement_scope": "configured_recursive_resolvers",
"percentage_basis": "expected_value_match",
"resolver_count": 1,
"successful_count": 1,
"failed_count": 1,
"propagation_percentage": 1,
"fully_propagated": true,
"consistent": true,
"unique_value_count": 1,
"matching_expected_count": 1,
"expected_value_present": true,
"countries_checked": 1,
"providers_checked": 1,
"locations_checked": 1,
"slowest_resolver": "string",
"slowest_response_ms": 1,
"fastest_response_ms": 1,
"disagreement_count": 1,
"confidence": "high"
}
}
POST /v1/dns/propagation/bulk
POST
/v1/dns/propagation/bulk
Parámetros del cuerpo
| Parámetro | Tipo | obligatorio |
|---|---|---|
| domains | string[] | obligatorio |
| type |
string
Valores permitidos
AAAAACNAMEMXTXTNSSOA
Predeterminado
A
|
opcional |
| expected | string | opcional |
Campos de respuesta
| Campo | Tipo |
|---|---|
results[] |
unknown[] |
meta |
object |
meta.total |
integer |
meta.succeeded |
integer |
meta.failed |
integer |
meta.max_items |
integer |
meta.credits_per_item |
integer |
meta.duration_ms |
integer |
Solicitud de ejemplo
curl -X POST "https://domscan.net/v1/dns/propagation/bulk" \
-H "Content-Type: application/json" \
-H "X-API-Key: $DOMSCAN_API_KEY" \
-d '{
"domains": [
"example.com",
"cloudflare.com"
],
"type": "A"
}'
Respuesta de ejemplo
{
"results": [
null
],
"meta": {
"total": 1,
"succeeded": 1,
"failed": 1,
"max_items": 10,
"credits_per_item": 1,
"duration_ms": 1
}
}
GET /v1/dns/servers
GET
/v1/dns/servers
Campos de respuesta
| Campo | Tipo |
|---|---|
measurement_scope |
string |
geographic_vantage |
boolean |
servers[] |
object[] |
servers[] |
object |
servers[].name |
string |
servers[].location |
string |
servers[].country |
string |
servers[].ip |
string |
servers[].provider |
string |
servers[].scope |
string |
servers[].doh_endpoint |
string |
servers[].documentation_url |
string |
servers[].format |
string |
total |
integer |
Solicitud de ejemplo
curl -H "X-API-Key: $DOMSCAN_API_KEY" "https://domscan.net/v1/dns/servers"
Respuesta de ejemplo
{
"measurement_scope": "configured_recursive_resolvers",
"geographic_vantage": false,
"servers": [
{
"name": "string",
"location": "string",
"country": "string",
"ip": "198.51.100.10",
"provider": "string",
"scope": "global-anycast",
"doh_endpoint": "https://example.com",
"documentation_url": "https://example.com",
"format": "dns-json"
}
],
"total": 1
}