API de crt.sh — qué funciona, qué no, qué usar en su lugar
¿Buscas la API de crt.sh? No existe — al menos no de forma oficial. Aquí lo que realmente hay, sus límites y una alternativa REST completamente documentada.
crt.sh no tiene API oficial
crt.sh es una sola instancia de PostgreSQL detrás de una interfaz Perl CGI, mantenida por Rob Stradling en Sectigo como bien público. No hay especificación de API publicada, ni SDK, ni documentación de límites de tasa, ni SLA. Lo más cercano a acceso programático es añadir ?output=json a la URL de búsqueda:
$ curl 'https://crt.sh/?q=example.com&output=json'
[{"issuer_ca_id": 16418, "issuer_name": "CN=Let's Encrypt R3, O=...", "common_name": "example.com", "name_value": "example.com\nwww.example.com", "id": 6735345729, ...}, ...]Esto no está soportado, no está documentado y tiene límite de tasa de aproximadamente 5 peticiones por minuto por IP origen. Las queries pesadas devuelven resultados vacíos o errores 502 antes de hacer timeout. El esquema puede cambiar sin aviso.
Soluciones comunes a la falta de API
La comunidad ha creado una larga lista de wrappers no oficiales de crt.sh API — Python (PaulSec/crt.sh, pycrtsh), Go (knqyf263/crtsh), un plugin Steampipe, un crate Rust y decenas de scrapers puntuales. Todos chocan con los mismos límites upstream y se rompen cuando cambia el HTML de crt.sh. Ninguno resuelve el límite de tasa, los timeouts ni la falta de contrato estable.
Algunos equipos mantienen una réplica PostgreSQL del corpus de CT logs para evitar el crt.sh público por completo. Funciona, pero cuesta cientos de GB de almacenamiento, semanas de sync inicial y mantenimiento continuo de replicación.
API de CT Radar — alternativa REST documentada y estable
CT Radar expone los mismos datos de Certificate Transparency — indexados en 19 CT logs activos — mediante un endpoint REST documentado y autenticado por API key. El plan gratuito cubre 100 búsquedas al día; Pro y Enterprise elevan las cuotas. Salida JSON por defecto y NDJSON vía CLI para pipelines de streaming.
curl
$ curl -s -H "X-API-Key: $KEY" \
"https://cert.imfht.com/api/search?q=example.com" \
| jq '.results[].domain'Go CLI
$ go install github.com/imfht/ct-radar@latest $ export CT_RADAR_KEY=... $ ct-radar example.com | httpx -silent | nuclei -t exposures/
Python
$ pip install ct-radar $ ct-radar example.com --json | jq '.results[].domain'
Forma de la respuesta
{
"query": "example.com",
"count": 23,
"total": 487,
"truncated": false,
"results": [
{
"id": 287345672094,
"domain": "api.example.com",
"issuer": "Let's Encrypt R3",
"fingerprint": "ab12cd34...",
"valid_from": "2026-01-15T00:00:00Z",
"valid_to": "2026-04-15T23:59:59Z"
}
]
}Consigue una API key
Inicia sesión con GitHub. Plan gratuito activo al instante, sin tarjeta de crédito.
Conseguir API key →