Referencia para Desarrolladores

Buscador de subdominios Documentación API

Buscador de subdominios Documentación API: Descubre subdominios mediante registros de Certificate Transparency (CT). Usa prefer_cache=1 para consultar resultados en caché: los fallos en frío devuelven HTTP 202, ponen en cola una actualización en segundo plano y no consumen créditos.

Buscador de subdominios

Descubre subdominios mediante registros de Certificate Transparency (CT). Usa prefer_cache=1 para consultar resultados en caché: los fallos en frío devuelven HTTP 202, ponen en cola una actualización en segundo plano y no consumen créditos.

GET /v1/subdomains

Parámetros de consulta

ParámetroTipoDescripción
domain obligatorio string Dominio raíz para encontrar subdominios (p. ej., "github.com")
prefer_cache opcional boolean Sirve solo resultados en caché. Si no existe caché fresca ni antigua, la API devuelve 202, pone en cola una actualización en segundo plano y cobra 0 créditos.
sources opcional string Fuentes de datos separadas por comas. Actualmente solo se acepta ct (Certificate Transparency).
verify opcional boolean Verificar que cada subdominio resuelve mediante DNS (más lento pero más preciso). Predeterminado: false
limit opcional number Máximo de subdominios a devolver. Predeterminado: 500, Máximo: 2.000

Casos de uso

  • Mapeo de superficie de ataque y auditorías de seguridad
  • Descubrir subdominios olvidados o TI en la sombra
  • Diligencia debida técnica pre-adquisición
  • Análisis competitivo de infraestructura
  • Reconocimiento para bug bounty

Campos de respuesta

CampoDescripción
subdomains[].nameEl nombre de host del subdominio descubierto
subdomains[].sourceFuente de datos (p. ej., "ct")
subdomains[].first_seenCuándo se observó este subdominio por primera vez
subdomains[].verifiedSi se confirmó la resolución DNS (si verify=true)
subdomains[].dns_recordsRegistros DNS encontrados (si verify=true)
summary.total_foundTotal de subdominios descubiertos antes del límite
summary.verified_countNúmero de subdominios verificados (activos)

Códigos de estado HTTP

Códigos de estado HTTPDescripción
200 OKSolicitud correcta
202 AceptadoFallo de caché de subdominios en modo solo caché aceptado para actualización en segundo plano. No se cobran créditos; reintenta tras el intervalo Retry-After.
400 Solicitud incorrectaParámetros no válidos
402 Pago requeridoNo tienes créditos suficientes para ejecutar esta solicitud.
503 Servicio no disponibleEl servicio ascendente no está disponible o está limitando temporalmente.
504 Tiempo de espera agotado del gatewayLa consulta ascendente agotó el tiempo de espera.

Solicitud de ejemplo

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

Respuesta de ejemplo

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

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

Utilizado por personas en empresas increíbles.

VercelLLM PulseOLXCasa ModernaPipeCal.comBeehiivSnykTogglRemoteSprigDeel