TradeProtectedCumplimiento en comercio de materias primas

API de cribado de sanciones

Un endpoint, cuatro listas oficiales

Integre 28,172 registros de sanciones y control de exportaciones de la OFAC de EE. UU., la ONU, la UE y el MOFCOM chino en sus propios sistemas de ERP, riesgos o KYC. Envíe un nombre y reciba si hay coincidencia, con qué registros y un enlace al documento oficial para verificarlo.

28,172registros en listas
4fuentes oficiales
Diariaactualización
4formatos de salida

Para quién es

Por qué no hacerlo usted mismo

Cuatro fuentes, cuatro formatos: la OFAC publica CSV, la ONU XML, la UE tiene su propia base de datos y el MOFCOM chino no ofrece API alguna, solo páginas de anuncios.

Y las listas cambian a diario: en nuestra última actualización la OFAC quedó con 97 registros menos (las exclusiones también hay que sincronizarlas o se generan falsos positivos).

Ese coste de mantenimiento es continuo, no puntual.

Tres pasos para integrarlo

1. Contrate el plan API y cree una clave

La API requiere el plan API (US$19.9/mes, incluye todo lo de la membresía).

Inicie sesión, contrate en la pestaña de membresía y luego cree una clave en el apartado de claves API. Las claves tienen la forma tp_xxxxxxxx.

La clave en texto plano solo se muestra una vez, al crearla: guárdela de inmediato en su gestor de secretos.

2. Envíe una petición

curl -H "Authorization: Bearer tp_YOUR_KEY"   "https://tradeprotected.com/api/v1/screen?name=GAZPROM"

3. Lea la respuesta

{
  "matched": true,
  "count": 2,
  "rows": [
    {
      "source": "OFAC",
      "name": "GAZPROM NEFT",
      "type": "entity",
      "programs": "RUSSIA-EO14024",
      "listed_on": "2022-02-24",
      "url": "https://sanctionssearch.ofac.treas.gov/..."
    }
  ]
}

matched es un booleano sobre el que puede ramificar directamente; rows[].url apunta al registro oficial: archívelo como evidencia de la verificación.

Endpoints

GET/api/v1/screen

Cribado de un solo nombre. Parámetro name (obligatorio, máx. 200 caracteres). Un número de 7 dígitos se interpreta como IMO de buque y se coteja de forma exacta.

POST/api/v1/screen

Cribado por lotes, hasta 100 nombres por llamada. Práctico para revisar comprador, vendedor, armador y consignatario de una vez antes de una operación.

GET/api/v1/sanctions

Consulta y descarga completa de las listas, para quien mantiene su propia copia. Parámetros: q, source, type, limit (por defecto 100, máx. 500), offset.

GET/api/v1/sources

Número de registros y fecha de última actualización por fuente. Una tarea de sincronización puede consultarlo antes y evitar una descarga completa innecesaria.

Parámetros

nameNombre a cribar o IMO de 7 dígitos. Obligatorio en GET /screen
namesArray de nombres para cribado por lotes, en el cuerpo POST, máx. 100
sourceOFAC / UN / EU / EUX / CN; vacío significa todas
typeentity / individual / vessel / aircraft
formatjson (por defecto) / xlsx (Excel) / csv / ndjson
limitFilas por página, por defecto 100, máx. 500
offsetDesplazamiento, junto con limit para paginar

Tres formas de usarlo

Los mismos datos, tres formas de consumirlos, de menos a más código:

Opción 1: intégrelo en su propio sitio

Pegue el fragmento siguiente en cualquier página de su web corporativa y aparecerá un buscador de listas de sanciones con nuestros datos, de aspecto sobrio y fácil de integrar en su maquetación. Encaja bien en transitarios, despachos y asociaciones que ofrecen a sus clientes una comprobación autoservicio.

<iframe src="https://tradeprotected.com/embed?key=tp_YOUR_KEY&lang=es"
        style="width:100%;height:420px;border:1px solid #e4eaf1;border-radius:12px"
        loading="lazy"></iframe>

Restrinja la clave a su dominio

La clave incluida en el código de integración es visible públicamente: cualquiera que vea el código fuente de su página puede leerla. Por eso configure los dominios permitidos para esa clave en Membresía → claves API (p. ej. yourcompany.com); aunque la copien, no funcionará en otro sitio. Es el mismo enfoque que usan claves de front-end como las de Google Maps.

