Sanctions List Screening API: EU, UN, OFAC SDN, UK avatar

Sanctions List Screening API: EU, UN, OFAC SDN, UK

Pricing

from $2.55 / 1,000 name screeneds

Go to Apify Store
Sanctions List Screening API: EU, UN, OFAC SDN, UK

Sanctions List Screening API: EU, UN, OFAC SDN, UK

Bulk-screen people and companies against official EU, UN, OFAC SDN and UK sanctions lists: fuzzy match score, matched alias, programs, birth dates, source link, new-listing alerts. No API key, no login. MCP-ready for AI agents. Pay per result, no monthly rental. $3 per 1,000 names screened.

Pricing

from $2.55 / 1,000 name screeneds

Rating

0.0

(0)

Developer

ABM

ABM

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Security

Limited permissions

Share

Sanctions List Screening API: EU, UN, OFAC SDN & UK name check

$3 per 1,000 names screened ($0.003 per name). No subscription, no API key, no login. Blank, duplicate and invalid inputs are free, and so is any run where an official list could not be downloaded.

This Actor screens people and companies in bulk against the official consolidated sanctions lists:

KeyListPublisher
euEU consolidated list of persons, groups and entities subject to financial sanctions (FSF)European Commission
unUN Security Council Consolidated ListUnited Nations
ofacSpecially Designated Nationals and Blocked Persons (SDN)US Treasury, OFAC
ofac-nonsdnOFAC consolidated non-SDN lists (SSI, NS-MBS, CAPTA…)US Treasury, OFAC
ukUK Sanctions List (the only official UK list since 28 January 2026)UK FCDO

For each name it uses fuzzy matching (transliteration, word order, legal suffixes such as LLC / OOO / GmbH, typos) and returns a 0–1 score, the alias that matched, the sanctions programmes, dates of birth, nationalities, listing date and a link to the official record. A new listings mode reports people and entities added to the lists, for daily schedules.

What you get

  • One dataset row per screened name: status (match / possibleMatch / noMatch), topScore, matchCount, best match, and the list of matches.
  • Each match carries list, listId, referenceNumber, name, matchedAlias, score, matchType, entityType, programs, listedOn, birthDates, nationalities, countries, remarks and sourceUrl.
  • listVersions: the publication date of each list you were checked against, which you can keep as audit evidence.
  • summary: a one-sentence plain-text verdict, ready to pass to an LLM or paste into a case note.
  • A CSV report (screening-report.csv, one row per match) in the run's key-value store.
  • Names in any script work: Latin, Cyrillic (Евгений Пригожин), Arabic, Chinese… The input and every list alias are compared both in their original script and transliterated to Latin.

How much does it cost?

Pay per event: screening-checked = $0.003 for each unique name screened against the lists, whether it is clear or a hit, because a "no match" is the compliance evidence you need. new-listing-found = $0.003 for each new listing reported in monitoring mode.

VolumePrice
100 names (one supplier onboarding batch)$0.30
1,000 names$3.00
10,000 customers, rescreened monthly$30.00 per month
Daily new-listings alert, ~20 new listings per weekabout $0.25 per month

There is no monthly rental. Blank lines, duplicates (wagner group = Wagner Group) and inputs with no letters or digits are skipped for free. If a selected list cannot be downloaded, the run stops and nothing is charged (see failOnListError). The Actor respects your maximum charge per run: it stops cleanly when the budget is used up and never returns unpaid results.

Input

{
"mode": "screen",
"names": ["Wagner Group", "Acme Trading LLC", "Евгений Пригожин"],
"lists": ["eu", "un", "ofac"],
"threshold": 0.85,
"entityType": "any",
"maxMatchesPerName": 5
}
FieldDefaultMeaning
modescreenscreen = check names; newListings = report recent additions to the lists
names / namesText–names to screen (array, or one per line pasted from a spreadsheet)
listseu, un, ofacany of eu, un, ofac, ofac-nonsdn, uk
threshold0.85minimum score (1.0 = exact name only, 0.75 = broad)
entityTypeanyperson, entity (organisations, vessels, aircraft) or any
maxMatchesPerName5best records returned per name
onlyNewfalsescheduled runs: only names with a match not seen before, or only listings added since the last run
newListingsDays7new listings mode: EU / UN / UK records listed in the last N days
stateKeydefaultseparate memory for each schedule or portfolio
cacheHours6reuse lists already downloaded in your account for this many hours (0 = always download)
failOnListErrortruestop at no charge if a list is unavailable, instead of screening against the other lists

