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.
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ámetro | Tipo | Notas |
|---|---|---|
collection | ruta | default, sanctions, peps, crime o maritime. |
limit | entero | Resultados por consulta, hasta 50. Valor predeterminado: 5. |
threshold | número | Puntuación a partir de la cual match es verdadero, de 0 a 1. Valor predeterminado: 0.75. |
algorithm | string | standard (predeterminado) o name-only; best significa el valor predeterminado. Consulte Algoritmos. |
topics | cadena[] | Cadena de consulta, repetible: sanction, role.pep, debarment, reg.action. |
include_dataset / exclude_dataset | cadena[] | 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. |
queries | objeto | Cuerpo. 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. |
schema | string | Person, Company, Organization, LegalEntity o Vessel. Un registro de un tipo distinto se penaliza (type_mismatch). |
properties.name | cadena[] | Nombres que se desea comparar. Obligatorio a menos que se indique imoNumber. |
properties.birthDate | cadena[] | YYYY, YYYY-MM o YYYY-MM-DD. |
properties.nationality / country | cadena[] | 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.imoNumber | cadena[] | Número IMO de siete dígitos para embarcaciones. |
| Campo de respuesta | Contenido |
|---|---|
algorithm, threshold, limit, filters | La configuración que se aplicó |
responses.<key>.status, total | 200, o 400 con error; registros candidatos comparados para esa consulta |
results[].score, match | Puntuació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, url | ID del registro (úselo con Entidad), nombre principal, tipo y página del registro |
results[].datasets, topics, source, list_type, programme | Nombre del registro de origen, temas de riesgo, nombre abreviado de la lista, tipo de lista y programa |
results[].birth_date, nationality, imo, aliases | Los valores propios del registro, para compararlos con la consulta |
results[].merged_entity, first_seen, last_seen | ID 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_at | Cuándo se ejecutó la comprobación (UTC) |
| Característica | Qué mide | Efecto en la puntuación |
|---|---|---|
name_match | Alineació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_match | Fecha de nacimiento, con la precisión del registro. | +0.10 coincidencia, 0 mismo año, −0.25 distinta |
country_match | Nacionalidad o código de país. | +0.05 coincidencia, −0.10 distinta |
identifier_match | Número IMO. | Al menos 0.98 si hay coincidencia, −0.30 si es distinto |
type_mismatch | El 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ámetro | Tipo | Notas |
|---|---|---|
| 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ámetro | Tipo | Notas |
|---|---|---|
q | string | Filtro de texto libre por nombre de fuente, jurisdicción, país y tipo de lista. |
list_type | string | Filtro por tipo de lista, p. ej., SANCTION, PEP, DEBARMENT. |
page | entero | Número de página con base 1. Valor predeterminado: 1. |
limit | entero | Filas 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
Búsqueda de texto completo por nombre en registros activos, con filtros opcionales. Requiere al menos dos caracteres en q. Sustenta la página de Búsqueda; cada resultado enlaza con un registro mediante el punto de acceso Entidad.
| Parámetro | Tipo | Notas |
|---|---|---|
q | string | Nombre que se desea buscar, mínimo 2 caracteres. Opcional cuando se define un filtro. |
topics, include_dataset, exclude_dataset | cadena[] | Filtros repetibles, como en Coincidencia. |
source, program, sort | string | Un registro de origen; programa exacto; first_seen para mostrar primero los más recientes. |
offset | entero | Desplazamiento de registros, en lugar de page. |
type | string | Filtro por tipo de entidad, p. ej., INDIVIDUAL, COMPANY, VESSEL, AIRCRAFT, ORGANIZATION. |
list_type | string | Filtro por tipo de lista, p. ej., SANCTION, PEP, DEBARMENT. |
nationality | string | Filtro por código de nacionalidad. |
dob | string | Filtro por fecha de nacimiento, YYYY, YYYY-MM o YYYY-MM-DD. |
page | entero | Número de página con base 1. Valor predeterminado: 1. |
limit | entero | Filas por página, hasta 50. Valor predeterminado: 25. |
curl "https://api.crownintelligence.net/api/search?q=Jane+Example&limit=25"
import requests
r = requests.get(
"https://api.crownintelligence.net/api/search",
params={"q": "Jane Example", "limit": 25},
)
print(r.json())
const url = new URL("https://api.crownintelligence.net/api/search");
url.searchParams.set("q", "Jane Example");
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ámetro | Tipo | Notas |
|---|---|---|
collection | ruta | default, sanctions, peps, crime o maritime. |
q | string | Nombre 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ámetro | Tipo | Notas |
|---|---|---|
q | string | Nombre que se busca, igual que en /api/search. |
list_type, type, nationality, source | string | Filtros, combinados con AND. |
scope | string | Colecció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ámetro | Tipo | Notas |
|---|---|---|
id | ruta | Id de registro de un resultado de Search o Match (o crown-<id> de los archivos masivos), o un UUID de entidad combinada. |
nested | booleano | false devuelve únicamente el registro o la entidad combinada. |
format | string | ftm: el registro como entidad de FollowTheMoney, igual que en entities.ftm.json; con nested=true, igual que en targets.nested.json. |
entity_id | string | Forma 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ámetro | Tipo | Notas |
|---|---|---|
name | string | Nombre 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ámetro | Tipo | Notas |
|---|---|---|
| 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ámetro | Tipo | Notas |
|---|---|---|
collection | ruta | default, sanctions, peps, crime o maritime. |
queries | JSON | Cadena 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. |
| respuesta | objeto | Para 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ámetro | Tipo | Notas |
|---|---|---|
q | string | Filtro de texto libre por nombre de programa o nombre de lista de origen. |
page | entero | Número de página con base 1. Valor predeterminado: 1. |
limit | entero | Filas 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ámetro | Tipo | Notas |
|---|---|---|
type | string | Uno de SANCTION, PEP, DEBARMENT. Obligatorio. |
scope | string | Acotació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ámetro | Tipo | Notas |
|---|---|---|
source | string | Nombre exacto del registro, como aparece en su fila de la página Sources. Obligatorio. |
format | string | csv 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.
| Archivo | Contenido |
|---|---|
index.json | Índice de compilación: versión, cifras y cada archivo con su suma de comprobación |
targets.simple.csv | Una fila por registro, tabla plana |
targets.nested.json | Cada registro con los detalles de la sanción anidados, uno por línea |
entities.ftm.json | Entidades de FollowTheMoney, una por línea |
senzing.json | Registros de Senzing, uno por línea |
statements.csv | Una fila por valor de propiedad |
names.txt | Cada nombre y alias distinto |
delta.json | Operaciones 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));