開発者向けリファレンス

WHOIS ルックアップ

DomScan APIでレジストラ、日付、ステータスを含むドメインの WHOIS 情報を取得します。

WHOIS ルックアップ

レジストラ、日付、ステータスを含むドメインの WHOIS 情報を取得します。

プライバシーに関する注記: GDPR およびその他のプライバシー規制により、連絡先情報が編集される場合があります。API は プライバシー/プロキシ サービスが使用されている場合を自動的に検出し、検出の詳細を含む privacy オブジェクトを返します。
GET /v1/whois 2 クレジット

クエリパラメータ

パラメータタイプ説明
domain 必須 string 完全なドメイン名(example.com など)

レスポンスフィールド

フィールドタイプ説明
registeredbooleanドメインが登録されているかどうか
registrarstring登録者名
created_datestringISO 8601作成日
expiry_datestringISO 8601有効期限
statusarrayEPPステータス コード
nameserversarray権限のあるネームサーバー
contactsobject登録者、管理者、技術、請求連絡先
privacyobjectプライバシー保護検出

リクエスト例

curl -H "X-API-Key: your-api-key" "https://domscan.net/v1/whois?domain=github.com"
const domscanFetch = (url, options = {}) =>
  fetch(url, {
    ...options,
    headers: { ...options.headers, "X-API-Key": "your-api-key" },
  });

const response = await domscanFetch(
  "https://domscan.net/v1/whois?domain=github.com"
);
const data = await response.json();

console.log(`Registrar: ${data.registrar}`);
console.log(`Created: ${data.created_date}`);
console.log(`Expires: ${data.expiry_date}`);
console.log(`Nameservers: ${data.nameservers.join(', ')}`);

// Check for privacy protection
if (data.privacy.is_private) {
  console.log(`Privacy service: ${data.privacy.privacy_service}`);
}
import requests

domscan = requests.Session()
domscan.headers.update({"X-API-Key": "your-api-key"})

from datetime import datetime

response = domscan.get(
    "https://domscan.net/v1/whois",
    params={"domain": "github.com"}
)
data = response.json()

# Calculate days until expiration
expiry = datetime.fromisoformat(data['expiry_date'].replace('Z', '+00:00'))
days_left = (expiry - datetime.now(expiry.tzinfo)).days

print(f"Registrar: {data['registrar']}")
print(f"Expires in {days_left} days")
print(f"Privacy protected: {data['privacy']['is_private']}")
package main

import (
  "encoding/json"
  "fmt"
  "net/http"
  "os"
)

func domscanGet(url string) (*http.Response, error) {
  request, err := http.NewRequest(http.MethodGet, url, nil)
  if err != nil {
    return nil, err
  }
  request.Header.Set("X-API-Key", os.Getenv("DOMSCAN_API_KEY"))
  return http.DefaultClient.Do(request)
}

func main() {
  resp, _ := domscanGet("https://domscan.net/v1/whois?domain=github.com")
  defer resp.Body.Close()

  var data map[string]interface{}
  json.NewDecoder(resp.Body).Decode(&data)

  fmt.Printf("Registrar: %s\n", data["registrar"])
  fmt.Printf("Created: %s\n", data["created_date"])
  fmt.Printf("Expires: %s\n", data["expiry_date"])
}
require 'net/http'
require 'json'
require 'date'

uri = URI("https://domscan.net/v1/whois?domain=github.com")
request = Net::HTTP::Get.new(uri)
request["X-API-Key"] = ENV.fetch("DOMSCAN_API_KEY")
response = Net::HTTP.start(uri.host, uri.port, use_ssl: uri.scheme == "https") { |http| http.request(request) }
data = JSON.parse(response.body)

expiry = DateTime.parse(data['expiry_date'])
days_left = (expiry - DateTime.now).to_i

puts "Registrar: #{data['registrar']}"
puts "Expires in #{days_left} days"

