Registry / data / followthemoney

followthemoney

JSON →
library4.9.2pypypi✓ verified 85d ago

A Python library for modeling, validating, and exporting structured anti-corruption data. It provides a schema (the 'Follow the Money' data model) with entities, properties, and relations, along with tools for data import/export (CSV, Excel, JSON, RDF), entity deduplication, and graph analysis. Current version 4.8.1, supports Python >=3.10, released under MIT license. Active development.

pip install followthemoney
INSTALL
IMPORT
SIG · FOLLOWTHEMONEY
F
followthemoney
datapythonv4.9.2
Install
16.5s avg
Import
2410ms
Disk
173MB
Pass rate
2/ 10
Env Coverage2 / 10
glibc
3.93.13
musl
3.93.13
Install & Compatibility
Where this runs
tested against v3.7.12 · pip install
no network on importno background threads
Install × environment matrix
Each cell = how many times install + import succeeded across repeated harness runs. Partial = flaky.
glibc = Debian/Ubuntu slim · musl = Alpine Linux
musl
glibc
py 3.10
✕ build_error
✕ build_error
py 3.11
✕ build_error
✕ build_error
py 3.12
✕ build_error
✕ build_error
py 3.13
✕ build_error
✕ build_error
py 3.9
✓ —
✓ 16.5s
173MB installed
● package 173MB
Code
Verified usage

Verified import paths — ran on the pinned version, not inferred.

Model
from followthemoney import Model
from followthemoney.model import Model
Model is exposed at package level; the model submodule is internal.
Entity
from followthemoney import Entity
from followthemoney.entity import Entity
Entity is exposed at package level.
schema
from followthemoney import schema
import followthemoney.schema
schema is a module, import as shown.

Create a Person entity, add properties, validate, and export to dict.

from followthemoney import Model # Load the default data model model = Model() # Create an entity of type 'Person' entity = model.make_entity('Person') entity.make_id('some-unique-id') entity.add('name', 'John Doe') entity.add('birthDate', '1980-01-01') # Validate the entity (raises on invalid) entity.validate() # Export to dict print(entity.to_dict())
followthemoney --version
Debug
Known issues
breakingIn version 4.0, the proxy API was removed. Use model.make_entity instead of direct Entity construction.
fix
Replace `Entity(model, 'Person')` with `model.make_entity('Person')`.
affects: <4.0
breakingSchema changes between minor versions may rename or remove entity types and properties. Always check migration docs.
fix
Run `followthemoney -m` to see current schema, and update code accordingly.
affects: >=3.0
gotchaThe `Entity` object is mutable and shares model state; copying entities with `copy()` does a shallow copy of properties. Use deepcopy for full independence.
fix
Use `copy.deepcopy(entity)` instead of `entity.copy()`.
affects: all
deprecatedThe `followthemoney.cli` namespace and command-line scripts (like `ftm`) are deprecated; use the `followthemoney` module directly.
fix
Use `python -m followthemoney` instead of `ftm`.
affects: >=4.5
Errors
Common errors & fixes
ModuleNotFoundError: No module named 'followthemoney.model'
Importing from submodule incorrectly.
fix
Use `from followthemoney import Model` instead of `from followthemoney.model import Model`.
followthemoney.exceptions.InvalidData: Invalid entity type: 'Organisation'
Entity type name typo or wrong case. Schema uses 'Organization' (with 'z').
fix
Use 'Organization' (US spelling) instead of 'Organisation' (UK spelling).
AttributeError: 'Model' object has no attribute 'Entity'
Trying to access Entity class on Model instance incorrectly.
fix
Use `model.make_entity('Person')` or `from followthemoney import Entity`.
ValueError: Entity ID is required before adding properties
Calling `add()` on Entity before calling `make_id()`.
fix
Always call `entity.make_id('...')` before adding properties.
Upgrade
Version history
4.9.2latest on PyPI · released Jun 12, 2026
Audit
Dependencies
pantomimerequiredType mappings and string normalization
banalrequiredUtility functions (BANAL is a dependency of followthemoney)
pycountryrequiredCountry and language codes
python-dateutilrequiredDate parsing
networkxoptionalGraph algorithms for deduplication and clustering
nomenklaturaoptionalEntity deduplication and name matching
Agent activity
8 hits · last 30 days
node
8
Resources
followthemoney — pip install followthemoney · libregistry