API de pérdida total por placa: historial de siniestros de un vehículo
PlacApi devuelve en un JSON el historial de reclamaciones que las aseguradoras reportaron sobre un vehículo desde 2008, con la fecha y el amparo de cada una, y una severidad que separa lo que de verdad importa: una pérdida de mayor cuantía —el vehículo indemnizado completo, que es la pérdida total— de una de menor cuantía, que es una reparación que la aseguradora pagó. El campo perdidaTotal se levanta SOLO con la primera, así que un carro con reclamaciones menores devuelve perdidaTotal en false con totalSiniestros mayor que cero. Se consulta con la placa sola, sin documento del propietario.
¿No eres desarrollador? Consulta el RUNT por placa aquí sin escribir código.
Qué problema resuelve
El historial de siniestros existe y es público, pero está detrás de un trámite: hay que aceptar términos, registrar un correo, esperar el código de acceso que llega a ese correo, validarlo y recién ahí consultar una placa — y el portal topa alrededor de diez consultas al día por correo y por IP. Eso funciona para quien revisa un carro; no funciona para una compraventa que verifica veinte al día, ni para un marketplace que quiere marcar las publicaciones antes de publicarlas. Este endpoint hace ese trámite completo por debajo y devuelve el historial ya clasificado por severidad, con la placa como único dato de entrada.
Para quién sirve
Compraventas y concesionarios de usados que tasan antes de comprar, marketplaces de vehículos que quieren advertir al comprador antes del contacto, peritos y talleres de latonería que necesitan saber dónde mirar, aseguradoras e intermediarios que revisan el historial antes de expedir una póliza, y financieras que prestan con el vehículo como garantía.
Datos requeridos
- placa — el único dato obligatorio. 5 a 7 caracteres alfanuméricos, con o sin guiones ni espacios. No se pide documento del propietario, así que la consulta se puede hacer sobre un carro que todavía no es tuyo.
- refresh — opcional. Salta el caché y vuelve a consultar la fuente. Con un caché de 180 días es la única forma de forzar una relectura, y conviene usarlo con cuidado: cada relectura gasta un cupo del portal.
Fuentes y cobertura
- Historial de accidentes de vehículos asegurados (siniestroshava.com.co)Registro de reclamaciones reportadas por las compañías de seguros, embebido en el portal de FASECOLDA. Por cada reclamación publica la fecha del siniestro y el amparo bajo el cual se indemnizó. Cobertura desde 2008 y únicamente para vehículos que estuvieron asegurados.
- Clasificación de severidad (derivada, PlacApi)El campo severidad no viene de la fuente: lo derivamos leyendo el texto del amparo. «mayor» cuando indica que se indemnizó el vehículo completo, «menor» cuando indica una reparación, y «desconocida» cuando el amparo no encaja en ninguna de las dos. El amparo original viaja íntegro en la respuesta para que la clasificación sea auditable.
¿Toda reclamación registrada es una pérdida total?
No, y confundirlas es el error caro de este dato. El historial devuelve un amparo por cada reclamación que una aseguradora reportó, y ese texto es lo único que separa la gravedad. «Pérdida Mayor Cuantía» significa que la aseguradora indemnizó el vehículo completo: eso es la pérdida total. «Pérdida Menor Cuantía» significa que pagó una reparación y el carro siguió andando. Misma placa, mismo endpoint, misma tabla; cambia una palabra.
Por eso perdidaTotal no se calcula contando registros, se calcula leyendo la severidad de cada uno. Un vehículo con dos reclamaciones menores devuelve perdidaTotal en false y totalSiniestros en 2. Si el campo se hubiera derivado del conteo, ese carro saldría marcado como pérdida total en la pantalla del comprador y la venta se caería por un dato que no dice eso.
Hay un tercer valor y es deliberado: «desconocida». Cuando el amparo no encaja en ninguna de las dos categorías, el registro se devuelve igual —con su fecha y su texto original— pero no levanta la bandera. Pintar de rojo un carro por un amparo que la fuente estrenó esta semana cuesta una venta que no había por qué perder; dejar el texto crudo en la respuesta permite que quien sepa leerlo decida. Si te llega una severidad desconocida, míralo como «hay algo aquí, léelo», no como «no pasó nada».
Ese matiz es exactamente lo que busca un perito y lo que casi ningún informe de usados entrega: la diferencia entre un vehículo reconstruido tras una indemnización total y uno que pasó por el taller con la aseguradora pagando el bómper.
¿Qué NO puedes concluir de un perdidaTotal en false?
La cobertura de esta fuente es parcial y lo decimos en la página del producto, no en la letra pequeña. El historial solo tiene vehículos que estuvieron asegurados, y solo desde 2008. Un carro que nunca tuvo póliza no tiene nada que reportar. Un choque de 2006 no está. Un golpe que el dueño pagó de su bolsillo para no perder el descuento por no reclamación, tampoco.
Traducido a lo que un integrador debe pintar en pantalla: perdidaTotal en true es un HECHO —una aseguradora indemnizó ese vehículo completo y lo reportó—, y perdidaTotal en false es una AUSENCIA DE REGISTRO. Redactar el segundo como «este vehículo nunca fue pérdida total» es la clase de afirmación que termina en una devolución y en un cliente que no vuelve. La redacción honesta es «no figura en el historial de asegurados».
Para que eso no dependa de que alguien haya leído esta página, la respuesta trae un campo cobertura con la advertencia en texto, listo para mostrarse al lado del resultado. Está pensado para copiarse tal cual en la interfaz.
Tampoco viene el valor indemnizado ni el nombre de la aseguradora: la fuente no los publica y no los inferimos. Lo que llega es fecha, amparo y severidad, y eso es todo lo que se puede afirmar.
¿Por qué esta consulta cuesta 2 créditos y las demás 1?
Porque la fuente no es un formulario público que se rellena y ya. Cada consulta arranca aceptando términos, registrando un correo, esperando el código de acceso que llega a ese correo, validándolo y recién entonces preguntando por la placa. Ese ida y vuelta tarda entre 30 y 60 segundos y no se puede saltar. Encima el portal topa alrededor de diez consultas por día por correo y por IP, así que cada consulta empieza con un correo nuevo para no chocar contra ese tope. Es el scrape más caro del catálogo vehicular y el precio lo refleja en vez de esconderlo en el margen.
A cambio, el caché con datos dura 180 días, el TTL más largo de toda la API. La razón es que este historial es inmutable hacia atrás: una reclamación de 2019 va a seguir siendo de 2019 el mes que viene. Consultar la misma placa dos veces en el mismo semestre sale del caché y no cobra nada.
Cuando la fuente falla —el portal caído, el cupo diario agotado, el código de acceso que no llegó—, la respuesta vuelve con status unknown, data en null y los 2 créditos reservados se devuelven. Ese fallo se cachea solo 30 minutos, no 180 días: es un amortiguador para no re-golpear un portal que ya está sufriendo, no una forma de esconder por medio año una fuente que se recuperó en diez minutos.
¿Dónde encaja esta llamada en un flujo de compraventa de usados?
Va primero, y la razón es el dato de entrada. Este es de los pocos endpoints del catálogo vehicular que NO pide el documento del propietario: le basta la placa. En una compraventa eso cambia el orden de todo, porque la placa la tienes desde el aviso o desde la llamada, y la cédula del dueño aparece mucho después, cuando ya invertiste una visita.
Antes de pedir un solo papel
POST /api/perdida-total con la placa sola. Si vuelve con una severidad mayor, la conversación cambia de «cuánto vale» a «cuánto le rebajo o me retiro», y eso pasó sin haberle pedido nada al vendedor. Un marketplace puede correrlo en el momento de publicar y marcar el aviso; una compraventa, mientras el carro está estacionado afuera.
Cuando el resultado sale con registros
El siguiente llamado natural es el avalúo, POST /api/avaluo, para tener el valor de referencia contra el que se negocia. Un vehículo con una indemnización total encima se castiga en la reventa, y el número que sustenta esa rebaja no lo pone el comprador: lo pone la tabla de valores de su marca, línea y modelo.
Y si la severidad fue «menor», el uso correcto no es descartar el carro, es apuntar la fecha: hubo una reparación indemnizada en esa fecha, y la revisión de latonería y chasis se hace sabiendo dónde mirar en vez de a ciegas.
Cuando ya hay documentos sobre la mesa
Ahí entran los endpoints que sí exigen el documento del propietario: la ficha del RUNT, el semáforo de traspaso y las prendas y embargos. El historial de siniestros dice qué le pasó al carro; esos dicen si te lo puedes llevar. Son preguntas distintas y ninguna reemplaza a la otra.
¿Cómo saber por API si un carro fue declarado pérdida total?
Con una llamada POST a /api/perdida-total enviando solo la placa. La respuesta trae perdidaTotal en true o false, el total de reclamaciones y el detalle de cada una con su fecha, su amparo y su severidad. El true aparece únicamente cuando hay al menos una reclamación de mayor cuantía, es decir, cuando una aseguradora indemnizó el vehículo completo.
¿La consulta de pérdida total necesita la cédula del propietario?
No. Es de los pocos endpoints del catálogo vehicular que se resuelve con la placa sola, y en compraventa esa diferencia es todo: puedes revisar un carro que te están ofreciendo antes de pedir un solo documento. Los endpoints que sí exigen documento del propietario son los que leen el registro automotor, como la ficha del RUNT o el semáforo de traspaso.
Ejemplo de solicitud
POST https://placapi.com/api/perdida-total. Autenticación por API key en el header x-api-key. Los datos del ejemplo son ficticios.
curl -X POST 'https://placapi.com/api/perdida-total' \
-H 'x-api-key: pk_live_TU_CLAVE' \
-H 'content-type: application/json' \
-d '{"placa":"ABC123"}'Ejemplo de respuesta
Respuesta JSON (fragmento con los campos de esta consulta; la API integral devuelve todas las fuentes en el mismo objeto).
{
"source": "siniestros",
"status": "danger",
"data": {
"placa": "ABC123",
"perdidaTotal": true,
"totalSiniestros": 2,
"siniestros": [
{
"fecha": "2022-09-13",
"amparo": "Pérdida Mayor Cuantía",
"severidad": "mayor"
},
{
"fecha": "2015-01-20",
"amparo": "Pérdida Menor Cuantía",
"severidad": "menor"
}
],
"fuente": "Reclamaciones reportadas por aseguradoras",
"cobertura": "Solo vehículos que estuvieron asegurados; reclamaciones reportadas por las aseguradoras desde 2008."
},
"mode": "live",
"fetchedAt": "2026-08-20T14:32:10.000Z"
}Explicación campo por campo
| Campo | Tipo | Descripción |
|---|---|---|
| perdidaTotal | boolean | true SOLO si hay al menos una reclamación de severidad mayor. No se deriva del conteo: un vehículo con reclamaciones menores devuelve false con totalSiniestros mayor que cero. |
| totalSiniestros | number | Cuántas reclamaciones reporta la fuente para esa placa. Sirve de contexto incluso cuando perdidaTotal es false: tres reparaciones indemnizadas dicen algo sobre el uso del vehículo. |
| siniestros[].fecha | string | Fecha del siniestro en formato ISO (aaaa-mm-dd). Es la fecha que se le pasa al perito para saber en qué parte del carro mirar. |
| siniestros[].amparo | string | Texto original del amparo tal como lo publica la fuente, por ejemplo «Pérdida Mayor Cuantía». Viaja íntegro para que la clasificación de severidad sea auditable y no haya que creerle a la API. |
| siniestros[].severidad | string | mayor (el vehículo se indemnizó completo), menor (una reparación indemnizada) o desconocida (amparo que no encaja en ninguna). Solo mayor levanta perdidaTotal. |
| cobertura | string | Advertencia de alcance en texto, lista para mostrarse junto al resultado: solo vehículos que estuvieron asegurados y solo desde 2008. Está en la respuesta para que la limitación llegue a la pantalla del usuario final, no solo a la documentación. |
| fuente | string | Describe el conjunto de datos —reclamaciones reportadas por aseguradoras—, no la entidad que lo publica. El alcance real viaja aparte, en cobertura. |
| status | string | danger con pérdida total, warn cuando hay reclamaciones pero ninguna mayor, ok sin registros. Es el semáforo listo para pintar sin releer los campos. |
Tiempo de respuesta
Entre 30 y 60 segundos en vivo, y el cuello de botella no es nuestro: es el ida y vuelta del código de acceso que la fuente manda por correo antes de dejar consultar. El tope duro son 150 segundos. Desde caché la respuesta es inmediata, y con un TTL de 180 días la mayoría de las consultas repetidas salen de ahí.
Precio y cobro
1 crédito por consulta con datos, desde 349 COP. El precio por crédito baja por volumen: 349 COP desde 30, 249 COP desde 1.000, 149 COP desde 5.000, 139 COP desde 10.000, 119 COP desde 20.000, 99 COP desde 50.000. Los créditos se compran por adelantado (mínimo 30 = 10.470 COP), no vencen y no hay mensualidad. El mismo precio aplica por la web y por API. Solo se cobra cuando la consulta devuelve datos; por API, las consultas sin resultado (404) tienen 10 gratis al mes por cada tipo de respuesta sin datos y después cobran igual.
Caché y actualización
180 días cuando hay respuesta con datos, el TTL más largo de la API: el historial es inmutable hacia atrás y una reclamación de hace tres años va a seguir teniendo la misma fecha el mes que viene. Cuando la consulta falla se cachea solo 30 minutos, para no re-golpear un portal caído ni agotar su cupo diario. Un hit de caché no cobra créditos; refresh en true salta el caché y sí consume una consulta del cupo.
Seguridad y privacidad
La placa y el documento se usan solo para ejecutar la consulta; el resultado queda en caché temporal. No se almacenan datos de tarjetas (los pagos los procesa Wompi). Ver privacidad y seguridad.
Limitaciones y posibles errores
- Cobertura parcial por diseño de la fuente: solo vehículos que estuvieron asegurados y solo desde 2008. Un perdidaTotal en false significa «no figura», nunca «nunca chocó».
- No viene el valor indemnizado ni el nombre de la aseguradora. La fuente no los publica y no se infieren.
- La severidad la derivamos del texto del amparo. Un amparo nuevo o poco común sale como «desconocida» y no levanta perdidaTotal: preferimos no afirmar una pérdida total que no consta, y por eso el amparo original viaja en la respuesta.
- El portal topa alrededor de diez consultas al día por correo y por IP. Un barrido masivo de placas no es el caso de uso de este endpoint; para volumen alto conviene escalonarlo y apoyarse en el caché de 180 días.
- Es la consulta más lenta del catálogo (30-60 s). Si la llamas dentro de una petición HTTP de tu propia aplicación, hazlo en segundo plano: no la pongas en el camino de un formulario que un usuario está esperando.
- Cuando la fuente falla, la respuesta llega con status unknown y data en null, los 2 créditos se devuelven y ese fallo se cachea 30 minutos.
Códigos de error del endpoint (401, 402, 429, 5xx) en la referencia de errores.
Otras preguntas frecuentes
¿Desde cuándo hay registro de siniestros?
+
Desde 2008, y únicamente de vehículos que estuvieron asegurados. Un siniestro anterior a esa fecha no aparece, y un vehículo que nunca tuvo póliza no tiene nada que reportar. Es una razón más para no leer una respuesta en blanco como un certificado de buen estado.
¿Qué significa severidad desconocida?
+
Que la fuente devolvió un amparo que no clasificamos como mayor ni como menor. El registro se entrega igual, con su fecha y su texto original, pero no levanta perdidaTotal. Es a propósito: afirmar una pérdida total que no consta es peor error que devolver un dato que pide lectura humana. Cuando veas una severidad desconocida, lee el campo amparo.
¿Cuánto cuesta y cuánto tarda la consulta?
+
Cuesta 2 créditos, el doble que la mayoría del catálogo, porque la fuente exige un registro con código por correo en cada consulta y topa alrededor de diez al día por correo e IP. Tarda entre 30 y 60 segundos en vivo por ese mismo ida y vuelta. Un hit de caché no cobra, y si la fuente falla los 2 créditos se devuelven.
¿El RUNT dice si un carro fue pérdida total?
+
No con ese nombre. El RUNT guarda la ficha del vehículo, su SOAT, su tecnomecánica, sus gravámenes y sus limitaciones a la propiedad. El historial de reclamaciones lo reportan las aseguradoras a un registro distinto, y es el que consulta este endpoint. Son fuentes separadas y responden preguntas separadas: qué le pasó al carro, contra si te lo puedes llevar.
¿Hay una versión de esto para quien no programa?
+
Sí. La guía /saber-si-un-carro-fue-perdida-total explica lo mismo sin API de por medio: qué significa que un vehículo sea pérdida total, cómo leer un resultado en blanco y qué hacer si la placa aparece en el registro. La API es para meter esa verificación dentro de tu propio flujo.
Seguir explorando
Última revisión: 20 de agosto de 2026 · Versión de la API: v1 · Fuentes y metodología