Desarrolladores

Referencia de la API

Los puntos de acceso públicos detrás de Verificación, Búsqueda, Fuentes y las páginas de colecciones, los mismos que utiliza este sitio. Solo lectura, JSON, sin clave para los puntos de acceso siguientes. ¿Es nuevo en la API? Comience con la guía de la API; legible por máquina: openapi.json (OpenAPI 3). Para volúmenes de verificación en producción y compromisos de soporte, consulte la Licencia de verificación.

URL base: https://api.crownintelligence.net. Las respuestas son JSON, salvo que se solicite un formato de descarga. Cada respuesta refleja la actualización vigente de la compilación; no existe un parámetro independiente de fecha de corte, ya que la cifra mostrada es en vivo. El servicio puede aplicar un límite de solicitudes por dirección (HTTP 429 con Retry-After; consulte Autenticación). Pueden aplicarse límites de frecuencia y topes de volumen al uso automatizado o sistemático; consulte los Términos de uso.

POST /api/match/<collection>

Coincidencia de entidades. Envíe lo que sepa sobre una persona, empresa, organización o embarcación y obtenga los registros más cercanos de una colección, cada uno con una puntuación de 0 a 1, un indicador match y una explicación de la puntuación característica por característica. Este es el punto de acceso detrás de la página de Verificación. Los cuerpos de las consultas no se almacenan.

ParámetroTipoNotas
collectionrutadefault, sanctions, peps, crime o maritime.
limitenteroResultados por consulta, hasta 50. Valor predeterminado: 5.
thresholdnúmeroPuntuación a partir de la cual match es verdadero, de 0 a 1. Valor predeterminado: 0.75.
algorithmstringstandard (predeterminado) o name-only; best significa el valor predeterminado. Consulte Algoritmos.
topicscadena[]Cadena de consulta, repetible: sanction, role.pep, debarment, reg.action.
include_dataset / exclude_datasetcadena[]Cadena de consulta, repetible: nombres de registros que se conservan o se excluyen (como en datasets). Varios valores de un mismo filtro se combinan con OR; los filtros distintos, con AND.
queriesobjetoCuerpo. Hasta 20 consultas con nombre, cada una {"schema": …, "properties": {…}}. También se acepta una única consulta plana como {"schema":"Person","name":"…"}, que se responde como q1.
schemastringPerson, Company, Organization, LegalEntity o Vessel. Un registro de un tipo distinto se penaliza (type_mismatch).
properties.namecadena[]Nombres que se desea comparar. Obligatorio a menos que se indique imoNumber.
properties.birthDatecadena[]YYYY, YYYY-MM o YYYY-MM-DD.
properties.nationality / countrycadena[]Códigos ISO 3166 de dos letras. Se usan para la nacionalidad de una persona, la jurisdicción de una empresa o el pabellón de una embarcación.
properties.imoNumbercadena[]Número IMO de siete dígitos para embarcaciones.
Campo de respuestaContenido
algorithm, threshold, limit, filtersLa configuración que se aplicó
responses.<key>.status, total200, o 400 con error; registros candidatos comparados para esa consulta
results[].score, matchPuntuación de 0 a 1; match es verdadero desde 0.75
results[].features[]feature, explanation, score, weight y, para nombres, matched_name
results[].id, caption, schema, urlID del registro (úselo con Entidad), nombre principal, tipo y página del registro
results[].datasets, topics, source, list_type, programmeNombre del registro de origen, temas de riesgo, nombre abreviado de la lista, tipo de lista y programa
results[].birth_date, nationality, imo, aliasesLos valores propios del registro, para compararlos con la consulta
results[].merged_entity, first_seen, last_seenID de la entidad combinada entre registros de origen, si existe; fecha en que el registro se recopiló por primera vez y se cargó por última vez
checked_atCuándo se ejecutó la comprobación (UTC)
CaracterísticaQué mideEfecto en la puntuación
name_matchAlineación palabra por palabra del nombre de la consulta con el nombre y los alias del registro (exacta y luego grafías cercanas); las palabras del registro que faltan en la consulta la reducen levemente.Establece la puntuación base
dob_matchFecha de nacimiento, con la precisión del registro.+0.10 coincidencia, 0 mismo año, −0.25 distinta
country_matchNacionalidad o código de país.+0.05 coincidencia, −0.10 distinta
identifier_matchNúmero IMO.Al menos 0.98 si hay coincidencia, −0.30 si es distinto
type_mismatchEl registro es de un tipo de entidad distinto de schema.−0.20
curl -X POST "https://api.crownintelligence.net/api/match/default?limit=5" \
  -H "Content-Type: application/json" \
  -d '{"queries":{"q1":{"schema":"Person","properties":{"name":["Jane Example"],"birthDate":["1970"],"nationality":["ca"]}}}}'
