▸ Referencia API
# api json de solo lectura · paginación por cursor · clave gratis desde el panel
openapi.json
realtime.md
▸ Stream en tiempo real (WebSocket)
Cada dominio recién indexado - desde CT logs y archivos de zona - se transmite como un frame JSON sobre un único WebSocket. No requiere clave API.
endpoint
wss://dnsniffer.com/ws
filtros de query-string (opcional)
# solo .com wss://dnsniffer.com/ws?tld=com # solo dominios que contengan "acme" (3–64 caracteres, sin distinción de mayúsculas) wss://dnsniffer.com/ws?q=acme # ambos wss://dnsniffer.com/ws?tld=com&q=acme
frames
// al conectar (una vez) { "type": "hello", "server": "dnsniffer-ws/1", "filters": { ... }, "heartbeat_ms": 30000 } // por cada nuevo dominio { "type": "domain", "id": "1234567890", "name": "foo.com", "tld": "com", "created_at": "2026-05-16T16:00:00Z" }
ejemplo javascript
const ws = new WebSocket('wss://dnsniffer.com/ws?tld=com');
ws.onmessage = (e) => {
const m = JSON.parse(e.data);
if (m.type === 'domain') console.log(m.name);
};ejemplo node
import WebSocket from 'ws';
const ws = new WebSocket('wss://dnsniffer.com/ws?q=acme');
ws.on('message', (data) => {
const m = JSON.parse(data.toString());
if (m.type === 'domain') console.log(m.name);
});- ▸ el servidor hace ping cada 30s; los clientes que pierdan un pong se desconectan
- ▸ límite de tasa por cliente: 200 mensajes/seg (protección de ráfaga durante ingest masivo)
- ▸ reconectar simplemente reabriendo el socket - sin handshake de auth
- ▸ ver /new para una demo en vivo y alternativas CSV masivas