Ontwikkelaarsreferentie

Subdomeinfinder

Bekijk de API-documentatie voor Subdomeinfinder, aanvraagparameters, responsvelden, codevoorbeelden en foutafhandeling voor DomScan-integraties.

Subdomeinfinder

Geeft een best-effortverzameling van openbare aanwijzingen voor hostnamen terug. De parameter sources=ct selecteert de compatibiliteitspipeline, die eerst crt.sh bevraagt en kan uitwijken naar HackerTarget, ThreatMiner, de Wayback Machine en CertSpotter. DomScan raadt geen namen met brute force en crawlt de doelsite niet. Het resultaat is daarom geen volledige inventaris. Cache-only missers geven HTTP 202 terug en uitval van alle bronnen geeft HTTP 503 terug. Bij beide antwoorden worden de credits terugbetaald.

GET /v1/subdomains

Queryparameters

ParameterTypeBeschrijving
domain vereist string Rootdomein om subdomeinen voor te vinden (bijv. "github.com")
prefer_cache optioneel boolean token Levert alleen gecachte resultaten. Als er geen verse of oude cache bestaat, geeft de API 202 terug, zet een achtergrondvernieuwing in de wachtrij en betaalt de credits van de aanvraag terug. Geaccepteerde waarden: true, false, 1, 0, yes en no. Standaard: false.
sources optioneel string Compatibiliteitsselector. Alleen ct wordt geaccepteerd. Deze waarde start de passieve ontdekkingspipeline, maar elk resultaat vermeldt de aanbieder van de aanwijzing: crtsh, hackertarget, threatminer, wayback of certspotter. Oudere cachevermeldingen kunnen ct melden.
verify optioneel boolean token Controleert via DNS alleen de namen die al voor het antwoord zijn geselecteerd. Verificatie ontdekt geen extra namen. Geaccepteerde waarden: true, false, 1, 0, yes en no. Standaard: false.
include_wildcards optioneel boolean token Geeft aanwijzingen uit wildcardcertificaten terug in een afzonderlijke wildcards-array. Wildcards worden niet met concrete hostnaamresultaten gemengd. Geaccepteerde waarden: true, false, 1, 0, yes en no. Standaard: false.
limit optioneel integer Maximaal aantal concrete hostnaamvermeldingen om terug te geven. Voer een geheel getal van 1 tot en met 2000 in. Standaard: 500.

Gebruikssituaties

  • Attack surface mapping en beveiligingsaudits
  • Mogelijk vergeten hostnamen of hostnamen van schaduw-IT beoordelen
  • Technische due diligence vóór aankoop
  • Concurrentieanalyse van infrastructuur
  • Bug bounty verkenning

Antwoordvelden

VeldBeschrijving
subdomains[].nameTeruggegeven hostnaam. Het hoofddomein kan verschijnen als een bron dit opneemt.
subdomains[].sourceAanbieder van de aanwijzing. Mogelijke waarden zijn crtsh, hackertarget, threatminer, wayback, certspotter en ct voor oudere cachevermeldingen.
subdomains[].first_seenVoor aanwijzingen van crt.sh en CertSpotter de vroegste geldige not-before-waarde van een certificaat die voor de hostnaam is gevonden. Passieve uitwijkbronnen geven null terug omdat ze geen vergelijkbaar certificaattijdstip leveren.
subdomains[].verifiedtrue alleen wanneer verify is ingeschakeld en de DNS-query voor de teruggegeven hostnaam een A- of CNAME-record vindt. Anders false.
subdomains[].dns_recordsA- of CNAME-records uit de optionele verificatie van de teruggegeven hostnaam, of null. Dit veld voegt geen namen aan het resultaat toe.
summary.total_foundTotaal aantal concrete hostnaamvermeldingen dat vóór de antwoordlimiet is gevonden, inclusief het hoofddomein als een bron dit opneemt.
summary.verified_countAantal teruggegeven hostnamen waarvoor de optionele DNS-verificatie een A- of CNAME-record vond.

HTTP-statuscodes

HTTP-statuscodesBeschrijving
200 OKAanvraag geslaagd
202 GeaccepteerdCache-only subdomeinmisser geaccepteerd voor vernieuwing op de achtergrond. Er worden geen credits gerekend; probeer opnieuw na de Retry-After-vertraging.
400 Ongeldig verzoekOngeldige parameters
402 Betaling vereistNiet genoeg credits om deze aanvraag uit te voeren.
503 Service niet beschikbaarDe upstreamservice is niet beschikbaar of beperkt tijdelijk aanvragen.
504 Gateway-time-outDe upstream-aanvraag heeft de tijdslimiet overschreden.

Voorbeeldverzoek

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

Voorbeeldantwoord

{
  "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 Geaccepteerd

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

Lichaamsparameters

Parameter Type vereist
domains string[] vereist
verify boolean optioneel
include_wildcards boolean optioneel
limit integer optioneel

Antwoordvelden

Veld Type
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

Voorbeeldverzoek

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
}'

Voorbeeldantwoord

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