Documentación · Datos masivos

FollowTheMoney JSON

Nuestros archivos JSON siguen el formato de entidades de FollowTheMoney: cada entidad tiene un id, un esquema y un conjunto de propiedades cuyos valores son siempre listas de cadenas de texto. Se escriben como líneas JSON (un objeto JSON completo por línea), por lo que pueden procesarse en flujo sin cargar todo el archivo.

Los archivos masivos se pueden descargar gratis, sin cuenta. El uso no comercial está cubierto por nuestra licencia de datos; el uso comercial requiere una licencia. Para verificar nombres de uno en uno, utilice la API de verificación.

Dos archivos

  • entities.ftm.json contiene cada registro como una entidad, seguida en la línea siguiente por su entidad Sanction: la inclusión en el registro de origen. Hay dos líneas por registro. Úselo para cargar un grafo o un almacén de entidades, donde la inclusión en la lista es un nodo independiente.
  • targets.nested.json contiene una línea por registro, con su inclusión en la lista anidada bajo properties.sanctions. Úselo cuando necesite un objeto autónomo por cada parte incluida en la lista.

Ambos usan UTF-8. Consulte también la referencia del modelo, la estructura de entidades y las entidades planas y anidadas.

Campos de la entidad

id
ID del registro, crown-<number>. Un registro corresponde a una fila de un registro de origen. La inclusión en la lista tiene el id crown-<number>-sanction. En la API, el mismo registro se identifica solo con el número.
caption
Nombre para mostrar.
schema
Person, Company, Organization, Vessel, Airplane, LegalEntity (tipo no indicado por la fuente) o Sanction.
properties
Nombre de la propiedad asociado a una lista de valores de texto. Las propiedades ausentes se omiten.
referents
Otros ids fusionados con este. Actualmente es siempre una lista vacía; las fusiones se expresan con canonical_id.
datasets
Registro de origen como identificador corto, p. ej., ofac_sdn, uk_ofsi, paris_mou_banned.
first_seen
Cuándo recopilamos el registro por primera vez (ISO 8601, con desfase UTC incluido).
last_seen
Cuándo se confirmó el registro por última vez en su fuente.
last_change
Cuándo cambió el registro por última vez. Actualmente coincide con last_seen.
target
true en las partes incluidas en listas. No está presente en las entidades Sanction.
canonical_id
Está presente cuando hemos determinado que el registro y registros de otros registros corresponden a la misma parte: crown-e-<merge id>. Agrupe por este campo para ver una misma parte en distintos registros.

Propiedades

PropiedadEnContenido
nametodos los registrosNombre principal tal como se publica
aliastodos los registrosOtros nombres y grafías
topicstodos los registrosUno de sanction, role.pep, debarment, reg.action
birthDatePersonaYYYY, YYYY-MM o YYYY-MM-DD, con la precisión publicada
nationalityPersonaISO 3166-1 alfa-2, en minúsculas
countryotros registrosISO 3166-1 alfa-2, en minúsculas
imoNumberEmbarcación y otrosIMO seguido de siete dígitos
sourceUrlregistros, SanctionEnlace al registro o a la lista en el publicador
notestodos los registrosOtros datos publicados como texto (direcciones, identificadores, banderas, observaciones)
entitySanctionid del registro incluido en la lista
authoritySanctionNombre del registro de origen
programSanctionPrograma o base de la inclusión, en palabras del publicador
listingDateSanctionFecha de publicación o de inclusión, cuando el registro la indica
sanctionssolo en el archivo anidadoLas entidades Sanction del registro

Grado de completitud de cada propiedad

PropiedadRegistros con ellaProporción
Cargando…

Ejemplo: entities.ftm.json

Dos líneas de la colección maritime: una embarcación y su inclusión en la lista (se agregaron saltos de línea para facilitar la lectura; cada objeto es una sola línea en el archivo).

{"id":"crown-380054154","caption":"PELIKAN","schema":"Vessel",
 "properties":{"name":["PELIKAN"],"topics":["debarment"],"alias":["BALTIC ATLANT SHPG-LITHUANIA"],
   "imoNumber":["IMO6922169"],"notes":["IMO 6922169 · Flag: Comoros · From: 09/12/2009 · ISM: BALTIC ATLANT SHPG-LITHUANIA"]},
 "referents":[],"datasets":["paris_mou_banned"],"first_seen":"2026-09-24T11:38:49.104591+00:00",
 "last_seen":"2026-09-24T11:38:49.104591+00:00","last_change":"2026-09-24T11:38:49.104591+00:00","target":true}
{"id":"crown-380054154-sanction","schema":"Sanction","caption":"Banned from Paris MoU ports — Multiple detentions",
 "properties":{"entity":["crown-380054154"],"authority":["Paris MoU Banned"],
   "program":["Banned from Paris MoU ports — Multiple detentions"]},
 "datasets":["paris_mou_banned"],"first_seen":"2026-09-24T11:38:49.104591+00:00",
 "last_seen":"2026-09-24T11:38:49.104591+00:00","last_change":"2026-09-24T11:38:49.104591+00:00"}

Ejemplo: targets.nested.json

El mismo registro en el archivo anidado: una línea, con la inclusión en la lista dentro de properties.sanctions.

{"id":"crown-380054154","caption":"PELIKAN","schema":"Vessel",
 "properties":{"name":["PELIKAN"],"topics":["debarment"],"alias":["BALTIC ATLANT SHPG-LITHUANIA"],
   "imoNumber":["IMO6922169"],"notes":["…"],
   "sanctions":[{"id":"crown-380054154-sanction","schema":"Sanction",
     "caption":"Banned from Paris MoU ports — Multiple detentions",
     "properties":{"entity":["crown-380054154"],"authority":["Paris MoU Banned"],
       "program":["Banned from Paris MoU ports — Multiple detentions"]},
     "datasets":["paris_mou_banned"], "first_seen":"…","last_seen":"…","last_change":"…"}]},
 "referents":[],"datasets":["paris_mou_banned"],"first_seen":"…","last_seen":"…","last_change":"…","target":true}

Lectura de los archivos

Lea una línea a la vez; las colecciones más grandes alcanzan varios gigabytes (default: —).

import json

with open("targets.nested.json", encoding="utf-8") as f:
    for line in f:
        e = json.loads(line)
        names = e["properties"].get("name", []) + e["properties"].get("alias", [])
        programmes = [p for s in e["properties"].get("sanctions", [])
                      for p in s["properties"].get("program", [])]
        print(e["id"], e["schema"], names[0], programmes)
# group records that we have matched as the same party
jq -r 'select(.canonical_id) | [.canonical_id, .id, .caption] | @tsv' targets.nested.json | sort

Lo que los archivos aún no contienen

  • Las direcciones, los documentos de identidad, la titularidad, los vínculos familiares y de asociados, los cargos desempeñados y las direcciones de billeteras de criptomonedas no son entidades ni propiedades independientes. Cuando un publicador los proporciona, solo se conservan como texto en notes.
  • referents siempre está vacío; las fusiones aparecen solo a través de canonical_id.
  • last_change es la fecha de la última confirmación, no una fecha de cambio real.
  • Los tipos de entidad se infieren cuando la fuente no indica ninguno, y algunos son incorrectos; consulte la metodología.

Última actualización 2026-10-03