Output (one screened name)

{
"recordType": "screening",
"inputName": "Wagner Group",
"normalizedName": "wagner group",
"status": "match",
"topScore": 1.0,
"matchCount": 2,
"bestMatchName": "Wagner Group",
"bestMatchList": "eu",
"bestMatchPrograms": ["RUS", "LBY"],
"matches": [
{
"list": "eu",
"listId": "7383",
"referenceNumber": "EU.7383.42",
"name": "Wagner Group",
"matchedAlias": "Wagner Group",
"score": 1.0,
"matchType": "exact",
"entityType": "entity",
"programs": ["RUS", "LBY"],
"listedOn": "2021-12-13",
"birthDates": [],
"nationalities": [],
"countries": ["RUSSIAN FEDERATION"],
"remarks": "Unincorporated Russia-based private military entity…",
"sourceUrl": "https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=…",
"isNew": null
},
{
"list": "ofac",
"listId": "25393",
"name": "PMC WAGNER",
"matchedAlias": "WAGNER GROUP",
"score": 1.0,
"matchType": "exact",
"entityType": "entity",
"programs": ["UKRAINE-EO13660", "RUSSIA-EO14024"],
"sourceUrl": "https://sanctionssearch.ofac.treas.gov/Details.aspx?id=25393"
}
],
"listsChecked": ["eu", "un", "ofac"],
"listsFailed": [],
"incomplete": false,
"listVersions": {"eu": "2026-10-23", "un": "2026-10-22", "ofac": "2026-10-20"},
"threshold": 0.85,
"checkedAt": "2026-10-24T08:00:00Z",
"summary": "Wagner Group: match - 2 record(s) scored >= 0.85. Best: \"Wagner Group\" on EU (RUS, LBY), score 1.0, via alias \"Wagner Group\"."
}

(Values shown are illustrative; IDs and dates come from the live lists.)

A clear name looks like this: {"inputName": "Acme Trading LLC", "status": "noMatch", "topScore": 0.0, "matchCount": 0, "matches": [], "summary": "Acme Trading LLC: no match >= 0.85 in EU, UN, OFAC (versions: eu=2026-10-23, un=2026-10-22, ofac=2026-10-20)."}

A new listing (mode newListings):

{
"recordType": "newListing",
"list": "eu",
"listId": "171234",
"name": "Example Shipping Ltd",
"aliases": ["Example Shipping Ltd", "ООО Пример Шиппинг"],
"entityType": "entity",
"programs": ["RUS"],
"listedOn": "2026-10-21",
"reason": "listedWithinDays",
"sourceUrl": "https://eur-lex.europa.eu/…",
"summary": "New on EU (listedWithinDays): Example Shipping Ltd [entity], programs RUS, listed 2026-10-21."
}

Use cases

1. KYC onboarding at a payment company: screen every new merchant

A compliance analyst at a fintech or payment institution screens the 50 to 300 merchants and beneficial owners signed up each day before they are activated.

Input:

{"names": ["Sovcomflot", "Ivan Petrov", "Brightline Logistics FZE", "Alisher Usmanov"], "lists": ["eu", "un", "ofac", "uk"], "threshold": 0.85, "maxMatchesPerName": 3}

Result extract:

[{"inputName": "Alisher Usmanov", "status": "match", "topScore": 1.0, "bestMatchList": "eu", "bestMatchPrograms": ["UKR"]},
{"inputName": "Brightline Logistics FZE", "status": "noMatch", "matchCount": 0}]

