開発者向けリファレンス

サブドメイン ファインダー APIドキュメント

サブドメイン ファインダー APIドキュメント: Certificate Transparency (CT) ログを使ってサブドメインを検出します。prefer_cache=1 を使うとキャッシュ結果をポーリングできます。コールドミスでは HTTP 202 を返し、バックグラウンド更新をキューに入れ、クレジットは消費しません。

サブドメイン ファインダー

Certificate Transparency (CT) ログを使ってサブドメインを検出します。prefer_cache=1 を使うとキャッシュ結果をポーリングできます。コールドミスでは HTTP 202 を返し、バックグラウンド更新をキューに入れ、クレジットは消費しません。

GET /v1/subdomains

クエリパラメータ

パラメータタイプ説明
domain 必須 string サブドメインを検出するルート ドメイン(例:"github.com")
prefer_cache オプション boolean キャッシュ済みの結果だけを返します。新しいキャッシュも古いキャッシュもない場合、API は 202 を返し、バックグラウンド更新をキューに入れ、課金は 0 クレジットです。
sources オプション string カンマ区切りのデータソース。現在は ct (Certificate Transparency) のみ受け付けます。
verify オプション boolean DNS 経由で各サブドメインが解決することを確認(遅いがより正確)。デフォルト: false
limit オプション number 返すサブドメインの最大数。デフォルト: 500、最大: 2000

ユースケース

  • 攻撃面マッピングとセキュリティ監査
  • 忘れられた、またはシャドー IT サブドメインを検出
  • 買収前の技術デューディリジェンス
  • インフラストラクチャの競合分析
  • バグ報奨金調査

レスポンスフィールド

フィールド説明
subdomains[].name検出されたサブドメイン ホスト名
subdomains[].sourceデータソース(例:"ct")
subdomains[].first_seenこのサブドメインが最初に観察された場合
subdomains[].verifiedDNS 解決が確認されたかどうか(verify=true の場合)
subdomains[].dns_records見つかった DNS レコード(verify=true の場合)
summary.total_found制限前に検出されたサブドメインの総数
summary.verified_count検証済み(ライブ)サブドメインの数

HTTP ステータスコード

HTTP ステータスコード説明
200 成功リクエスト成功
202 受理済みキャッシュ専用のサブドメイン要求でキャッシュ未命中となり、バックグラウンド更新を受理しました。クレジットは消費されません。Retry-After の時間後に再試行してください。
400 不正なリクエスト無効なパラメータ
402 支払いが必要このリクエストを実行するためのクレジットが不足しています。
503 サービス利用不可上流サービスが利用できないか、一時的にレート制限しています。
504 ゲートウェイタイムアウト上流の問い合わせがタイムアウトしました。

リクエスト例

# Find subdomains (fast, from CT logs)
curl "https://domscan.net/v1/subdomains?domain=github.com&limit=100"

# Find and verify subdomains (slower, confirms DNS resolution)
curl "https://domscan.net/v1/subdomains?domain=github.com&verify=true&limit=50"

curl "https://domscan.net/v1/subdomains?domain=github.com&prefer_cache=1"
import requests

# Enumerate subdomains with verification
response = requests.get(
    "https://domscan.net/v1/subdomains",
    params={
        "domain": "github.com",
        "verify": "true",
        "limit": 100
    }
)
data = response.json()

print(f"Found {data['summary']['total_found']} subdomains")
print(f"Verified: {data['summary']['verified_count']}")

# Filter to only live subdomains
live_subs = [s for s in data['subdomains'] if s['verified']]
for sub in live_subs[:10]:
    print(f"  {sub['name']}")
const response = await fetch(
  'https://domscan.net/v1/subdomains?' + new URLSearchParams({
    domain: 'github.com',
    verify: 'true',
    limit: '100'
  })
);
const data = await response.json();

console.log(`Found ${data.summary.total_found} subdomains`);
console.log(`Verified: ${data.summary.verified_count}`);

// List verified subdomains
data.subdomains
  .filter(s => s.verified)
  .forEach(s => console.log(`  ${s.name}`));

レスポンス例

{
  "domain": "github.com",
  "subdomains": [
    {
      "name": "api.github.com",
      "source": "ct",
      "first_seen": "2024-01-15T00:00:00Z",
      "verified": true,
      "dns_records": ["A 140.82.112.5"]
    },
    {
      "name": "gist.github.com",
      "source": "ct",
      "first_seen": "2024-02-01T00:00:00Z",
      "verified": true,
      "dns_records": ["CNAME github.github.io"]
    },
    {
      "name": "education.github.com",
      "source": "ct",
      "first_seen": "2023-06-10T00:00:00Z",
      "verified": true,
      "dns_records": ["A 185.199.108.153"]
    }
  ],
  "summary": {
    "total_found": 847,
    "returned": 3,
    "verified_count": 3,
    "unverified_count": 0,
    "sources_used": ["ct"]
  },
  "meta": {
    "query_time_ms": 1250,
    "cached": false
  }
}

202 受理済み

{
  "status": "pending",
  "code": "CACHE_MISS_REFRESH_QUEUED",
  "message": "Try again in a moment",
  "domain": "github.com",
  "retry_after": 30,
  "credits_charged": 0,
  "billing_status": "not_charged",
  "request_id": "m8abc12-x9y8"
}

素晴らしい企業の人々に使用されています

VercelLLM PulseOLXCasa ModernaPipeCal.comBeehiivSnykTogglRemoteSprigDeel