import requests

body = {"queries": {"q1": {"schema": "Person", "properties": {
    "name": ["Jane Example"], "birthDate": ["1970"], "nationality": ["ca"]}}}}
r = requests.post("https://api.crownintelligence.net/api/match/default", params={"limit": 5}, json=body)
for hit in r.json()["responses"]["q1"]["results"]:
    print(round(hit["score"] * 100), hit["caption"], hit["source"])
const res = await fetch("https://api.crownintelligence.net/api/match/default?limit=5", {
  method: "POST",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({ queries: { q1: { schema: "Vessel",
    properties: { name: ["Example Star"], imoNumber: ["9000000"] } } } }),
});
console.log((await res.json()).responses.q1.results);

Una puntuación mide semejanza, no identidad. Confirme cada coincidencia con la lista oficial del publicador antes de actuar.

GET /api/algorithms

Los métodos de puntuación aceptados por algorithm en Coincidencia, con cada característica y su efecto, las constantes de comparación de nombres, el método y el umbral predeterminados, y los temas aceptados por topics. Consulte Algoritmos de coincidencia.

curl "https://api.crownintelligence.net/api/algorithms"

GET /api/catalog

Todas las colecciones del índice de compilación actual: nombre, título, version, registros, entidades distintas, registros de origen, último cambio, enlaces (página, índice de compilación, estadísticas y los puntos de acceso de coincidencia, búsqueda y conciliación) y los archivos con sus tamaños. Consúltelo periódicamente y compare version para saber cuándo se reconstruyó una colección.

curl "https://api.crownintelligence.net/api/catalog"

GET /api/overview

Totales principales de toda la compilación: registros de verificación activos, sanciones, PEPs, inhabilitaciones para contratar, recuentos de registros, nacionalidades, totales de fuentes y desglose por tipo de registro. Es lo que alimenta las cifras de la página de inicio.

ParámetroTipoNotas
Ninguno: el punto de acceso no admite parámetros de consulta.
curl "https://api.crownintelligence.net/api/overview"
import requests

r = requests.get("https://api.crownintelligence.net/api/overview")
print(r.json())
const res = await fetch("https://api.crownintelligence.net/api/overview");
console.log(await res.json());

GET /api/sources

El registro de fuentes: una fila por cada feed de publicador conciliado en la compilación, con publicador, país, tipo de lista, periodicidad y estado de la última ejecución. Sustenta la página de Fuentes.

ParámetroTipoNotas
qstringFiltro de texto libre por nombre de fuente, jurisdicción, país y tipo de lista.
list_typestringFiltro por tipo de lista, p. ej., SANCTION, PEP, DEBARMENT.
pageenteroNúmero de página con base 1. Valor predeterminado: 1.
limitenteroFilas por página, hasta 100. Valor predeterminado: 50.
curl "https://api.crownintelligence.net/api/sources?list_type=SANCTION&limit=25"
import requests

r = requests.get(
    "https://api.crownintelligence.net/api/sources",
    params={"list_type": "SANCTION", "limit": 25},
)
print(r.json())
const url = new URL("https://api.crownintelligence.net/api/sources");
url.searchParams.set("list_type", "SANCTION");
url.searchParams.set("limit", "25");
const res = await fetch(url);
console.log(await res.json());

GET /api/search/<collection>

La misma búsqueda de texto completo que /api/search, limitada a una colección. Acepta todos los parámetros de /api/search; los resultados no se puntúan.

ParámetroTipoNotas
collectionrutadefault, sanctions, peps, crime o maritime.
qstringNombre que se busca, mínimo 2 caracteres, salvo que se indique un filtro.
otro—type, list_type, nationality, dob, source, program, sort=first_seen, page, limit, igual que en /api/search.
curl "https://api.crownintelligence.net/api/search/sanctions?q=Jane+Example&limit=10"
import requests

r = requests.get("https://api.crownintelligence.net/api/search/sanctions", params={"q": "Jane Example", "limit": 10})
print(r.json()["total"])
const url = new URL("https://api.crownintelligence.net/api/search/sanctions");
url.searchParams.set("q", "Jane Example");
const res = await fetch(url);
console.log((await res.json()).results);

GET /api/facets

Conteos que desglosan una búsqueda por tipo de lista, tipo de entidad, nacionalidad (las 30 principales) y registro de origen (los 30 principales). Sirve para construir filtros junto a los resultados de búsqueda. Requiere q o al menos un filtro.

