> For the complete documentation index see https://domscan.net/llms.txt. Markdown versions of every docs page are available by appending .md to the page URL.

Source: https://domscan.net/ko/docs/dns-lookup

# DNS 조회

DomScan API로 모든 레코드 유형에 대해 DNS 조회를 수행합니다.

모든 레코드 유형에 대해 DNS 조회를 수행합니다.

GET /v1/dns 크레딧: 1

#### 쿼리 매개변수

| 매개변수 | 유형 | 필수 |
| --- | --- | --- |
| domain | string | 필수 |
| type | string 허용된 값 `A`, `AAAA`, `MX`, `NS`, `TXT`, `SOA`, `CNAME`, `CAA`, `PTR`, `SRV`, `ALL` 기본값 `A` | 선택 사항 |

#### 응답 필드

#### 예제 요청

```bash
curl -H "X-API-Key: $DOMSCAN_API_KEY" "https://domscan.net/v1/dns?domain=example.com&type=A"
```

```javascript
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);
```

```python
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())
```

```go
package main

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"))

```ruby
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")

#### 예제 응답

```json
{
  "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"
  }
}
```

#### HTTP 상태 코드

- `200` 성공
- `400` 잘못된 요청
- `401` 인증되지 않음
- `402` 결제 필요
- `429` 요청 과다

POST /v1/dns/bulk

#### 요청 본문

| 필드 | 유형 | 설명 |
| --- | --- | --- |
| domains 필수 | string[] | 확인할 전체 도메인 이름 배열 |
| type 필수 | string | DNS 레코드 유형(A, AAAA, MX, TXT, NS 등) |

POST /v1/dns/bulk를 사용하면 여러 도메인에서 동일한 레코드 유형을 한 번의 요청으로 조회할 수 있습니다. domains와 type이 포함된 JSON 본문을 보내세요. 요청당 최대 25개 도메인을 지원합니다.

#### 예제 요청

```bash
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"
  }'
```

#### 예제 응답

```json
{
  "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"
  }
}
```

#### 응답 필드

| 필드 | 유형 |
| --- | --- |
| `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 크레딧: 2

#### 쿼리 매개변수

| 매개변수 | 유형 | 필수 |
| --- | --- | --- |
| domain | string | 필수 |
| wildcard_probe | string 허용된 값 `1` | 선택 사항 |

#### 응답 필드

| 필드 | 유형 |
| --- | --- |
| `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 |

#### 예제 요청

```bash
curl -H "X-API-Key: $DOMSCAN_API_KEY" "https://domscan.net/v1/dns/all?domain=example.com&wildcard_probe=1"
```

```javascript
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);
```

```python
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())
```

```go
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))
}
```

```ruby
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))
```

#### 예제 응답

```json
{
  "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:tlsrpt@openai.com",
        "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"
}
```

#### HTTP 상태 코드

- `200` 성공
- `400` 잘못된 요청
- `401` 인증되지 않음
- `402` 결제 필요
- `429` 요청 과다
