DNS Propagation Checker API Documentation: Check DNS record propagation across 13 global DNS servers worldwide. Essential for verifying DNS changes after migrations, troubleshooting DNS issues, or monitoring TTL expiration. Servers span North America, Europe, Asia-Pacific, and other regions for comprehensive coverage.
DNS Propagation Checker
Check DNS record propagation across 13 global DNS servers worldwide. Essential for verifying DNS changes after migrations, troubleshooting DNS issues, or monitoring TTL expiration. Servers span North America, Europe, Asia-Pacific, and other regions for comprehensive coverage.
GET/v1/dns/propagation
Query Parameters
Parameter
Type
Description
domainrequired
string
Domain to check (e.g., "example.com" or "subdomain.example.com")
typeoptional
string
Record type: A, AAAA, CNAME, MX, TXT, NS, SOA (default: A)
expectedoptional
string
Expected value to verify propagation against (e.g., new IP address)
Response Fields
Field
Type
Description
propagation_percentage
number
Percentage of servers returning expected value (0-100)
fully_propagated
boolean
True if all servers return consistent values
consistent
boolean
True if all successful responses have the same value
unique_values
array
All unique record values seen across servers
results
array
Per-server results with location, records, TTL, response time
Example Request
# Check A record propagation
curl "https://domscan.net/v1/dns/propagation?domain=example.com&type=A"
# Check MX record with expected value
curl "https://domscan.net/v1/dns/propagation?domain=example.com&type=MX&expected=mail.example.com"
const url = new URL("https://domscan.net/v1/dns/propagation");
url.searchParams.set("domain", "example.com");
url.searchParams.set("type", "A");
const response = await fetch(url);
const data = await response.json();
console.log(`Propagation: ${data.propagation_percentage}%`);
console.log(`Fully propagated: ${data.fully_propagated}`);
// Check which servers are still showing old values
data.results
.filter(r => !r.success || r.records[0] !== data.expected)
.forEach(r => console.log(`${r.server.name}: ${r.records}`));
import requests
response = requests.get(
"https://domscan.net/v1/dns/propagation",
params={"domain": "example.com", "type": "A"}
)
data = response.json()
print(f"Propagation: {data['propagation_percentage']}%")
print(f"Fully propagated: {data['fully_propagated']}")
# Show servers with different values
for result in data['results']:
print(f"{result['server']['name']}: {result['records']}")
package main
import (
"encoding/json"
"fmt"
"net/http"
)
func main() {
resp, _ := http.Get("https://domscan.net/v1/dns/propagation?domain=example.com&type=A")
defer resp.Body.Close()
var data map[string]interface{}
json.NewDecoder(resp.Body).Decode(&data)
fmt.Printf("Propagation: %.0f%%\n", data["propagation_percentage"])
fmt.Printf("Fully propagated: %v\n", data["fully_propagated"])
}
require 'net/http'
require 'json'
uri = URI("https://domscan.net/v1/dns/propagation?domain=example.com&type=A")
response = Net::HTTP.get_response(uri)
data = JSON.parse(response.body)
puts "Propagation: #{data['propagation_percentage']}%"
puts "Fully propagated: #{data['fully_propagated']}"