ParámetroTipoNotas
qstringNombre que se busca, igual que en /api/search.
list_type, type, nationality, sourcestringFiltros, combinados con AND.
scopestringColección: default, sanctions, peps, crime o maritime.
curl "https://api.crownintelligence.net/api/facets?q=Jane+Example&list_type=SANCTION"
import requests

r = requests.get("https://api.crownintelligence.net/api/facets", params={"q": "Jane Example"})
print(r.json()["nationality"])
const res = await fetch("https://api.crownintelligence.net/api/facets?q=Jane+Example");
console.log((await res.json()).source);

GET /api/entity/<id>

Un único registro por id numérico, tal como lo devuelven Search o Match: origen, registro, nombre, nombres alternativos, programa, tipo de lista, tipo de entidad, fecha de nacimiento y su precisión, nacionalidad, número IMO, enlace a la fuente, primera y última carga, related (la misma parte en otros registros), listings (el registro y sus registros relacionados como listados anidados) y merged_entity_url. Un UUID de entidad combinada en la ruta devuelve la entidad combinada: título, esquema, propiedades combinadas, registros, temas, referents, y listings y records anidados (hasta 200). Un registro que ya no está activo, pero cuya entidad combinada sí lo está, responde 308 hacia ella. Las formas de consulta /api/entity?id= y ?entity_id= siguen funcionando. Guía: La API de entidades.

ParámetroTipoNotas
idrutaId de registro de un resultado de Search o Match (o crown-<id> de los archivos masivos), o un UUID de entidad combinada.
nestedbooleanofalse devuelve únicamente el registro o la entidad combinada.
formatstringftm: el registro como entidad de FollowTheMoney, igual que en entities.ftm.json; con nested=true, igual que en targets.nested.json.
entity_idstringForma de consulta para un UUID de entidad combinada (entity_id en un registro, merged_entity en una coincidencia).
curl "https://api.crownintelligence.net/api/entity/379781867"
import requests

r = requests.get("https://api.crownintelligence.net/api/entity/379781867")
print(r.json()["listings"])
const res = await fetch("https://api.crownintelligence.net/api/entity/379781867");
console.log(await res.json());

GET /api/source

Un registro de origen en detalle: su ficha en el registro (editor, país, tipo de lista, estado, última ejecución), totales de registros y de entidades distintas, primera y última carga, y desgloses por tipo de entidad, país (los 60 principales) y programa (los 50 principales), además de sus 15 registros añadidos más recientemente.

ParámetroTipoNotas
namestringNombre del registro exactamente como lo devuelve /api/sources. Obligatorio.
curl "https://api.crownintelligence.net/api/source?name=OFAC%20SDN"
import requests

r = requests.get("https://api.crownintelligence.net/api/source", params={"name": "OFAC SDN"})
print(r.json()["records"])
const url = new URL("https://api.crownintelligence.net/api/source");
url.searchParams.set("name", "OFAC SDN");
console.log(await (await fetch(url)).json());

GET /api/countries

Todas las nacionalidades presentes en los registros activos, con el número de registros y de fuentes distintas por nacionalidad. No acepta parámetros.

ParámetroTipoNotas
Ninguno: el punto de acceso no admite parámetros de consulta.
curl "https://api.crownintelligence.net/api/countries"
import requests

r = requests.get("https://api.crownintelligence.net/api/countries")
print(r.json())
const res = await fetch("https://api.crownintelligence.net/api/countries");
console.log(await res.json());

GET POST /api/reconcile/<colección>

Un servicio de conciliación para OpenRefine (Reconciliation API 0.2). Agregue https://api.crownintelligence.net/api/reconcile/default como servicio estándar en OpenRefine para comparar una columna de nombres con una colección. Sin queries devuelve el manifiesto del servicio; con ellos puntúa cada consulta con el mismo algoritmo de coincidencia que /api/match.

ParámetroTipoNotas
collectionrutadefault, sanctions, peps, crime o maritime.
queriesJSONCadena de consulta (GET) o cuerpo de formulario/JSON (POST). Hasta 20 consultas: {"q0":{"query":"Jane Example","type":"Person","limit":5,"properties":[{"pid":"birthDate","v":"1970"}]}}. Los ids de propiedad son los de /api/match.
respuestaobjetoPara cada clave de consulta, result: una lista de candidatos con id, name, score (0–100), match y type. id se abre en /estate/record.html?id=.
curl -G "https://api.crownintelligence.net/api/reconcile/default" --data-urlencode 'queries={"q0":{"query":"Jane Example","type":"Person"}}'
import json, requests

q = {"q0": {"query": "Jane Example", "type": "Person"}}
r = requests.post("https://api.crownintelligence.net/api/reconcile/default", data={"queries": json.dumps(q)})
print(r.json()["q0"]["result"])
const res = await fetch("https://api.crownintelligence.net/api/reconcile/default", {
  method: "POST",
  body: new URLSearchParams({ queries: JSON.stringify({ q0: { query: "Jane Example", type: "Person" } }) }),
});
console.log(await res.json());

