OCCRP Aleph: Intelligence Source Guide
Aleph is OCCRP’s search platform over investigative material – company registries, court files, procurement records, sanctions lists, gazettes and leaked document collections – normalised into one entity model. Its defining capability is cross-referencing your own case data against all of it.
Aleph is OCCRP’s search platform over investigative material – company registries, court files, procurement records, sanctions lists, gazettes and leaked document collections – normalised into one entity model. Its defining capability is cross-referencing your own case data against all of it.
At a glance
| Source | OCCRP Aleph |
|---|---|
| Category | Corporate, Ownership & Legal Records › Investigative Leak Archives |
| Homepage | https://aleph.occrp.org/ |
| Machine interface | https://aleph.occrp.org/api/2/ |
| Format | JSON |
| Access | Free registration — API key at no cost |
| Disciplines | Corporate Intelligence, Financial Intelligence |
| Mission domains | Corruption & Governance, Financial Crime |
Investigative data & document search. — as catalogued in the platform’s own source registry.
Aleph is a document and data search engine built for investigative journalism, developed within the Organized Crime and Corruption Reporting Project and released as open-source software that other organisations run their own instances of. It ingests two kinds of material and treats them the same way. The first is structured data – company registries, sanctions and watchlists, procurement awards, land and vehicle registers, court case indexes, gazette notices – mapped into a common entity model. The second is unstructured documents – PDFs, spreadsheets, emails, scanned files, archives – which are text-extracted, put through optical character recognition where needed, indexed, and where possible parsed into entities. The common model is FollowTheMoney, a schema in which people, companies, assets, bank accounts, court cases and the relationships between them – ownership, directorship, membership, family, association, payment – are all first-class typed objects with defined properties. On top of that sits a search interface, per-collection browsing, an authenticated API, a command-line client for bulk work, and the cross-referencing function that compares the entities in one collection against every other collection the user can see. Users can also create private investigations, upload their own material into them, and have it indexed alongside.
The job Aleph does that no register or aggregator does is put the official record and the leaked or scraped record in the same index and let you search across both. A company that is unremarkable in a national registry may appear in a procurement database, a court filing, a leaked corporate services provider's client list and a sanctions listing, and Aleph is where those five appearances become one screen. The cross-reference function is the real product: you upload the entities from your own case – a spreadsheet of names, a list of companies, a set of documents – and the system matches them against the whole index, returning scored candidate matches. That converts a manual, name-by-name, source-by-source process into a batch operation, which is why it is the standard tool in cross-border corruption work. For CORPINT and FININT on sanctions evasion, kleptocracy and organised crime finance, it is also frequently the only route to material that exists nowhere else in structured form, because the underlying documents came from an investigation rather than from a government publishing programme.
Who publishes it, and why that matters
OCCRP is a non-profit investigative journalism network operating across many countries, funded substantially by grants including from government development and democracy-promotion programmes as well as private foundations. That funding model has been the subject of public scrutiny and debate, and it is also materially unstable: shifts in donor government policy have had direct effects on the organisation's resources. You should factor both into your planning – not because it makes the data unreliable, but because a source whose continuity depends on grant cycles is a source you should not build a critical dependency on without mirroring what you can lawfully keep. The software itself is open source, which changes the risk calculus considerably: other organisations run their own instances, and a community fork has emerged with independent development, so the tooling is likely to outlive any particular deployment. The public instance and the datasets in it are a different question from the codebase, and access to the more sensitive collections is a curated, relationship-based decision by OCCRP rather than an entitlement.
Provenance is the first question to ask of any dataset and the one most often skipped. Who collects it, what their incentive is, whether they publish a methodology, and whether they correct the record when they get something wrong all bear directly on how much weight a finding drawn from it can carry.
What a record actually contains
The fields you will be working with, what each one means, and whether it is something you can pivot on. Read the meanings carefully — more analysis is wrecked by misreading a field than by failing to find one, and a field that looks like an observation is often an inference.
| Field | Type | What it means | Pivot value |
|---|---|---|---|
id |
string | Identifier for an entity or document within the index. Entities generated from documents and entities imported from structured data share the same address space, which is what allows them to be linked. | The entity's own page, its relationships, the collection it belongs to, and cross-reference matches against it. |
schema |
enum | The FollowTheMoney type: Person, Company, LegalEntity, Organization, Asset, Vessel, Airplane, RealEstate, BankAccount, Contract, CourtCase, Document, Email, Table, Sanction and the relationship types such as Ownership and Directorship. This determines which properties are meaningful. | Type-filtered search; deciding whether an object is an entity, a relationship or a document before interpreting it. |
collection |
string | Which dataset the object belongs to – a national company registry, a procurement database, a leak, an OCCRP investigation, or your own private investigation. The most important context field in the system. | Provenance assessment, licensing and handling constraints, and the question of what the collection's own coverage and reliability are. |
name |
string | The entity name as it appears in the source, with alternative and transliterated forms held as additional values. Cross-script and transliteration variance is the central data problem in this index. | Name search across collections, and the input to cross-referencing – which is where transliteration handling either works or quietly fails. |
country |
array | Country associations, which may derive from a registration jurisdiction, an address, a nationality or a document's origin. An entity can carry several, and the reason for each is not always distinguishable. | Jurisdictional filtering, sanctions regime applicability, identification of the relevant national register. |
properties |
object | The typed property bag defined by the schema – registration number, incorporation date, address, identifiers, nationality, birth date, IBAN, phone, email, and so on. Population varies enormously by collection. | Deterministic joins on registration numbers and identifiers, which are far stronger than name matching where available. |
text |
string | Extracted document text, from a native text layer or from optical character recognition. This is what full-text search runs over, and its quality determines whether a document is findable at all. | Keyword and phrase search; entity extraction; locating a name inside a scanned annex nobody has read. |
mime_type |
string | The document type. Determines how extraction was performed and therefore how much to trust the text – a native PDF and a photographed page are both indexed, with very different fidelity. | Quality gating; deciding when to open the original rather than relying on extracted text. |
file_name |
string | The original file name, which in leaked corporate collections frequently encodes client names, matter numbers, dates and internal filing conventions that the document body does not. | Structural analysis of a collection; finding sibling documents in the same matter. |
parent |
string | The containing folder, archive or email that a document came from. Context is often decisive – an unremarkable attachment in a revealing email thread means something different in isolation. | Reconstructing the original folder structure; reading a document in the context it was filed in. |
created_at |
timestamp | When the object entered the index, which is not when the document was created or when the underlying event happened. Confusing these is a common error in leak-derived material. | Collection currency assessment; nothing about the real-world timeline of the material. |
dates |
array | Dates extracted from a document or carried on an entity property. Extracted dates are unreliable – they include printing dates, letterheads and unrelated references – while property dates from structured imports are usually sound. | Timeline construction, with the extracted and structured cases treated very differently. |
addresses |
array | Address values on entities and extracted from documents. Formats are wildly inconsistent across collections and countries, and normalisation is partial. | Address clustering across collections – powerful, and the same formation-agent false-positive problem applies as in company registers. |
xref_score |
int | The match score produced when cross-referencing entities in one collection against another. A ranking signal, not a decision, and the threshold at which it becomes meaningful varies by name type and country. | Candidate review queue; never a substitute for reading the underlying records on both sides. |
Coverage — and what is not in it
Aleph is a collection of collections and there is no such thing as its coverage in the singular. Structured datasets skew heavily towards Central and Eastern Europe, the Balkans, the Caucasus, Central Asia and parts of Latin America and Africa – the regions where OCCRP's member centres operate and where national data is hard to reach any other way. Company registries, court indexes, procurement databases and gazettes from those regions are the backbone, alongside global sanctions and watchlist data. Western European and North American coverage is comparatively thin, not because the data is unavailable but because it is available elsewhere. Document collections come from investigations, which means they are deep in specific matters and empty everywhere else. Temporal coverage is entirely collection-dependent: a registry snapshot is current as of its import, a leak is a frozen archive ending on the day the material was taken, and neither updates afterwards unless someone reimports. The practical consequence is that the first question about any result is never how current is Aleph but which collection is this in and when was that collection last refreshed.
Known blind spots
Absence of evidence here is not evidence of absence. These are the conditions under which OCCRP Aleph will not show you something that is nevertheless real:
- The public instance is not the whole system. Substantial and often the most significant collections are restricted to vetted investigative users, and their existence is not always visible, so a negative result from an anonymous or basic account is a weak negative that says nothing about the restricted layer.
- Leaked collections are frozen in time. A corporate services provider's archive ends on the day it was taken, so the absence of a company from it means only that the company was not a client before that date, and the presence of one says nothing about the relationship since.
- Optical character recognition fails silently and unevenly. Poor scans, handwriting, tables, stamps, non-Latin scripts and low-quality photocopies all defeat extraction, and the resulting documents are effectively invisible to search while appearing to be indexed.
- Transliteration is the central unsolved problem. A Russian, Ukrainian, Arabic, Georgian or Chinese name may appear in half a dozen Latin renderings across collections, and cross-referencing on names will miss matches whose only difference is a transliteration convention.
- Entity extraction from documents is approximate. Names, companies and addresses lifted from text carry extraction error, and an extracted entity is a machine's reading of a document rather than a verified fact about the world.
- Registry imports are snapshots, and stale ones are common. A national company registry collection may date from years ago, and it will show a company as it was then with nothing announcing that except the collection's own metadata.
- Absence of a country or a sector means nobody obtained the data, not that nothing exists. Coverage follows the network's investigative footprint and the willingness of sources to supply material, which correlates with journalistic interest rather than with the location of wrongdoing.
- Relationships extracted from documents are weaker than relationships imported from registers, and the interface does not always make the difference obvious, so a directorship inferred from a letterhead can look like a directorship recorded in a register.
- Duplicate entities proliferate across collections by design – the same company legitimately appears in five datasets – and an analyst who does not consolidate will overcount presence and mistake repetition for corroboration.
Write the blind spot into the product. A statement that something “was not observed in OCCRP Aleph” is defensible; a statement that it “did not happen” is not, and the difference is what survives cross-examination.
Access, licensing and what you may do with it
Access model: Free registration — an account or API key, at no cost
Anonymous browsing of the public instance works for basic search and for open collections, which is enough to establish whether the source is relevant to your work. A free account unlocks more, including an API key issued from your profile and the ability to create private investigations and upload your own material. Access to restricted collections is not self-service: it is granted by OCCRP to vetted users, predominantly working investigative journalists, on the basis of who you are and what you are doing, and applying means making a case rather than clicking a button. Programmatic access uses the API key in an authorization header against a versioned API, and there is a maintained command-line client that is the sensible route for bulk upload, bulk entity streaming and cross-referencing at scale rather than hand-rolling requests. Because the software is open source, a third option exists that is often the right one for institutional users: run your own instance, load your own material and the public datasets you are entitled to, and keep sensitive case data inside your own perimeter entirely.
Licence
There is no single licence and assuming one is a serious mistake. Each collection carries its own provenance and its own conditions: some are open government data, some are scraped from public registers whose terms restrict reuse, some are contributed by partner organisations under specific agreements, and some are leaked material whose legal status varies dramatically by jurisdiction. The software is open source under its own terms and the FollowTheMoney model and libraries are separately published. What you may do with a search result therefore depends entirely on which collection it came from, and the collection metadata is where you look. Redistribution of bulk data from restricted collections is generally not permitted and may breach the terms on which access was granted. Quoting a document in published work is a decision that involves the source's terms, your jurisdiction's law on handling leaked material, and your own editorial standards – three separate questions that must not be collapsed into one.
Rate limits and fair use
Published quotas should not be assumed and the operating principle is restraint: this is a non-profit's infrastructure serving journalists on grant funding. Use the command-line client for bulk operations, because it is designed for streaming entities and handles pagination and retries properly, whereas hand-rolled crawling of search endpoints is both slower and heavier on the service. Cross-referencing is computationally expensive on the server side, so run it against a well-prepared entity set rather than iteratively against half-formed ones. Cache results, because collections change rarely. Identify yourself in your user agent with a contact address. If your requirement is continuous or large, or if you intend to keep a local copy of substantial parts of the index, the right answer is usually to run your own instance rather than to extract from theirs, and OCCRP would generally rather help you do that than absorb the traffic.
Licensing changes, and it changes without warning. A dataset that was free for research this year may not be free for commercial or evidential use next year. Confirm the current terms before you build a dependency on it, and record the terms you relied on alongside the data — the licence in force at the time of collection is part of the provenance.
Collecting it
How OCCRP Aleph is actually pulled, in the order you would set it up. Prefer the bulk or export interface over per-item lookups wherever one exists: it is kinder to the publisher, faster for you, and gives a reproducible snapshot rather than a series of point-in-time answers you cannot reconstruct later.
| Method | Format | Cadence | Notes |
|---|---|---|---|
| Interactive search | HTML | on demand | Where every investigation should start. Search across collections, then filter by schema, country and collection to understand which datasets actually hold your subject before doing anything programmatic. |
| Entity and document API | JSON | on demand; collections update irregularly | Query entities by name, property or identifier, retrieve documents and follow relationships. Filter by schema and collection server-side rather than pulling broadly and sorting locally. |
| Cross-referencing | JSON | per investigation, re-run when collections change | The distinctive capability. Upload your case entities into a private investigation and match them against everything you can see, returning scored candidates for human review. This is what the platform is for. |
| Private investigation upload | bulk | as material arrives | Load your own documents and spreadsheets so they are extracted, indexed and matchable alongside the public data. Consider carefully whether the material should leave your perimeter before doing this on a hosted instance. |
| Command-line client | JSON|bulk | scripted | The maintained tool for bulk upload, entity streaming and automated cross-referencing. Use it rather than writing your own crawler; it handles the API's shape correctly and is far kinder to the service. |
| Self-hosted instance | bulk | continuous, under your control | Run the open-source software yourself, load the datasets you are entitled to, and keep case material inside your own environment. The correct answer for institutional users with confidentiality obligations. |
Ingesting it into the platform
Every step below is idempotent and cursor-based: interrupt one and it resumes from where it stopped rather than duplicating rows or losing progress. Collection is recorded per source, so a feed that quietly stops publishing shows up as a stale timestamp instead of silently thinning your coverage.
- Register each collection as its own source — In sources.php, treat the Aleph collections you actually use as distinct sources with their own provenance, currency and licence notes rather than registering Aleph as one thing. A registry import and a leaked archive have nothing in common except the interface.
- Preserve the FollowTheMoney schema on import — Keep the entity type and typed properties intact in ingest.php rather than flattening everything into a generic record. The schema is what distinguishes a Company from an Ownership relationship from a Document, and losing it destroys the ability to reason about the graph.
- Carry collection and provenance into every record — Every ingested entity should retain the collection it came from and, for document-derived entities, the document identifier. Without that, a claim in a case file cannot be traced back to whether it came from a register or from a machine reading a scan.
- Separate extracted entities from imported ones — Mark entities produced by extraction from document text distinctly from entities imported from structured datasets. They have different reliability and the distinction disappears the moment they sit in the same table without a flag.
- Normalise names with transliteration variants retained — Store the original script form, the source's Latin form and your own normalisation as separate values. Discarding the original is irreversible and it is what you will need when a match fails and you have to work out why.
- Resolve entities against registers and sanctions data — Run resolve-everything.php and screen through sanctions.php, using registration numbers and identifiers where present because they beat name matching decisively. Store confidence rather than overwriting the source values.
- Build the relationship graph with typed edges — Load ownership, directorship, membership and payment relationships into link-analysis.php as typed edges retaining their source collection, so that a register-backed ownership edge is visually distinguishable from one inferred from a document.
- Attach to the case with handling constraints recorded — When leak-derived material enters cases.php, record the collection, the access basis on which you obtained it and any handling or publication restrictions, because those constraints must travel with the material rather than living in someone's memory.
Registered sources and their last-collected state are listed in sources.php, and the scheduled chain that keeps them current is in automation.php.
How it is wrong, and how to tell
Every dataset is wrong in characteristic ways. Knowing which ways is the difference between using a source and being used by one, and it is the part of source evaluation most often skipped because it is the part that takes work.
Quality is a property of the collection, not of the platform, and the first analytical act is to identify which collection a result came from and what that implies. Structured imports from official registers inherit the register's own reliability – filing-based, unverified declarations, current as of the import date. Sanctions and watchlist collections are as good as their upstream publishers, which is generally very good. Procurement and court collections vary with the national publishing regime. Document collections are a different matter entirely: the documents themselves are usually authentic, but what they show is a snapshot of a particular firm's or institution's records, extraction from them is imperfect, and any entity or relationship derived from text carries machine error on top of whatever the document actually said. The platform's own engineering – the schema, the indexing, the cross-referencing – is competent and open to inspection, which is a meaningful advantage over closed investigative databases. The honest overall judgement is that Aleph is excellent at surfacing material and neutral about whether that material is true; the verification burden sits entirely with you and is heavier here than with any register-based source.
Characteristic false positives
- Cross-reference scores are read as identifications. A high score means two name strings and some properties resemble each other, which for common names in large collections happens constantly. Every match is a candidate for human review, and treating a score threshold as an answer will merge unrelated people at scale.
- Transliteration variants split one entity into several, so an analyst concludes that a person appears in two collections when they appear in five, and the three missed appearances were the ones that mattered.
- Extracted entities are mistaken for asserted facts. A company name recognised in a document body means the string appeared on a page, not that the company was party to anything, and letterheads, distribution lists and boilerplate generate enormous numbers of spurious associations.
- Repetition across collections is mistaken for corroboration. The same registry record imported into three datasets, or the same document circulating in two archives, produces multiple hits that all descend from one original observation.
- Stale registry snapshots are read as current. A company shown as active in a collection imported four years ago tells you about four years ago, and nothing in a search result makes that obvious unless you check the collection metadata.
- Leak absence is read as evidence. A person or company not appearing in a leaked archive means they were not in that firm's files up to the date of the leak, which is a narrow statement frequently reported as though it were a general one.
- Optical character recognition errors produce plausible false entities – a misread name that resolves to a real and different person, or a corrupted registration number that matches something genuine. These are the hardest false positives to catch because they look correct.
- Address matching clusters unrelated entities through formation agents, registered offices and shared serviced buildings, exactly as it does in company register data, and at Aleph's scale the resulting clusters can be enormous.
- Relationship direction and role are lost in summarisation. An ownership edge does not always record who owns whom in the way an analyst assumes when skimming, and getting the direction wrong inverts the entire structure of a case.
None of these make the source unusable. They make it a source that requires corroboration before an assertion built on it goes into a product, which is true of every source and admitted by few.
Ageing
Nothing in Aleph updates itself. Every collection is a snapshot taken at an import, and it stays exactly as it was until somebody reimports it – which for many datasets means years. This is the most important operational fact about the platform and the one most often forgotten because the interface feels live. A registry collection ages exactly as company data does: addresses move, directors change, companies dissolve, and none of it propagates. A leak does not age in the sense of becoming wrong, because it was always a record of a fixed period, but the inference an analyst draws from it ages badly, since a relationship documented in 2016 may have ended in 2017. Sanctions collections age fastest in consequence terms, since a listing added or removed last month changes a compliance answer immediately. The detector is always the same: read the collection metadata for when it was last updated, and treat the entity as a historical observation dated accordingly. For anything that will be relied upon, take the finding to the live source – the current register, the current sanctions list – and re-verify.
What this source feeds
A source is only worth what it lets you conclude. These are the disciplines that collect through it, the mission domains it serves and the data points it yields — every one is a tag, so you can follow any thread from here into the rest of the library.
Collected by these intelligence disciplines
Serves these mission domains
Yields these data points
How each sector uses OCCRP Aleph
The same dataset is worked very differently depending on who you are, what authority you hold, and what you are ultimately producing. A military analyst is supporting a commander’s decision; a journalist is meeting a publication standard; an NGO caseworker is protecting a person. The records are shared — the constraints, thresholds and outputs are not.
🎖 Military and defence
The relevant applications are counter-proliferation, sanctions enforcement support and supply chain risk in regions where official data is unobtainable or unreliable. Aleph is often the only place a company from a post-Soviet or Balkan jurisdiction appears in structured form, and procurement collections can reveal state contracting relationships that no Western database captures. For end-user verification and dual-use export questions, cross-referencing a consignee list against the index is a fast way to surface a match against a sanctioned entity, a known intermediary or a company appearing in an investigative archive. Two hard limits: nothing here is classified or current in the way an operational picture requires, and the material's provenance means it supports assessment rather than targeting. Treat it as an open-source enrichment layer over entity lists, verified elsewhere before it informs any decision with consequences.
🕵 National intelligence
For FININT and CORPINT on kleptocracy, sanctions evasion and organised crime finance, this is one of the highest-yield open collection routes available, precisely because it holds material that governments do not publish and commercial providers do not license. The cross-reference function makes it a bulk enrichment tool rather than a lookup: an entity list from any other source can be matched against the index in one operation. The tradecraft that matters is provenance discipline – recording which collection every finding came from, distinguishing register-backed facts from document-derived inferences, and dating every observation to its collection's import. The second consideration is the source's own position: OCCRP is a journalism organisation with its own funding relationships and its own editorial mission, and an intelligence consumer should understand that the collection priorities reflect that mission rather than any requirement of yours.
👮 Law enforcement
Investigators use Aleph for exactly what it is good at – finding out that a subject appears in a foreign register, a procurement award, a court index or an investigative archive that would otherwise take months of mutual legal assistance to discover. That makes it a powerful lead generator in transnational corruption and money laundering cases. It is not evidence and cannot be treated as such: collections are third-party imports of variable provenance, leaked material has contested legal status that varies sharply by jurisdiction, and the chain of custody is not one a court will accept. Establish the lawful basis for accessing and holding leak-derived material in your jurisdiction before you start, not after. Then use findings to direct formal process, obtaining the authoritative record through proper channels and building the case on that rather than on the archive.
🔍 Private investigation and corporate security
For cross-border due diligence this fills the gap that commercial databases leave in emerging markets and post-Soviet jurisdictions, where a subject's corporate footprint is otherwise nearly invisible. A single search can reveal registrations, procurement awards, litigation and appearances in leaked corporate service provider records. The professional constraints are unusually sharp here. Much of the highest-value material is in restricted collections that you as a private investigator will not have access to, and should not seek by misrepresenting your role. Leak-derived material raises real questions about lawful possession and about what you may disclose to a client in your jurisdiction. And the reporting standard is the same as always: verify against the primary record, date every observation to its collection, and never present a document-extracted association as an established relationship.
📰 Journalism and OSINT media
This is a tool built by journalists for journalists and it shows. The workflow it supports – upload the documents you have, index them, cross-reference against everything else, follow the matches – is the actual shape of cross-border investigative work, and the private investigation feature means your own material becomes searchable alongside the public corpus. Access to restricted collections is available to working journalists through OCCRP and is worth pursuing early rather than mid-story. The publication discipline is heavy: verify every document independently, understand the legal position on handling leaked material in your jurisdiction and in your subject's, consider whether naming individuals who appear incidentally in a leak is justified, and never publish on the basis of an extracted entity match without reading the underlying document. Also weigh whether uploading source material to a hosted platform is compatible with your obligations to a source.
🌍 NGO, humanitarian and human rights
Anti-corruption, human rights and environmental organisations use Aleph to trace the corporate structures behind extraction, land acquisition, arms movements and state capture in exactly the regions where official records are hardest to obtain. For documentation work the appeal is that structured registry data and investigative documents sit in one place, so a chain from a permit to a company to an owner to a political figure can sometimes be assembled without leaving the platform. Two responsibilities attach. Leaked material carries risk for the people named in it, including people who are incidental rather than culpable, and a documentation standard should require that anyone named in a published output has been independently verified and is genuinely relevant. And access to restricted collections is granted for a purpose; using it outside that purpose damages the resource for everyone who depends on it.
🎓 University and research
For researchers in corruption studies, political economy, international law and data journalism, Aleph is both a research corpus and an object of study. The FollowTheMoney model is a well-documented ontology for financial crime data and is worth engaging with regardless of whether you use this instance. The corpus itself demands explicit methodological handling: collections are non-random, assembled through investigative interest and source availability, and their import dates vary by years, so any quantitative claim needs collection-level metadata treated as data. Ethics review is not optional where leaked material naming private individuals is involved, and most institutional review processes will want a clear position on lawful basis and on minimisation. Running a self-hosted instance is often the right approach for reproducibility, since it lets you fix a snapshot and document exactly what was in it.
Playbook: working OCCRP Aleph end to end
A repeatable sequence from first pull to finished product. Each phase states what you are trying to establish, not merely what to click — the objective is a defensible chain of reasoning, not a completed checklist.
Phase 1 — Establish what access you actually have
Before concluding anything from a search, know whether you are seeing public collections only or also restricted ones. A negative result from an anonymous session is nearly meaningless, because the collections most likely to hold sensitive material are the ones you cannot see. If your work justifies it, apply for access before you start rather than after a null result.
Phase 2 — Read the collection list before you read any result
Spend the first session understanding which datasets exist for your countries and sectors, when they were last updated, and what their provenance is. Every subsequent interpretation depends on this, and analysts who skip it end up making claims about coverage that the collection metadata would have contradicted immediately.
Phase 3 — Search in the original script first
For any non-Latin-script subject, search the original form before the transliteration, then collect every Latin rendering you find and search those too. Transliteration variance is the single largest cause of missed matches in this index, and handling it manually at the start is cheaper than discovering the gap at the end.
Phase 4 — Filter by schema before you filter by anything else
Decide whether you are looking for a Person, a Company, a Document or a relationship, and constrain the search accordingly. Undifferentiated results mix a company record, a mention in a PDF and an ownership edge into one list, and they mean entirely different things.
Phase 5 — Build a clean entity list before cross-referencing
The cross-reference function is only as good as what you feed it. Normalise your names, include registration numbers and identifiers wherever you have them, add countries and dates, and remove obvious noise. Matching on identifiers where they exist is dramatically more reliable than matching on names.
Phase 6 — Review every match by hand
Work the candidate list from the top, opening both sides of each match and deciding on the evidence rather than the score. Record the decisions, including the rejections, because a documented rejection is what stops the same false match being re-adopted three weeks later by a colleague.
Phase 7 — Distinguish register facts from document mentions in your notes
As you extract findings, tag each one with whether it came from a structured import or from text in a document. This distinction is the backbone of any defensible product built on this source and it cannot be reconstructed afterwards from the notes of someone who did not make it.
Phase 8 — Open the original document, always
Never rely on extracted text or an extracted entity for anything load-bearing. Open the file, read the surrounding pages, check whether the name appears as a party or in a distribution list, and look at what the file name and folder tell you about the context it was filed in.
Phase 9 — Re-verify against live sources
Take every finding that matters to a current authority – the national register, the live sanctions list, the court itself. Collections are snapshots and your conclusion needs to be about now, not about the year somebody last ran an import.
Phase 10 — Consolidate duplicates before drawing the network
The same company appearing in five collections is one company. Consolidate before building a graph, or you will produce a diagram whose density reflects how many datasets you searched rather than how connected the subject is.
Phase 11 — Decide the legal and ethical position before you publish or disseminate
For leak-derived material, settle in writing whether you may lawfully hold it, whether you may disclose it, and whether the individuals named are legitimately of public interest. These are three separate questions and the answers differ by jurisdiction, by collection and by person.
Phase 12 — Record provenance in the finished product
State which collections were searched, when each was last updated, that coverage reflects an investigative network's footprint rather than a systematic survey, and which findings were independently verified. Without this, a reader will assume comprehensiveness the source never claimed.
The platform ships this as a step-checked workflow in playbooks.php, so progress is recorded against a case rather than held in someone’s head.
What to pair it with
No single source carries a finding. These are the datasets that corroborate, extend or contradict this one — and a source that contradicts is worth more than one that agrees, because it is the only thing that will tell you when you are wrong.
| Source | Relationship | What it adds |
|---|---|---|
| OpenSanctions | extends | Consolidated and continuously updated sanctions and PEP data built on the same underlying entity model, and the live check that a snapshot in a collection cannot provide. |
| OpenCorporates | corroborates | Independent register-derived company data with retrieval dates, useful for confirming that an entity found in a document actually exists as a registered legal person. |
| ICIJ Offshore Leaks Database | corroborates | Offshore entities, officers and intermediaries from the major leak investigations, overlapping in subject matter and providing a second index over related material. |
| EU Business Registers (BRIS) | corroborates | The live, authoritative check on any European company found in a collection snapshot, returning the official identifier and the register of record. |
| CourtListener | extends | US litigation involving the same entities, which frequently documents under oath the relationships that an offshore archive only implies. |
| LittleSis | extends | Adds the American influence and affiliation layer around entities that appear in Aleph mainly through their corporate and financial footprint. |
| FollowTheMoney | prerequisite | The data model and its libraries. Understanding the schema is a prerequisite for using the index properly and for mapping anything into or out of it. |
| OCCRP | prerequisite | The investigative work that produced many of the document collections. Reading the published stories is how you understand what a collection is and why it exists. |
| OpenAleph | extends | A community-maintained continuation of the open-source platform, relevant if you intend to self-host rather than depend on a single operator's instance. |
Legal, ethical and operational constraints
This is the most legally sensitive source in this category and the questions must be settled before use, not after. First, possession. Leaked material has a legal status that varies enormously between jurisdictions: journalists in many countries enjoy protections that other professions do not, and in some jurisdictions holding or processing certain leaked datasets is unlawful regardless of purpose. Establish your position in writing, for your organisation, in your jurisdiction. Second, data protection. Collections contain very large volumes of personal data about identifiable individuals, much of it about people who are incidental to any wrongdoing, and holding it engages lawful basis, purpose limitation, minimisation and retention obligations that are not answered by the data having been published somewhere. Third, dissemination. What you may access under an access grant is not necessarily what you may redistribute, and restricted-collection terms typically prohibit onward sharing. Fourth, harm. Publishing or circulating a name from a leak can expose someone to prosecution, dismissal or violence in an authoritarian jurisdiction, and a proportionality assessment naming the specific public interest is the minimum standard. Fifth, defamation: an appearance in a document is not evidence of conduct.
Operational security
Your queries are logged and, if you are using an account, attributable to you personally. That matters more here than at most sources, because the subjects of these collections include state-linked actors with the capability and motive to learn who is looking at them, and because an access grant ties your identity to a named organisation. Uploading material to a private investigation on a hosted instance places your source documents on infrastructure you do not control, which is a serious consideration if you have obligations to a source or if the material identifies vulnerable people – and it is the strongest argument for self-hosting. Consider also the pattern: a burst of searches on one individual around the time of an enforcement action or a publication is legible. Where the work is sensitive, use a neutral network path, spread queries, prefer running your own instance with your own copy of the datasets you are entitled to, and keep the most sensitive case material out of any third-party system entirely.
Two rules that hold regardless of jurisdiction. Collection that is lawful is not automatically proportionate, and a dataset assembled for one purpose does not carry consent for another. Where the records concern identifiable people, the question is not only whether you may hold the data but whether holding it serves the purpose you are accountable for.
Is it earning its place?
Sources accumulate. Feeds get added during an incident and are never reviewed again, and a decade later the pipeline is carrying dead weight that nobody dares remove. These are the measures that show whether OCCRP Aleph is contributing anything, and they are worth baselining now so the answer is available later.
- Cross-reference precision, measured as the share of candidate matches above your working threshold that survive manual review, tracked per country because it varies enormously with name structure and script.
- Proportion of findings traced back to an opened original document rather than to extracted text, which is the clearest indicator of whether verification discipline is holding under deadline.
- Median age of the collections your conclusions rest on, since a case built on imports that are four years old is making claims about the past while appearing to describe the present.
- Share of entities resolved via registration numbers or identifiers rather than names, which is the strongest available predictor of how much of your matching is reliable.
- Number of findings unavailable from any other source in the catalogue, which is the honest test of whether this platform is earning its place rather than duplicating register data you already hold.
- Duplicate consolidation rate – how many raw hits collapse into how many distinct real-world entities – because the ratio tells you how much apparent corroboration is repetition.
- Count of findings independently re-verified against a live authority before dissemination, which should approach one hundred per cent for anything leaving the organisation.
- Documented handling decisions for leak-derived material per case, evidencing that the legal and ethical position was considered rather than assumed.
Beware of volume. Indicator counts rise easily and say almost nothing. Unique contribution — findings this source produced that no other source in your stack would have — is the measure that matters, and it is usually far lower than anyone expects.
Tradecraft notes
The distinctions that separate a competent analyst from a fast one:
- The collection is the context. Before interpreting any result, know which dataset it came from, what its provenance is and when it was imported; the same fact means different things depending on whether it came from a register, a procurement portal or a leaked archive.
- A cross-reference score is a ranking, not a decision. Work the list by hand, look at both records, and record your rejections as carefully as your acceptances.
- Search the original script and every transliteration you can generate. Missed matches in this index are overwhelmingly transliteration failures, and they are silent – you never see what you did not find.
- A name in a document is not a party to it. Distribution lists, letterheads, cover sheets and boilerplate generate vast numbers of mentions that carry no relationship at all, and extraction cannot tell the difference.
- Nothing here updates. Every collection is a snapshot, and the discipline of dating each finding to its collection's import is what stops a case from silently describing a world that has moved on.
- Repetition is not corroboration. The same underlying record imported into several collections produces several hits, and independent confirmation means a genuinely independent observation, not a second copy.
- Open the file. Extracted text is a convenience; the document is the evidence, and its layout, stamps, folder position and file name frequently carry meaning that extraction discards entirely.
- Self-host when confidentiality matters. The software is open, and putting your own case material into someone else's instance is a decision that should be made deliberately rather than by default because it is convenient.
- Settle the legal position first. This is the one source in this category where using it wrongly can be unlawful rather than merely unreliable, and the answer depends on your jurisdiction, your profession and the specific collection.
Questions analysts actually ask
Can anyone use Aleph?
Anyone can browse the public instance and search open collections. A free account gives you an API key and private investigations. Access to restricted collections is granted by OCCRP to vetted users, predominantly working investigative journalists, on a case-by-case basis – so a null result from an ordinary account is a weak negative rather than an answer.
What is cross-referencing and why does it matter?
It takes the entities in one collection – typically your own uploaded case data – and matches them against every other collection you can see, returning scored candidates. It converts a manual, name-by-name search into a batch operation, which is why it is the platform's defining feature. The scores are a queue for human review, never an identification.
How current is the data?
It is not current in any general sense. Every collection is a snapshot from the date it was imported, and many are years old. Check the collection metadata for its last update, date every finding accordingly, and take anything that matters to a live source before relying on it.
Is it legal for me to use leaked material found here?
That depends on your jurisdiction, your profession and the specific collection, and it is a real question rather than a formality. Journalists in many countries have protections that other professions do not; in some jurisdictions holding certain datasets is unlawful regardless of purpose. Get a written position from your legal adviser before you begin, not after.
Why can I not find a company I know exists?
Most likely nobody has obtained the relevant dataset, or the collection holding it is restricted, or the company's name is transliterated differently from your search, or the document is a scan whose text extraction failed. Coverage follows an investigative network's footprint, so absence is a statement about collection rather than about the world.
Should I upload my own documents?
It is the intended workflow and it makes your material searchable and matchable alongside everything else, which is powerful. But it places your source documents on infrastructure you do not control. If you have obligations to a source, or the material identifies vulnerable people, run your own instance instead – the software is open source precisely so that you can.
What is FollowTheMoney?
The data model underneath everything: a schema in which people, companies, assets, accounts, court cases and the relationships between them are typed objects with defined properties. It is separately documented and used by other tools including sanctions datasets, so learning it pays off beyond this platform.
Can I rely on an Aleph result in a compliance decision?
As a signal to investigate, yes. As the basis for a decision, no. Collections are snapshots of variable provenance, entity matching is approximate, and document-derived associations are machine inferences. Verify against the live authoritative source – the current register, the current sanctions list – and record that verification.
What happens if OCCRP loses funding?
A real question rather than a rhetorical one, given how dependent the organisation has been on grant and government-adjacent funding. The software is open source and a community-maintained continuation exists, so the tooling is durable. The public instance and its collections are a separate matter, which is a strong argument for self-hosting and for lawfully retaining what your cases depend on.
Standards, formats and interoperability
What this source speaks natively, and what it has to be translated into before a partner can consume it. Work that arrives in a recognised format is easier to defend, easier to hand over and easier to automate against:
- FollowTheMoney is the entity model underlying the whole platform, defining schemas for Person, Company, Asset, BankAccount, CourtCase and typed relationships such as Ownership and Directorship, with a documented property type system.
- The schema's relationship types are first-class entities rather than edges in a property graph, which is what allows an ownership stake to carry its own dates, percentages and sources.
- Optical character recognition and text extraction pipelines underpin document search, and their known failure characteristics on scans, handwriting, tables and non-Latin scripts are part of the effective data model.
- Sanctions and watchlist collections align with the same entity model as OpenSanctions, which is what makes screening across the two coherent rather than a name-matching exercise.
- ISO country codes and jurisdiction identifiers are used throughout for filtering, and are the join to any geographic taxonomy you already maintain.
- The open-source codebase and the maintained command-line client are the authoritative specification of the API's behaviour, and reading them is more reliable than any secondhand endpoint description.
- The platform exports entities, relationships and documents in STIX 2.1, MISP, CSV, JSON and JSONL, so an investigation assembled here moves into shared case structures without re-keying.
References
Primary documentation and authoritative references for this source. Publishers revise and retire material, so treat the retrieval date as part of the citation and re-check before relying on any of it in a formal product.
- OCCRP Aleph — OCCRP. The public instance. Start by browsing the collection list for your countries and sectors rather than by searching a name.
- Aleph documentation — OCCRP. How the platform works, how to use the API and command-line client, and how collections and access levels are structured. Read before writing any code against it.
- FollowTheMoney — OCCRP and contributors. The entity model and its libraries. Essential reading for anyone mapping investigative data into or out of the platform, and useful well beyond it.
- OCCRP — Organized Crime and Corruption Reporting Project. The investigative network behind the platform. Its published work explains why particular collections exist and what they were assembled to support.
- OpenAleph — OpenAleph community. A community-maintained continuation of the open-source platform, relevant to anyone considering self-hosting rather than depending on one operator's instance.
- OpenSanctions — OpenSanctions. Continuously updated sanctions and PEP data on the same entity model, and the live check that any collection snapshot cannot provide.
- OpenSanctions documentation — OpenSanctions. Practical guidance on entity matching, screening thresholds and the same underlying schema, which transfers directly to cross-referencing work here.
- ICIJ Offshore Leaks Database — International Consortium of Investigative Journalists. A parallel index over offshore leak material, useful as an independent second look at entities found here.
- OpenCorporates — OpenCorporates Ltd. Register-derived company data with retrieval dates, for confirming that an entity in a document corresponds to a real registered legal person.
- European e-Justice Portal — European Commission. The live authoritative check for European companies surfaced in a collection snapshot, returning the official identifier and the register of record.
- OCCRP Data — OCCRP. The organisation's wider data presence, useful context on how its datasets are organised and published.
Link integrity: every reference above was verified with a live request when this page was generated. Where a publisher had moved or withdrawn a document, the link was repointed at a preserved copy in the Internet Archive and marked as archived. Anything with no reachable copy anywhere had its link removed rather than left to rot — the source is still credited, it simply cannot be linked.
Put it into practice
The Quantus Intel threat intelligence platform operationalises this source: it preserves the FollowTheMoney schema and the originating collection on every imported entity, keeps document-extracted inferences visibly separate from register-backed facts, and forces a live re-verification step before a snapshot finding can leave the case.. Browse the full source catalogue, or follow any tag above into the rest of the library.