Entwickler-Referenz

Subdomain-Finder

DomScan-API: Nein. Dies ist passive Best-Effort-Abdeckung. Interne Namen und öffentliche Hosts, die in den Quelldatensätzen fehlen, erscheinen nicht. Die DNS-Verifizierung sucht nicht nach zusätzlichen Namen.

Subdomain-Finder

Nein. Dies ist passive Best-Effort-Abdeckung. Interne Namen und öffentliche Hosts, die in den Quelldatensätzen fehlen, erscheinen nicht. Die DNS-Verifizierung sucht nicht nach zusätzlichen Namen.

Verwenden Sie GET /v1/subdomains?domain=example.com&sources=ct. Der Wert ct wählt die Kompatibilitätspipeline, jeder Eintrag meldet jedoch seine tatsächliche Hinweisquelle. Cache-only-Fehltreffer geben 202 zurück, Ausfälle aller Quellen 503. Beide Antworten erstatten die Credits.

GET /v1/subdomains

Abfrageparameter

ParameterTypBeschreibung
domain erforderlich string Root-Domain zur Suche nach Subdomains (z. B. "github.com")
prefer_cache optional boolean token Nur gecachte Ergebnisse ausliefern. Wenn kein frischer oder veralteter Cache vorhanden ist, gibt die API 202 zurück, startet eine Hintergrundaktualisierung und erstattet die Credits der Anfrage. Zulässige Werte: true, false, 1, 0, yes und no. Standard: false.
sources optional string Kompatibilitätsauswahl. Nur ct wird akzeptiert. Dieser Wert startet die passive Entdeckungspipeline, aber jedes Ergebnis nennt den Anbieter des Hinweises: crtsh, crtname, hackertarget, threatminer, wayback oder certspotter. Ältere Cache-Einträge können ct melden.
verify optional boolean token Prüft per DNS nur die Namen, die bereits für die Antwort ausgewählt wurden. Die Verifizierung entdeckt keine weiteren Namen. Zulässige Werte: true, false, 1, 0, yes und no. Standard: false.
include_wildcards optional boolean token Gibt Hinweise aus Wildcard-Zertifikaten in einem separaten wildcards-Array zurück. Wildcards werden nicht mit konkreten Hostnamenergebnissen vermischt. Zulässige Werte: true, false, 1, 0, yes und no. Standard: false.
limit optional integer Maximale Anzahl konkreter Hostnameneinträge in der Antwort. Geben Sie eine ganze Zahl von 1 bis 2000 ein. Standard: 500.

Anwendungsfälle

  • Angriffsflächen-Mapping und Sicherheitsprüfungen
  • Mögliche vergessene Hostnamen oder Shadow-IT-Hostnamen prüfen
  • Technische Due-Diligence vor Übernahme
  • Wettbewerbsanalyse der Infrastruktur
  • Bug-Bounty-Aufklärung

Antwort-Felder

FeldBeschreibung
subdomains[].nameZurückgegebener Hostname. Die Apex-Domain kann erscheinen, wenn eine Quelle sie einschließt.
subdomains[].sourceÖffentliche Hostnamenhinweise mit klaren Quellenangaben prüfen
subdomains[].first_seenCT-basierte Einträge melden den frühesten gefundenen not-before-Wert eines Zertifikats. Passive Ausweichquellen können null zurückgeben.
subdomains[].verifiedtrue nur, wenn verify aktiviert ist und die DNS-Abfrage für den zurückgegebenen Hostnamen einen A- oder CNAME-Eintrag findet. Andernfalls false.
subdomains[].dns_recordsA- oder CNAME-Einträge aus der optionalen Verifizierung des zurückgegebenen Hostnamens oder null. Dieses Feld fügt dem Ergebnis keine Namen hinzu.
summary.total_foundGesamtzahl konkreter Hostnameneinträge vor dem Antwortlimit, einschließlich der Apex-Domain, wenn eine Quelle sie einschließt.
summary.verified_countAnzahl der zurückgegebenen Hostnamen, für die bei der optionalen DNS-Verifizierung ein A- oder CNAME-Eintrag gefunden wurde.

HTTP-Statuscodes

