Documentation · Data model
Flat and nested entities
The same data comes in two shapes. In the flat file every entity is its own line and refers to others by ID. In the nested file each listed party carries its listings inside it, so one line tells the whole story.
Flat entities are in entities.ftm.json. Nested entities are in targets.nested.json. Both are published for every collection; see Using the bulk data. The API’s record endpoint (/api/entity) returns a record in its own shape by default, with other records of the same party listed under related. Add format=ftm to get the same record as FollowTheMoney, flat or nested; see From the API.
The example below is the vessel PELIKAN (IMO 6922169), banned from ports in the Paris Memorandum of Understanding region (record crown-380054154).
The flat shape
Two lines: the vessel, then its listing, which points back to the vessel through entity.
{
"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"
}
To rebuild the full picture from flat files, keep entities in a lookup by ID and follow the references. That is the most flexible shape for loading into a database or graph.
Read more: Entity structureFields, timestamps and references explainedThe nested shape
One line per listed party. Its listings appear as a sanctions property holding the full Sanction entities:
{
"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"
],
"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": "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"
}
]
},
"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
}
References from the party are not expanded
In FollowTheMoney, a party can point to other entities, such as an address or an identity document, and a nested file would put those entities inline. Our parties do not point to anything yet, because addresses and documents are not modelled (data backlog items 9 and 22), so there is nothing to expand.
Listings appear as a stub property
sanctions is not a property you will find in the flat file. It is the reverse of Sanction:entity: every Sanction entity that points to the party is gathered under it. Today each record has exactly one listing, so the list holds one entity. When records of the same party are merged across registers in future, the list will hold one listing per register.
Relationship entities
Ownership, family and associate links are not published yet (data backlog item 23), so the nested file has no relationship entities.
Nesting depth
One level: the party and its listings. The Sanction entities inside are not nested further; their entity property still holds the party’s ID.
From the API
The record endpoint returns one record as FollowTheMoney when you add format=ftm. The nested parameter chooses the shape:
| Request | Shape |
|---|---|
/api/entity?id=<id>&format=ftm | Flat: the party alone, the same shape as one line of entities.ftm.json. This is the default when nested is left out. |
/api/entity?id=<id>&format=ftm&nested=true | Nested: the party with its listing inline under properties.sanctions, the same shape as one line of targets.nested.json. |
<id> is a record ID, as returned in the id field of search and match results. The FollowTheMoney ID in the response carries the crown- prefix used in the bulk files.
curl "https://api.crownintelligence.net/api/entity?id=380818956&format=ftm&nested=true"
Record IDs can change when a register is reloaded. If the example returns no record, take a fresh ID from /api/search?q=. Without format=ftm, the endpoint returns its own record shape, described in the Entities API guide.
Last updated 2026-10-04