Activar datos reales

RUNT y SIMIT no tienen API pública — sus portales tienen reCAPTCHA. Para tener datos reales tienes tres caminos posibles. Aquí están con sus tradeoffs reales.

Estado actual de las fuentes

  • Pico y placaReal

    Reglas vigentes 2026 hardcodeadas para 6 ciudades. No requiere API.

  • RUNT (vehículo · SOAT · RTM · antecedentes)Demo

    Requiere API comercial (ver abajo) o scraper + anti-captcha.

  • SIMIT (multas)Demo

    Mismo problema: reCAPTCHA en fcm.org.co/simit.

  • FASECOLDADemo

    Web pública sin captcha — se puede scrapear, pero requiere marca+línea+año (que vendría del RUNT).

  • Impuesto vehicular departamentalDemo

    Portales sin captcha (Bogotá, Antioquia). Scrapeables con Playwright.

A

APIs comerciales

Recomendado · 10 minutos para activar

Verifik

Recomendado

Planes mensuales (consultar)

Registrarse
RUNTSIMITMás servicios

El más completo. API REST clara, documentación en inglés y español.

.envVERIFIK_API_KEY=tu_clave_aquí

Apitude

Pay-per-call

Registrarse
RUNTSIMIT

Buena alternativa. Endpoints REST simples.

.envAPITUDE_API_KEY=tu_clave_aquí

PlacaAPI

~74 COP/consulta · 10 gratis al registrarte

Registrarse
RUNT

SOAP/ASMX. Más barato pero solo RUNT.

.envPLACA_API_KEY=tu_clave_aquí

Pasos: Regístrate en un proveedor → obtén tu API key → edítala en .env → pon DATA_MODE=live → reinicia el dev server. Los adapters en lib/sources/runt.ts y lib/sources/simit.ts ya tienen el shape esperado.

B

Scraper propio con anti-captcha

Más barato a la larga · más frágil

Montar Playwright headless que navegue runt.gov.co + fcm.org.co/simit y resuelva el reCAPTCHA con un servicio como 2Captcha o AntiCaptcha (~$0.003 USD por resolución).

Tradeoff: cuando los portales cambien su HTML rompe todo — mantenimiento constante. Posiblemente viola los ToS del RUNT/FCM.

C

Híbrido: solo fuentes sin captcha

Sin pagar nada · cobertura parcial

Pico y placa (ya está real)

Scraper FASECOLDA por web (sin captcha, requiere marca+línea+año desde otra fuente)

Scraper Impuesto Bogotá / Antioquia con Playwright (sin captcha, solo navegación)

Sigues sin datos del RUNT ni SIMIT

¿Cómo cablear un adapter real?

Cada fuente vive en lib/sources/*.ts. Por ejemplo en runt.ts reemplaza el cuerpo de fetchVerifik:

async function fetchVerifik(input) {
  const key = process.env.VERIFIK_API_KEY;
  if (!key) return null;
  const res = await fetch("https://api.verifik.co/v2/cf/runt-vehicle", {
    method: "POST",
    headers: { Authorization: `Bearer ${key}`, "Content-Type": "application/json" },
    body: JSON.stringify({ documentNumber: input.docNumber, plate: input.placa }),
  });
  if (!res.ok) return null;
  const json = await res.json();
  return mapVerifikToProviderResponse(json);
}