개발자 참고자료

DNS 전파 검사기 API 문서

DNS 전파 검사기 API 문서: 전 세계 13개의 글로벌 DNS 서버에서 DNS 레코드 전파를 확인합니다. 마이그레이션 후 DNS 변경 확인, DNS 문제 해결, TTL 만료 모니터링에 필수입니다. 서버는 북미, 유럽, 아시아태평양 및 기타 지역을 포함합니다.

DNS 전파 검사기

전 세계 13개의 글로벌 DNS 서버에서 DNS 레코드 전파를 확인합니다. 마이그레이션 후 DNS 변경 확인, DNS 문제 해결, TTL 만료 모니터링에 필수입니다. 서버는 북미, 유럽, 아시아태평양 및 기타 지역을 포함합니다.

GET /v1/dns/propagation

쿼리 매개변수

매개변수유형설명
domain 필수 string 확인할 도메인(예: "example.com" 또는 "subdomain.example.com")
type 선택 사항 string 레코드 유형: A, AAAA, CNAME, MX, TXT, NS, SOA(기본값: A)
expected 선택 사항 string 전파에 대해 검증할 예상 값(예: 새 IP 주소)

응답 필드

필드유형설명
propagation_percentagenumber예상 값을 반환하는 서버의 백분율(0-100)
fully_propagatedboolean모든 서버가 일관된 값을 반환하면 참
consistentboolean모든 성공 응답이 동일한 값을 가지면 참
unique_valuesarray서버 전체에서 확인된 모든 고유한 레코드 값
resultsarray위치, 레코드, TTL, 응답 시간을 포함한 서버별 결과

예제 요청

# 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']}"

예제 응답

{
  "domain": "example.com",
  "record_type": "A",
  "propagation_percentage": 100,
  "fully_propagated": true,
  "consistent": true,
  "unique_values": ["93.184.216.34"],
  "results": [
    {
      "server": {
        "name": "Cloudflare",
        "ip": "1.1.1.1",
        "location": "Global Anycast"
      },
      "success": true,
      "records": ["93.184.216.34"],
      "ttl": 86400,
      "response_time_ms": 12
    },
    {
      "server": {
        "name": "Google",
        "ip": "8.8.8.8",
        "location": "Global Anycast"
      },
      "success": true,
      "records": ["93.184.216.34"],
      "ttl": 86400,
      "response_time_ms": 15
    }
  ],
  "summary": {
    "total_servers": 13,
    "successful": 13,
    "failed": 0
  }
}
GET /v1/dns/servers

전파 점검에 사용되는 DNS 서버 목록을 얻으세요. 위치 및 IP 주소와 함께 모든 13개의 글로벌 서버를 반환합니다.

예제 응답

{
  "servers": [
    {"name": "Cloudflare", "ip": "1.1.1.1", "location": "Global Anycast"},
    {"name": "Google", "ip": "8.8.8.8", "location": "Global Anycast"},
    {"name": "Quad9", "ip": "9.9.9.9", "location": "Global Anycast"},
    {"name": "OpenDNS", "ip": "208.67.222.222", "location": "US"},
    {"name": "Comodo", "ip": "8.26.56.26", "location": "US"}
  ],
  "total": 13
}

응답 필드

필드 유형
servers[] object[]
servers[] object
servers[].name string
servers[].location string
servers[].country string
servers[].ip string
servers[].provider string
total integer
GET /v1/dns/history

쿼리 매개변수

매개변수 유형 필수
domain string 필수
type string 선택 사항
from string 선택 사항
to string 선택 사항
limit integer 선택 사항

응답 필드

필드 유형
domain string
history[] object[]
history[] object
history[].date string
history[].record_type string
history[].changes[] object[]
history[].changes[] object
history[].changes[].action string
history[].changes[].value string
current_records object
first_seen string | null
last_seen string | null
total_changes integer
record_types_tracked[] string[]
beta_notice string
meta object
meta.note string
meta.data_source string

예제 요청

curl -H "X-API-Key: $DOMSCAN_API_KEY" "https://domscan.net/v1/dns/history?domain=example.com&type=A&from=2026-01-01&to=2026-04-15&limit=10"

예제 응답

{
  "domain": "example.com",
  "history": [
    {
      "date": "2026-04-13",
      "record_type": "A",
      "changes": [
        {
          "action": "added",
          "value": "104.20.23.154"
        },
        {
          "action": "added",
          "value": "172.66.147.243"
        },
        {
          "action": "removed",
          "value": "104.18.26.120"
        }
      ]
    }
  ],
  "current_records": {
    "A": [
      "104.20.23.154",
      "172.66.147.243"
    ]
  },
  "first_seen": "2026-01-01",
  "last_seen": "2026-04-13",
  "total_changes": 3,
  "record_types_tracked": [
    "A"
  ],
  "beta_notice": "This endpoint is in beta. History data accumulates from API usage over time and does not include external historical sources.",
  "meta": {
    "note": "History data recorded from prior API lookups.",
    "data_source": "internal"
  }
}

놀라운 회사의 사람들이 사용함

VercelLLM PulseOLXCasa ModernaPipeCal.comBeehiivSnykTogglRemoteSprigDeel