SOAT por placa en Perú: póliza vigente e historial de pólizas vía API REST

PlacApi (placapi.com) ofrece /api/soat-pe, una API REST que devuelve en JSON el SOAT de un vehículo peruano a partir de su placa, desde el registro central de las aseguradoras: si hay una póliza vigente y hasta qué fecha, qué aseguradora la emitió y el historial completo de pólizas, cada una con estado, vigencia, número de póliza, código SBS de la aseguradora, uso y clase del vehículo y tipo de certificado. Cuesta 1 crédito por consulta, desde 349 COP, con la misma API key y el mismo saldo que el resto del catálogo. No pide el documento del propietario ni devuelve datos del asegurado: basta la placa.

Qué problema resuelve

Un vehículo sin SOAT vigente no puede circular en Perú, y la fecha de vencimiento es justo el dato que una flota, una aseguradora o una plataforma de alquiler necesita tener al día en su sistema, no en una hoja de cálculo. El SOAT lo emiten varias aseguradoras y la consulta pública se hace placa por placa, con captcha, desde un formulario web: no hay un servicio que un backend pueda llamar. Quien administra cien vehículos termina revisándolos uno a uno cada mes o enterándose del vencimiento cuando ya pasó. Este endpoint convierte esa revisión en una llamada REST que se puede programar sobre toda la flota.

Para quién sirve

Operadores de flota, de leasing y de renting con vehículos matriculados en Perú, empresas de transporte de carga y de pasajeros, plataformas de movilidad y de reparto que dan de alta vehículos, corredores y aseguradoras que cotizan la renovación, empresas de rastreo satelital y marketplaces de usados que muestran el estado documental del vehículo.

Datos requeridos

  • placa — la placa peruana del vehículo. Se aceptan guiones: ABC-123 y ABC123 son la misma consulta.
  • refresh — opcional: salta la caché y vuelve a preguntarle al registro. Una consulta refrescada con datos cobra.

Fuentes y cobertura

  • Registro central del SOAT de las aseguradorasEl registro donde las compañías aseguradoras que venden el SOAT en Perú reportan cada póliza: aseguradora, estado, vigencia, número de póliza, código único, código SBS de la compañía, uso y clase del vehículo, marca, modelo, asientos y tipo de certificado (digital o físico). Es el mismo registro que respalda la consulta pública del SOAT.

¿Qué API consulta el SOAT de un vehículo peruano por placa?

PlacApi publica /api/soat-pe, que responde con la placa sola. El campo vigente dice si hay una póliza en estado VIGENTE según el propio registro, vigenteHasta trae la fecha en que esa póliza termina y aseguradoraVigente la compañía que la emitió; certificados es el historial, de la póliza más reciente a la más vieja. Con esos tres campos se arma una alerta de vencimiento sin parsear nada.

El SOAT es una de cuatro consultas por placa del mismo país, cada una con su crédito y todas con la misma API key: la ficha de la SUNARP dice qué vehículo es, la revisión técnica si pasó la inspección y las papeletas qué debe. La lista completa está en /integracion/peru.

Qué responde cada campo principal de /api/soat-pe
CampoQué dicePara qué sirve
vigentetrue si alguna póliza está en estado VIGENTEBloquear la salida de un vehículo sin seguro
vigenteHastaFin de la póliza vigente más reciente (AAAA-MM-DD)Programar el aviso de renovación
aseguradoraVigenteCompañía que emitió la póliza vigenteCotizar la renovación con la misma u otra
certificadosHistorial de pólizas, de la más reciente a la más viejaVer cortes de cobertura y cambios de uso

La vigencia sale del estado que publica el registro, no de comparar fechas

Una póliza puede tener fechas que la harían vigente y estar anulada, o figurar como vigente en un día de cambio de huso horario. Por eso vigente se calcula con el ESTADO que reporta el registro (VIGENTE), no con la fecha del servidor: quien decide qué póliza vale es la aseguradora que la reportó. vigenteHasta sí es una fecha, la del fin de esa póliza, y es la que conviene usar para programar avisos.

status resume el hallazgo para quien solo quiere un semáforo: ok con una póliza vigente, warn si solo hay historial vencido e info si el registro no tiene ninguna póliza para esa placa.

Para qué sirve el historial de pólizas, además de la vigente

El historial cuenta cosas que la póliza vigente no dice. Un vehículo que se registró como PARTICULAR y hoy figura como CARGA/TRANSPORTE cambió de uso; uno con huecos entre pólizas circuló sin seguro o estuvo parado; uno que cambia de aseguradora cada año probablemente se cotiza por precio. Para una compraventa o una suscripción de seguro, esas líneas valen tanto como la fecha de vencimiento.

Cada certificado trae el código SBS de la aseguradora, que es el identificador del regulador y no cambia aunque la compañía cambie de nombre comercial: es la llave correcta para cruzar contra tu propio catálogo de aseguradoras.

¿Cuánto cuesta consultar el SOAT de un vehículo peruano por API?

1 crédito por consulta: 349 COP en el tramo de entrada y hasta 99 COP por volumen, sin mensualidad y con créditos que no vencen. Un hit de caché no cobra. Una placa sin pólizas en el registro sí cobra, porque «este vehículo no tiene SOAT» es el dato que se vino a verificar. Un fallo del registro no cobra: el crédito reservado se devuelve.

¿Cómo saber por API si el SOAT de una placa peruana está vigente?

Con una llamada POST a /api/soat-pe con la placa en el cuerpo y la API key en el header x-api-key. El campo vigente responde true o false según el estado que publica el registro, vigenteHasta trae la fecha de fin de la póliza vigente y aseguradoraVigente la compañía que la emitió.