GET /api/programs

Programas de sanciones y de otro tipo agrupados a partir de los registros activos, con el número de registros, el número de listas de origen distintas y los nombres de las listas que aportan a cada programa.

ParámetroTipoNotas
qstringFiltro de texto libre por nombre de programa o nombre de lista de origen.
pageenteroNúmero de página con base 1. Valor predeterminado: 1.
limitenteroFilas por página, hasta 100. Valor predeterminado: 50.
curl "https://api.crownintelligence.net/api/programs?q=Magnitsky"
import requests

r = requests.get(
    "https://api.crownintelligence.net/api/programs",
    params={"q": "Magnitsky"},
)
print(r.json())
const url = new URL("https://api.crownintelligence.net/api/programs");
url.searchParams.set("q", "Magnitsky");
const res = await fetch(url);
console.log(await res.json());

GET /api/collection

Totales resumidos de un tipo de colección (sanciones, PEPs o inhabilitaciones para contratar), con un alcance opcional que permite acotar a un ámbito específico, como los registros marítimos o de empresas dentro de ese tipo.

ParámetroTipoNotas
typestringUno de SANCTION, PEP, DEBARMENT. Obligatorio.
scopestringAcotación opcional, por ejemplo sanctions, peps, crime, maritime, kyb, securities.
curl "https://api.crownintelligence.net/api/collection?type=SANCTION"
import requests

r = requests.get(
    "https://api.crownintelligence.net/api/collection",
    params={"type": "SANCTION"},
)
print(r.json())
const url = new URL("https://api.crownintelligence.net/api/collection");
url.searchParams.set("type", "SANCTION");
const res = await fetch(url);
console.log(await res.json());

GET /api/export

Transmite una descarga gratuita de los registros activos de un registro en formato CSV o JSON delimitado por saltos de línea, para los registros que Crown ha autorizado para descarga directa. Los registros no autorizados para descarga devuelven un error que explica que ese registro está disponible solo con licencia.

ParámetroTipoNotas
sourcestringNombre exacto del registro, como aparece en su fila de la página Sources. Obligatorio.
formatstringcsv o jsonl. Valor predeterminado: csv.
curl "https://api.crownintelligence.net/api/export?source=OFAC%20SDN&format=csv" -o ofac-sdn.csv
import requests

r = requests.get(
    "https://api.crownintelligence.net/api/export",
    params={"source": "OFAC SDN", "format": "csv"},
)
with open("ofac-sdn.csv", "wb") as f:
    f.write(r.content)
import { writeFile } from "node:fs/promises";

const url = new URL("https://api.crownintelligence.net/api/export");
url.searchParams.set("source", "OFAC SDN");
url.searchParams.set("format", "csv");
const res = await fetch(url);
await writeFile("ofac-sdn.csv", Buffer.from(await res.arrayBuffer()));

GET /downloads/collections/<colección>/<archivo>

Archivos masivos de cada colección (default, sanctions, peps, crime o maritime), reconstruidos tras cada actualización y conservados en la misma dirección. index.json enumera cada archivo con su tamaño, número de filas y suma de comprobación SHA-256, junto con las cifras, la versión y el último cambio de la colección. Los formatos, las columnas y las actualizaciones delta se describen en Uso de los datos masivos.

ArchivoContenido
index.jsonÍndice de compilación: versión, cifras y cada archivo con su suma de comprobación
targets.simple.csvUna fila por registro, tabla plana
targets.nested.jsonCada registro con los detalles de la sanción anidados, uno por línea
entities.ftm.jsonEntidades de FollowTheMoney, una por línea
senzing.jsonRegistros de Senzing, uno por línea
statements.csvUna fila por valor de propiedad
names.txtCada nombre y alias distinto
delta.jsonOperaciones ADD, MOD y DEL desde la compilación anterior
curl -O "https://api.crownintelligence.net/downloads/collections/sanctions/index.json"
curl -O "https://api.crownintelligence.net/downloads/collections/sanctions/targets.simple.csv"
import requests

idx = requests.get("https://api.crownintelligence.net/downloads/collections/sanctions/index.json").json()
for f in idx["files"]:
    print(f["name"], f["rows"], f["sha256"])
const idx = await (await fetch("https://api.crownintelligence.net/downloads/collections/sanctions/index.json")).json();
console.log(idx.version, idx.files.map(f => f.name));

Cómo se recopilan y actualizan estos datos →

¿Necesita volumen de verificación para producción?