HTTP-StatuscodesBeschreibung
200 OKAnfrage erfolgreich
202 AkzeptiertCache-only-Subdomain-Fehltreffer für eine Hintergrundaktualisierung akzeptiert. Es werden keine Credits berechnet; versuche es nach der Retry-After-Wartezeit erneut.
400 Ungültige AnfrageUngültige Parameter
402 Zahlung erforderlichNicht genügend Credits für diese Anfrage.
503 Dienst nicht verfügbarDer Upstream-Dienst ist nicht verfügbar oder drosselt vorübergehend.
504 Gateway-ZeitüberschreitungDie Upstream-Abfrage hat das Zeitlimit überschritten.

Beispielanfrage

curl -H "X-API-Key: your-api-key" "https://domscan.net/v1/subdomains?domain=example.com&sources=ct&include_wildcards=yes&limit=100"

curl -H "X-API-Key: your-api-key" "https://domscan.net/v1/subdomains?domain=example.com&sources=ct&verify=yes&limit=50"

curl -H "X-API-Key: your-api-key" "https://domscan.net/v1/subdomains?domain=example.com&prefer_cache=1"
import requests

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

response = domscan.get(
    "https://domscan.net/v1/subdomains",
    params={
        "domain": "example.com",
        "sources": "ct",
        "verify": "yes",
        "include_wildcards": "yes",
        "limit": 100
    }
)
data = response.json()

print(f"Returned {data['summary']['returned']} hostname entries")
print(f"Verified: {data['summary']['verified_count']}")

live_subs = [s for s in data['subdomains'] if s['verified']]
for sub in live_subs[:10]:
    print(f"  {sub['name']}")
const domscanFetch = (url, options = {}) =>
  fetch(url, {
    ...options,
    headers: { ...options.headers, "X-API-Key": "your-api-key" },
  });

const response = await domscanFetch(
  'https://domscan.net/v1/subdomains?' + new URLSearchParams({
    domain: 'example.com',
    sources: 'ct',
    verify: 'yes',
    include_wildcards: 'yes',
    limit: '100'
  })
);
const data = await response.json();

console.log(`Returned ${data.summary.returned} hostname entries`);
console.log(`Verified: ${data.summary.verified_count}`);

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

Beispielantwort

{
  "domain": "example.com",
  "subdomains": [
    {
      "name": "api.example.com",
      "source": "crtsh",
      "first_seen": "2025-01-15T00:00:00Z",
      "verified": true,
      "dns_records": {
        "A": ["192.0.2.10"],
        "CNAME": null
      }
    }
  ],
  "wildcards": [
    {
      "pattern": "*.example.com",
      "source": "crtsh",
      "first_seen": "2024-11-20T00:00:00Z"
    }
  ],
  "summary": {
    "total_found": 1,
    "returned": 1,
    "verified_count": 1,
    "unverified_count": 0,
    "sources_used": ["crtsh"],
    "apex_included": false,
    "wildcard_suppressed_count": 1,
    "wildcard_returned_count": 1
  },
  "intelligence_summary": {
    "data_sources": ["crtsh"],
    "source_count": 1,
    "cache_status": "live",
    "returned_count": 1,
    "total_found": 1,
    "truncated": false,
    "limit": 100,
    "verification_requested": true,
    "include_wildcards": true,
    "verified_count": 1,
    "verified_ratio": 1,
    "live_dns_record_count": 1,
    "apex_included": false,
    "wildcard_suppressed_count": 1,
    "wildcard_returned_count": 1,
    "first_seen_oldest": "2025-01-15T00:00:00Z",
    "first_seen_newest": "2025-01-15T00:00:00Z",
    "warning_count": 0
  },
  "meta": {
    "query_time_ms": 184,
    "cached": false
  }
}

202 Akzeptiert

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

Body-Parameter

Parameter Typ erforderlich
domains string[] erforderlich
verify boolean
Standard false
optional
include_wildcards boolean
Standard false
optional
limit integer
Standard 500
optional

Antwort-Felder

Feld Typ
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

Beispielanfrage

curl -X POST "https://domscan.net/v1/subdomains/bulk" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $DOMSCAN_API_KEY" \
  -d '{
  "domains": [
    "example.com",
    "cloudflare.com"
  ],
  "verify": false,
  "limit": 500
}'

Beispielantwort

{
  "results": [
    {
      "input": "example",
      "data": {}
    }
  ],
  "meta": {
    "total": 1,
    "succeeded": 1,
    "failed": 1,
    "max_items": 10,
    "credits_per_item": 1,
    "duration_ms": 1
  }
}

Wird von Menschen in großartigen Unternehmen verwendet

InstantOutseerMongoDBRespondentSage Expense ManagementInstantlyD.R. HortonWhatConvertsAdobeMotionElementsLLM Pulse