Ejemplo de solicitud

POST https://placapi.com/api/soat-pe. Autenticación por API key en el header x-api-key. Los datos del ejemplo son ficticios.

Ejemplo cURL de la solicitud
curl -X POST 'https://placapi.com/api/soat-pe' \
  -H 'x-api-key: pk_live_TU_CLAVE' \
  -H 'content-type: application/json' \
  -d '{"placa":"ABC123"}'

Parámetros, errores y ejemplos en cURL, JavaScript y Python: documentación de POST /api/soat-pe.

Ejemplo de respuesta

Respuesta JSON (fragmento con los campos de esta consulta; la API integral devuelve todas las fuentes en el mismo objeto).

Ejemplo de respuesta JSON
{
  "source": "soat",
  "status": "ok",
  "data": {
    "pais": "PE",
    "placa": "ABC123",
    "vigente": true,
    "vigenteHasta": "2027-07-08",
    "aseguradoraVigente": "Protecta",
    "certificados": [
      {
        "aseguradora": "Protecta",
        "estado": "VIGENTE",
        "vigenciaInicio": "2026-07-08",
        "vigenciaFin": "2027-07-08",
        "numeroPoliza": "000000000000070071834570",
        "codigoUnicoPoliza": "2090000000000000700718345701",
        "codigoSbsAseguradora": "209",
        "uso": "CARGA/TRANSPORTE",
        "clase": "CAMION",
        "marca": "HYUNDAI",
        "modelo": "EX 10",
        "asientos": 3,
        "tipoCertificado": "DIGITAL"
      }
    ]
  },
  "mode": "live",
  "fetchedAt": "2026-11-07T15:04:05.000Z"
}

Explicación campo por campo

CampoTipoDescripción
data.vigentebooleantrue si alguna póliza está en estado VIGENTE según el registro. Sale del estado, no de comparar fechas.
data.vigenteHastastring | nullFin de la póliza vigente más reciente (AAAA-MM-DD); null si no hay vigente.
data.aseguradoraVigentestring | nullAseguradora de la póliza vigente; null si no hay.
data.certificadosarrayHistorial de pólizas, de la más reciente a la más vieja. Vacío si el registro no tiene ninguna: es una respuesta válida y cobra.
data.certificados[].estadostringVIGENTE o VENCIDO, tal como lo publica el registro.
data.certificados[].codigoSbsAseguradorastringCódigo del regulador para la aseguradora: la llave estable para cruzar con tu catálogo.
data.certificados[].usostringUso declarado del vehículo en esa póliza (PARTICULAR, CARGA/TRANSPORTE…). Un cambio entre pólizas es un cambio de uso.
data.certificados[].tipoCertificadostringDIGITAL o FISICO.
modestringlive = dato real de la fuente; si salió del caché lo dice fromCache: true y fetchedAt es el momento de la consulta original.

Tiempo de respuesta

Del orden de 5 a 15 segundos en consulta viva (medido el 7 de noviembre de 2026: 10,7 s). Con póliza vigente la respuesta queda en caché hasta el vencimiento y sin póliza vigente un día, así que la segunda consulta de la misma placa responde de inmediato y no cobra.

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. Por la web, el informe completo por placa cuesta 3 créditos. 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

Con póliza vigente, hasta la fecha de vencimiento: el dato no cambia antes de que la póliza termine. Sin póliza vigente, un día, porque el vehículo puede renovar mañana. Un hit de caché no cobra; refresh en true vuelve a preguntarle al registro y, si trae datos, cobra.

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

  • Responde por el seguro del vehículo, no por el asegurado: no trae nombre, documento ni datos de contacto del contratante.
  • Refleja lo que las aseguradoras reportaron al registro. Una póliza recién comprada puede tardar en aparecer; si el vehículo acaba de renovar, conviene consultar con refresh.
  • Algunas placas de formato de prueba (por ejemplo, series que se repiten) acumulan pólizas de prueba de las propias aseguradoras. No es un fallo de la consulta: es lo que guarda el registro, y se reconoce porque son decenas de pólizas sobre una misma placa.
  • No incluye la ficha del vehículo, la revisión técnica ni las papeletas: son registros distintos y endpoints distintos, cada uno con su crédito.

Códigos de error del endpoint (401, 402, 429, 5xx) en la referencia de errores.

Otras preguntas frecuentes

¿La API devuelve el nombre del asegurado o del propietario?

+

No. Responde por la póliza del vehículo: aseguradora, vigencia, número de póliza, uso, clase, marca, modelo y asientos. Los datos del contratante no viajan en la respuesta.

¿Sirve para una flota completa?

+

Sí. Es una llamada por placa, con un límite de 1.000 peticiones por minuto por API key. Lo habitual es correrla sobre la flota una vez al mes y programar el aviso con vigenteHasta; como la caché dura hasta el vencimiento, repetirla sobre vehículos con póliza vigente no vuelve a cobrar.

¿Qué significa que status llegue en warn?

+

Que el registro tiene pólizas para esa placa pero ninguna está vigente: el vehículo tuvo SOAT y hoy no lo tiene. ok significa póliza vigente e info que el registro no tiene ninguna póliza para esa placa.

¿Sirve la misma API key que para Colombia y los demás países?

+

Sí. Es la misma clave, el mismo saldo y el mismo precio por crédito para Colombia, Perú, Chile y México. Las consultas de todos los países aparecen juntas en el panel de consumos.

Seguir explorando

Última revisión: 7 de noviembre de 2026 · Versión de la API: v1 · Fuentes y metodología