Next step: noMatch merchants are activated automatically. match and possibleMatch rows go to a manual review queue together with birthDates and nationalities so the analyst can rule out a namesake. The listVersions field is stored in the customer file as evidence. 300 merchants a day ≈ $0.90 a day.

2. Export control: check freight buyers and consignees before shipping

A trade compliance officer at an industrial exporter checks the 1,200 buyers, consignees and freight forwarders in the ERP every month, including vessels.

Input:

{"namesText": "Rosoboronexport\nIran Shipping Lines\nMahan Air\nGlobal Parts Trading GmbH", "lists": ["eu", "un", "ofac", "ofac-nonsdn"], "entityType": "entity", "threshold": 0.88}

Result extract:

[{"inputName": "Mahan Air", "status": "match", "bestMatchList": "ofac", "bestMatchPrograms": ["SDGT", "IFSR"]},
{"inputName": "Global Parts Trading GmbH", "status": "noMatch"}]

Next step: the CSV report (screening-report.csv) is attached to the monthly export-control audit file, and any order for a matched party is blocked in the ERP. 1,200 parties a month = $3.60.

3. Daily watch: alert the team when the EU or OFAC adds new names

The head of AML at a bank or crypto exchange wants a Slack message every morning listing the people and entities sanctioned the day before, plus re-screening of the 20,000-customer base each night where only new hits are reported.

Input of the morning alert (scheduled daily):

{"mode": "newListings", "lists": ["eu", "un", "ofac", "uk"], "onlyNew": true, "stateKey": "daily-alert"}

Input of the nightly re-screening (only new hits are delivered and paid for):

{"names": ["…20,000 customer names…"], "lists": ["eu", "un", "ofac", "uk"], "onlyNew": true, "stateKey": "customer-base", "threshold": 0.9}

Result extract:

[{"recordType": "newListing", "list": "ofac", "name": "EXAMPLE TRADING CO LTD", "programs": ["RUSSIA-EO14024"], "reason": "notInPreviousSnapshot"}]

Next step: n8n sends each row's summary to Slack, and a match against the customer base opens a ticket in the case management tool. With about 30 new listings a week, the alert costs about $0.40 a month. The first run of each stateKey only saves a baseline and is free.

4. Due diligence by an AI agent

A lawyer or M&A analyst asks Claude: "Are the shareholders of this target company sanctioned anywhere?" The agent calls the Actor through MCP with the five shareholder names and gets back the summary field of each name, with the official links to cite.

Use with AI agents (MCP)

The Actor is MCP-ready for Claude, Cursor, ChatGPT and any agent that can call an MCP server:

https://mcp.apify.com/?actors=<username>/ecb-style-eu-sanctions-list

Each result has a plain-text summary, and every match carries a sourceUrl, so agents can explain and cite their answer. A clear name has status: "noMatch" and a summary stating which list versions were checked.

API examples

Python

