API Comparaison des résolveurs DNS
Compare les réponses des résolveurs DNS récursifs publics de Cloudflare et Google. Il s’agit de deux fournisseurs DoH en anycast mondial, pas de sondes géographiques ni de serveurs de noms faisant autorité. Utilisez cette référence pour choisir une opération et intégrer son contrat de réponse documenté.
Opérations
GET /v1/dns/propagation
GET
/v1/dns/propagation
Paramètres de Requête
| Paramètre | Type | requis |
|---|---|---|
| domain | string | requis |
| type |
string
Valeurs autorisées
AAAAACNAMEMXTXTNSSOA
Défaut
A
|
optionnel |
| expected | string | optionnel |
Champs de Réponse
| Champ | Type |
|---|---|
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 |
Exemple de Requête
curl -H "X-API-Key: $DOMSCAN_API_KEY" "https://domscan.net/v1/dns/propagation?domain=example.com&type=example.com&expected=example.com"
Exemple de Réponse
{
"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
Paramètres du Corps
| Paramètre | Type | requis |
|---|---|---|
| domains | string[] | requis |
| type |
string
Valeurs autorisées
AAAAACNAMEMXTXTNSSOA
Défaut
A
|
optionnel |
| expected | string | optionnel |
Champs de Réponse
| Champ | Type |
|---|---|
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 |
Exemple de Requête
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"
}'
Exemple de Réponse
{
"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
Champs de Réponse
| Champ | Type |
|---|---|
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 |
Exemple de Requête
curl -H "X-API-Key: $DOMSCAN_API_KEY" "https://domscan.net/v1/dns/servers"
Exemple de Réponse
{
"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
}