レスポンス例

{
                "domain": "example.com",
                "registered": true,
                "registrar": "RESERVED-Internet Assigned Numbers Authority",
                "registrar_url": "https://www.iana.org",
                "registrar_iana_id": "376",
                "created_date": "1995-08-14T04:00:00Z",
                "updated_date": "2023-08-14T07:01:38Z",
                "expiry_date": "2024-08-13T04:00:00Z",
                "status": ["clientDeleteProhibited", "serverUpdateProhibited"],
                "nameservers": ["a.iana-servers.net", "b.iana-servers.net"],
                "dnssec": true,
                "contacts": {
                "registrant": {
                "name": "REDACTED FOR PRIVACY",
                "organization": "Internet Assigned Numbers Authority",
                "email": null,
                "phone": null,
                "address": {
                "country": "US"
                },
                "role": "registrant"
                },
                "admin": { "name": "Domain Administrator", "email": "admin@example.org" },
                "tech": { "name": "Technical Contact", "email": "tech@example.org" },
                "billing": null
                },
                "privacy": {
                "is_private": false,
                "privacy_service": null,
                "detected_patterns": []
                },
                "summary": {
                "has_registrant": true,
                "has_admin": true,
                "has_tech": true,
                "has_billing": false,
                "contact_count": 3,
                "is_privacy_protected": false
                },
                "raw_rdap_link": "https://rdap.verisign.com/com/v1/domain/example.com",
                "checked_at": "2025-01-07T10:30:00Z",
                "query_time_ms": 145
                }
POST /v1/whois/bulk 2/domain

複数のドメイン(最大20個)のバルク WHOIS ルックアップ。

リクエストボディ

{
                "domains": ["example.com", "google.com", "github.com"]
                }

レスポンスフィールド

フィールド タイプ
results[] object[]
results[] object
results[].domain string
results[].registrar string | null
results[].created_date string | null
results[].updated_date string | null
results[].expiry_date string | null
results[].nameservers[] string[]
results[].status[] string[]
results[].raw string
results[].raw_whois string | null
results[].edge_summary object
results[].edge_summary.relay_configured boolean
results[].edge_summary.data_sources[] string[]
results[].edge_summary.authoritative_source string
results[].edge_summary.relay_whois_used boolean
results[].edge_summary.raw_whois_available boolean
results[].edge_summary.parse_error_count integer | null
results[].edge_summary.registered boolean | null
results[].edge_summary.available boolean | null
results[].edge_summary.registration_age_days integer | null
results[].edge_summary.days_until_expiry integer | null
results[].edge_summary.expires_within_30_days boolean | null
results[].edge_summary.transfer_locked boolean | null
results[].edge_summary.privacy_protected boolean | null
results[].edge_summary.dnssec boolean | null
results[].edge_summary.nameserver_count integer
results[].edge_summary.contact_roles_available[] string[]
results[].edge_summary.abuse_contact_available boolean
results[].edge_summary.registrar_whois_server string | null
meta object
meta.total integer
meta.successful integer
meta.duration_ms integer

レスポンス例

{
  "results": [
    {
      "domain": "example.com",
      "registrar": "string",
      "created_date": "2026-04-15T12:00:00Z",
      "updated_date": "2026-04-15T12:00:00Z",
      "expiry_date": "2026-04-15T12:00:00Z",
      "nameservers": [
        "string"
      ],
      "status": [
        "string"
      ],
      "raw": "string",
      "raw_whois": "string",
      "edge_summary": {
        "relay_configured": true,
        "data_sources": [
          "rdap"
        ],
        "authoritative_source": "rdap",
        "relay_whois_used": true,
        "raw_whois_available": true,
        "parse_error_count": 1,
        "registered": true,
        "available": true,
        "registration_age_days": 1,
        "days_until_expiry": 1,
        "expires_within_30_days": true,
        "transfer_locked": true,
        "privacy_protected": true,
        "dnssec": true,
        "nameserver_count": 1,
        "contact_roles_available": [
          "string"
        ],
        "abuse_contact_available": true,
        "registrar_whois_server": "string"
      }
    }
  ],
  "meta": {
    "total": 1,
    "successful": 1,
    "duration_ms": 1
  }
}
GET /v1/rdap