Recomendamos separar la clave de integración de la de llamadas desde servidor: la primera restringida a su dominio, la segunda sin restricción pero alojada solo en su servidor. Una cuenta puede tener cinco claves a la vez, suficiente para separar entornos.

Opción 3: exportar a hoja de cálculo

Basta con añadir el parámetro format; todos los endpoints de consulta lo admiten.

# exportar la lista del MOFCOM chino a Excel
curl -H "Authorization: Bearer tp_YOUR_KEY"   "https://tradeprotected.com/api/v1/sanctions?source=CN&limit=500&format=xlsx"   -o cn-list.xlsx

# guardar el resultado de un cribado como hoja de cálculo para el expediente
curl -H "Authorization: Bearer tp_YOUR_KEY"   "https://tradeprotected.com/api/v1/screen?name=GAZPROM&format=xlsx"   -o gazprom.xlsx

# buscar un buque por IMO
curl -H "Authorization: Bearer tp_YOUR_KEY"   "https://tradeprotected.com/api/v1/screen?name=9209508"

Ejemplos de código

Python

import requests

KEY = "tp_YOUR_KEY"
r = requests.get(
    "https://tradeprotected.com/api/v1/screen",
    params={"name": "GAZPROM"},
    headers={"Authorization": "Bearer " + KEY},
    timeout=20,
)
r.raise_for_status()
data = r.json()

if data["matched"]:
    print("MATCH", data["count"], "coincidencia(s) — requiere revisión manual")
    for row in data["rows"]:
        print(row["source"], row["name"], row["url"])

Node.js

const KEY = process.env.TP_API_KEY;

async function screen(name) {
  const url = new URL("https://tradeprotected.com/api/v1/screen");
  url.searchParams.set("name", name);
  const r = await fetch(url, { headers: { authorization: "Bearer " + KEY } });
  if (!r.ok) throw new Error("screen failed: " + r.status);
  return r.json();
}

const out = await screen("SOVCOMFLOT");
console.log(out.matched ? "MATCH " + out.count : "clear");

Por lotes (Python)

names = ["GAZPROM", "ACSL", "SOVCOMFLOT"]
r = requests.post(
    "https://tradeprotected.com/api/v1/screen",
    json={"names": names},
    headers={"Authorization": "Bearer " + KEY},
    timeout=60,
)
for item in r.json()["results"]:
    flag = "MATCH" if item["matched"] else "clear"
    print(flag, item["query"], item["count"])

Cuota y códigos de error

1000 llamadas por clave y día, con reinicio a las 00:00 UTC. Cada respuesta lleva estas dos cabeceras:

X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 999

Una cuenta admite hasta cinco claves activas. Separarlas por entorno (producción / pruebas / un compañero concreto) permite revocar una sin afectar al resto de consumidores.

Errores

Los errores siempre devuelven {"error":{"code":"...","message":"..."}}. Ramifique según code, no según el texto del mensaje.

401missing_key no se envió clave · invalid_key clave no válida o revocada
403membership_required sin contratar o caducado: las claves dejan de funcionar en cuanto vence el plan y vuelven a hacerlo al renovar, sin reemitirlas
429quota_exceeded cuota diaria agotada
400missing_name / name_too_long / too_many_names problemas de parámetros

Aviso importante

El cotejo se basa en subcadenas y frases normalizadas, de modo que una coincidencia es una señal de diligencia debida, no una conclusión jurídica. Los homónimos y las diferencias de transliteración pueden producir falsos positivos y negativos; decida en última instancia sobre el registro oficial al que apunta url.

El plan API incluye todo lo de la membresía, más la API de datos, el widget integrable y la exportación a Excel.

Las API de cribado equivalentes suelen venderse por contrato anual a partir de varios miles de dólares. La nuestra es mensual y cancelable en cualquier momento. Haga unas consultas gratis y evalúe los datos antes de integrarla.

Pruébelo gratis

¿Necesita más de 1000 llamadas al día, cuota dedicada o instalación local? Ver planes para empresas →

Otros idiomas: English · 中文 · Русский · 日本語 · 한국어 · العربية