from apify_client import ApifyClient
client = ApifyClient("<APIFY_TOKEN>")
run = client.actor("<username>/ecb-style-eu-sanctions-list").call(run_input={
"names": ["Wagner Group", "Acme Trading LLC"],
"lists": ["eu", "un", "ofac"],
"threshold": 0.85,
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item["inputName"], item["status"], item["topScore"], item["bestMatchName"])

JavaScript

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: '<APIFY_TOKEN>' });
const run = await client.actor('<username>/ecb-style-eu-sanctions-list').call({
names: ['Wagner Group', 'Acme Trading LLC'],
lists: ['eu', 'un', 'ofac'],
threshold: 0.85,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((i) => console.log(i.inputName, i.status, i.topScore));

HTTP (synchronous, returns the results directly)

POST https://api.apify.com/v2/acts/<username>~ecb-style-eu-sanctions-list/run-sync-get-dataset-items?token=<APIFY_TOKEN>
{"names": ["Wagner Group"], "lists": ["eu", "un", "ofac"]}

Integrations (Make, Zapier, n8n, Google Sheets)

  • n8n: Schedule Trigger (daily 07:00) → Apify: Run Actor with {"mode": "newListings", "onlyNew": true, "stateKey": "daily-alert"} → Apify: Get dataset items → Slack: Send message with {{$json.summary}}.
  • Make: Google Sheets: Watch rows (new customer) → Apify: Run an Actor (synchronous) with {"names": ["{{name}}"]} → Router: status = noMatch → mark the customer approved; otherwise → email the compliance team.
  • Zapier: New row in Google Sheets → Apify: Run Actor → Filter status is not noMatch → Gmail / Teams.
  • Google Sheets: export the dataset as CSV or use the Apify Google Sheets integration to append the results to a sheet.

How matching works

  1. Names are normalised: case, accents, punctuation, word order, and legal forms (LLC, Ltd, GmbH, OOO, JSC, FZE…) are ignored.
  2. Each name is compared in its original script and transliterated to Latin (Cyrillic, Greek, Arabic, Chinese…).
  3. Score = best of: exact match (1.0), character similarity of the sorted words (catches typos and transliteration variants), and "all words found in a longer alias" (0.85–0.95, e.g. Prigozhin → Yevgeniy Viktorovich PRIGOZHIN).
  4. status: match if the top score is ≥ 0.97, possibleMatch if it is between your threshold and 0.97, noMatch otherwise.

FAQ

Where does the data come from? Directly from the official files published by the European Commission (FSF), the UN Security Council, the US Treasury (OFAC Sanctions List Service) and the UK FCDO. No third-party aggregator is used.

How fresh is it? The lists are downloaded at run time. With the default cacheHours: 6, runs in your account within 6 hours reuse the copy already downloaded and parsed. Every result states the version (listVersions) it was checked against.

Do I pay for names that are clear? Yes: each unique name screened costs $0.003 whatever the outcome, because "not on any list as of version X" is the result you file. Duplicates, blank lines and failed runs are free.

Can I reduce false positives? Raise threshold to 0.9–0.95, set entityType, and compare birthDates / nationalities before escalating.

Does it replace a compliance officer? No. It finds candidate matches; a person must confirm them. A fuzzy match is not a legal determination.

Is UK OFSI supported? The OFSI Consolidated List closed on 28 January 2026. Use uk, the FCDO UK Sanctions List that replaced it.

Limitations

  • OFAC files do not publish a listing date: in newListings mode, OFAC additions are found by comparing with the previous run's snapshot (the first run sets the baseline).
  • The checks cover sanctions lists only. PEP lists, adverse media and ownership rules (such as OFAC's 50% rule) are not included.
  • Matching is name-based. Dates of birth and nationalities are returned for your review but are not used in the score.
  • Very short or very common single words (e.g. Bank) can return many possible matches.
  • If an official site is down, the run fails at no charge. With failOnListError: false, the run continues on the lists that loaded and every result is flagged incomplete: true.
  • The actor runs in 512 MB by default. If you select all five lists (including uk and ofac-nonsdn) and the run runs out of memory, raise the run memory to 1024 MB.

En français : filtrage des listes de sanctions UE, ONU, OFAC

Cet Actor vérifie en masse des noms de personnes ou de sociétés contre la liste consolidée des sanctions financières de l'UE, la liste du Conseil de sécurité de l'ONU, la liste OFAC SDN et la liste britannique. Il sert au contrôle de gel des avoirs (LCB-FT, KYC, criblage de tiers, conformité export). La correspondance est approximative (translittération, ordre des mots, formes juridiques) et chaque nom reçoit un score de 0 à 1. Prix : 0,003 $ par nom criblé.

Entrée : {"names": ["Groupe Wagner", "Société Exemple SARL"], "lists": ["eu", "un", "ofac"], "threshold": 0.85}

Résultat : {"inputName": "Groupe Wagner", "status": "possibleMatch", "topScore": 0.96, "bestMatchName": "Wagner Group", "bestMatchList": "eu", "listVersions": {"eu": "2026-10-23"}}

Le mode newListings programmé chaque jour signale les nouvelles inscriptions sur les listes (mesures restrictives UE, ONU, OFAC). Le registre national des gels de la DG Trésor n'est pas couvert, mais il reprend en grande partie les mesures UE et ONU.