クエリパラメータ

パラメータ タイプ 必須
query string オプション
type string オプション
domain string オプション

レスポンスフィールド

フィールド タイプ
query string
type string
status string
rdap object
rdap.objectClassName string
rdap.handle string
rdap.name string
rdap.startAddress string
rdap.endAddress string
rdap.ipVersion string

リクエスト例

curl -H "X-API-Key: $DOMSCAN_API_KEY" "https://domscan.net/v1/rdap?query=example.com"

curl -H "X-API-Key: $DOMSCAN_API_KEY" "https://domscan.net/v1/rdap?type=ip&query=8.8.8.8"

curl -G -H "X-API-Key: $DOMSCAN_API_KEY" "https://domscan.net/v1/rdap" \
  --data "type=ip" \
  --data-urlencode "query=2001:4860:4860::8888/128"

curl -H "X-API-Key: $DOMSCAN_API_KEY" "https://domscan.net/v1/rdap?type=autnum&query=AS174"

レスポンス例

{
  "query": "8.8.8.8",
  "type": "ip",
  "status": "found",
  "rdap": {
    "objectClassName": "ip network",
    "handle": "NET-8-8-8-0-2",
    "name": "LVLT-GOGL-8-8-8",
    "startAddress": "8.8.8.0",
    "endAddress": "8.8.8.255",
    "ipVersion": "v4"
  }
}
POST /v1/rdap/bulk

ボディパラメータ

パラメータ タイプ 必須
queries string[] 必須
type string オプション

レスポンスフィールド

フィールド タイプ
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

リクエスト例

curl -X POST "https://domscan.net/v1/rdap/bulk" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $DOMSCAN_API_KEY" \
  -d '{
  "queries": [
    "example.com",
    "cloudflare.com"
  ],
  "type": "domain"
}'

レスポンス例

{
  "results": [
    null
  ],
  "meta": {
    "total": 1,
    "succeeded": 1,
    "failed": 1,
    "max_items": 10,
    "credits_per_item": 1,
    "duration_ms": 1
  }
}
GET /v1/whois/history

クエリパラメータ

パラメータ タイプ 必須
domain string 必須
limit integer オプション

レスポンスフィールド

