Sanctions overview
What is inside the LinkinLegal sanctions data, the shape of an entity, and when to use search instead of match.
The Sanctions API holds two bodies of data:
- Sanctions lists — people, companies, vessels and aircraft named by an authority. The sources are official lists such as the EU financial sanctions file, the US OFAC SDN list and the UK sanctions list, plus related lists (debarment, export control, disqualification).
- PEP lists — politically exposed persons: office holders, their relatives and their close associates.
The two bodies are kept apart. On GET /sanctions/search and on the entity endpoints you pick one with type=sanction (the default) or type=pep. On POST /sanctions/match you pick one or both with include.
Call GET /sanctions/datasets for the live list of source datasets with a description of each. Call GET /sanctions/countries and GET /sanctions/schemas for the values the filters accept.
The shape of an entity
Every record is an entity. It looks like this:
{
"id": "ru-inn-381205591080",
"caption": "МАРИНА КОНСТАНТИНОВНА ГУЛИНА",
"schema": "Person",
"datasets": ["ann_graph_topics", "ext_ru_egrul"],
"first_seen": "2026-09-17T23:36:34",
"last_seen": "2026-09-19T01:56:29",
"last_change": "2026-09-18T12:56:13",
"target": true,
"properties": {
"name": ["МАРИНА КОНСТАНТИНОВНА ГУЛИНА"],
"firstName": ["МАРИНА"],
"lastName": ["ГУЛИНА"],
"innCode": ["381205591080"]
}
}| Field | Type | What it is |
|---|---|---|
id | string | The stable id of the entity. Store this, not the caption. |
caption | string | The display name of the record. One name, in the spelling of the source. |
schema | string | The kind of entity: Person, Company, Organization, LegalEntity, Vessel, Airplane, Security and others. |
properties | object | A map. Every key holds an array of strings, also when there is one value. |
datasets | array | The source lists this entity comes from. |
target | boolean | true when the entity is itself a subject of a listing. false for a supporting record. |
first_seen | string | When we first loaded the record. |
last_seen | string | When we last saw the record in its source. |
last_change | string | When the record last changed. Data freshness uses this. |
Properties are always arrays
properties.name can hold 40 spellings of one name. properties.birthDate can hold two dates
when the sources disagree. Write your code for the array, never for the first element alone.
The properties you get depend on the source. Common keys are name, alias, birthDate, country, citizenship, gender, address, program, topics, and identifiers such as idNumber, taxNumber, innCode, registrationNumber, leiCode, swiftBic and imoNumber.
GET /sanctions/search returns a smaller entity: id, caption, schema, datasets, last_change and a part of properties. Call GET /sanctions/entities/{id} for the full record, and GET /sanctions/entities/{id}/history for the listing history of that entity (which authority listed it, when it started and when it ended).
Search or match
Both endpoints look for a name, but they answer different questions.
GET /sanctions/search | POST /sanctions/match | |
|---|---|---|
| Question | "Show me records with this text in the name." | "Is this subject on a list?" |
| Input | A text and filters | A subject: name, birth date, country, identifiers |
| Name comparison | The text must appear inside the caption | Every name and alias, with typo tolerance and transliteration |
| Word order | Must be the same | Does not matter |
| Output | A page of records | Up to 25 candidates, each with a score and a match flag |
| Paging | Yes: page, per_page, total | No |
| Decision | Your user reads the list | Your system reads the score |
| Bulk | One name per call | Up to 100 subjects per call |
Use search for a screen where a person types a name and looks at the results, and for browsing a dataset with filters.
Use match for automatic screening: onboarding, payment checks, nightly rescreening of your customer base.
Search reads the caption only
A record has one caption but many names. search for Путин finds the record with that caption;
search for Putin does not find a record whose caption is in Cyrillic. match compares all
names and aliases, so it finds it. Do not build a screening decision on search alone.
Next
Plans and billing
How LinkinLegal API plans work: one monthly plan per API with unlimited calls, who can buy, card and invoice payment, cancellation, and what 402 and 403 mean.
Search
GET /sanctions/search finds records by text in the caption. Every parameter, the filters, sorting, paging, and what the contains match means for you.