フィールド タイプ
domain string
total_snapshots integer
first_seen string | null
last_seen string | null
snapshots[] object[]
snapshots[] object
snapshots[].id integer
snapshots[].domain string
snapshots[].registrar string | null
snapshots[].registrar_iana_id string | null
snapshots[].created_date string | null
snapshots[].expiry_date string | null
snapshots[].updated_date string | null
snapshots[].status[] string[]
snapshots[].nameservers[] string[]
snapshots[].dnssec boolean
snapshots[].transfer_locked boolean
snapshots[].privacy_protected boolean
snapshots[].snapshot_date string
snapshots[].changes_from_previous[] object[]
snapshots[].changes_from_previous[] object
snapshots[].changes_from_previous[].field string
snapshots[].changes_from_previous[].old_value string | null
snapshots[].changes_from_previous[].new_value string | null
snapshots[].created_at string
summary object
summary.registrar_changes integer
summary.nameserver_changes integer
summary.expiry_extensions integer
summary.privacy_toggles integer
summary.status_changes integer
lifecycle_drift_summary object
lifecycle_drift_summary.drift_detected boolean
lifecycle_drift_summary.change_event_count integer
lifecycle_drift_summary.latest_change_date string | null
lifecycle_drift_summary.registrar_changed boolean
lifecycle_drift_summary.nameservers_changed boolean
lifecycle_drift_summary.expiry_extended boolean
lifecycle_drift_summary.status_changed boolean
lifecycle_drift_summary.privacy_changed boolean
lifecycle_drift_summary.transfer_lock_changed boolean
lifecycle_drift_summary.dnssec_changed boolean
lifecycle_drift_summary.expiry_extension_days_total integer
lifecycle_drift_summary.latest_changes[] object[]
lifecycle_drift_summary.latest_changes[] object
lifecycle_drift_summary.latest_changes[].field string
lifecycle_drift_summary.latest_changes[].old_value string | null
lifecycle_drift_summary.latest_changes[].new_value string | null
lifecycle_drift_summary.current_snapshot object
lifecycle_drift_summary.current_snapshot.registrar string | null
lifecycle_drift_summary.current_snapshot.expiry_date string | null
lifecycle_drift_summary.current_snapshot.nameservers[] string[]
lifecycle_drift_summary.current_snapshot.status[] string[]
lifecycle_drift_summary.current_snapshot.privacy_protected boolean
lifecycle_drift_summary.previous_snapshot object
lifecycle_drift_summary.previous_snapshot.registrar string | null
lifecycle_drift_summary.previous_snapshot.expiry_date string | null
lifecycle_drift_summary.previous_snapshot.nameservers[] string[]
lifecycle_drift_summary.previous_snapshot.status[] string[]
lifecycle_drift_summary.previous_snapshot.privacy_protected boolean

リクエスト例

curl -H "X-API-Key: $DOMSCAN_API_KEY" "https://domscan.net/v1/whois/history?domain=example.com&limit=50"

レスポンス例

{
  "domain": "example.com",
  "total_snapshots": 1,
  "first_seen": "2026-07-09",
  "last_seen": "2026-07-09",
  "snapshots": [
    {
      "id": 42,
      "domain": "example.com",
      "registrar": "Example Registrar, Inc.",
      "registrar_iana_id": "9999",
      "created_date": "1995-08-14T04:00:00Z",
      "expiry_date": "2027-08-13T04:00:00Z",
      "updated_date": "2026-06-01T12:00:00Z",
      "status": [
        "client transfer prohibited"
      ],
      "nameservers": [
        "a.iana-servers.net",
        "b.iana-servers.net"
      ],
      "dnssec": true,
      "transfer_locked": true,
      "privacy_protected": true,
      "snapshot_date": "2026-07-09",
      "changes_from_previous": [
        {
          "field": "nameservers",
          "old_value": "ns1.example.net, ns2.example.net",
          "new_value": "a.iana-servers.net, b.iana-servers.net"
        }
      ],
      "created_at": "2026-07-09T10:15:30Z"
    }
  ],
  "summary": {
    "registrar_changes": 1,
    "nameserver_changes": 1,
    "expiry_extensions": 1,
    "privacy_toggles": 1,
    "status_changes": 1
  },
  "lifecycle_drift_summary": {
    "drift_detected": true,
    "change_event_count": 1,
    "latest_change_date": "2026-04-15",
    "registrar_changed": true,
    "nameservers_changed": true,
    "expiry_extended": true,
    "status_changed": true,
    "privacy_changed": true,
    "transfer_lock_changed": true,
    "dnssec_changed": true,
    "expiry_extension_days_total": 1,
    "latest_changes": [
      {
        "field": "string",
        "old_value": "string",
        "new_value": "string"
      }
    ],
    "current_snapshot": {
      "registrar": "string",
      "expiry_date": "2026-04-15T12:00:00Z",
      "nameservers": [
        "string"
      ],
      "status": [
        "string"
      ],
      "privacy_protected": true
    },
    "previous_snapshot": {
      "registrar": "string",
      "expiry_date": "2026-04-15T12:00:00Z",
      "nameservers": [
        "string"
      ],
      "status": [
        "string"
      ],
      "privacy_protected": true
    }
  }
}