Sanctions Screening: OFAC, EU, UN & UK Lists avatar

Sanctions Screening: OFAC, EU, UN & UK Lists

Pricing

from $3.00 / 1,000 name screeneds

Go to Apify Store
Sanctions Screening: OFAC, EU, UN & UK Lists

Sanctions Screening: OFAC, EU, UN & UK Lists

Screen up to 10,000 names against the official OFAC (SDN + Consolidated), EU, UN Security Council and UK sanctions lists. Fuzzy matching with aliases, transliteration, country and date-of-birth checks. A screening aid, not a compliance decision.

Pricing

from $3.00 / 1,000 name screeneds

Rating

0.0

(0)

Developer

Offera Studio

Offera Studio

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

1

Monthly active users

3 hours ago

Last modified

Share

What does Sanctions Screening do?

Sanctions Screening checks up to 10,000 names per run against the official sanctions lists, downloaded from the publishers themselves (the EU list from the European Commission's own EU Sanctions Map), not from a third-party aggregator:

ListPublisher
OFAC SDN list (Specially Designated Nationals)U.S. Treasury, Office of Foreign Assets Control
OFAC Consolidated (non-SDN) listU.S. Treasury, Office of Foreign Assets Control
EU consolidated list, read from the EU Sanctions Map (sanctionsmap.eu)European Commission
UN Security Council consolidated listUnited Nations Security Council
UK sanctions listUK Foreign, Commonwealth & Development Office

For every name you get:

  • ✅ hit: true when at least one list entry scores at or above your threshold (default 85 out of 100), and the best score even when there is no hit
  • 📋 up to 5 candidates, best first: list, list entry ID, primary name, the alias that matched, type (person / entity / vessel / aircraft), programmes or regimes, nationalities and countries, dates of birth, listing date, a link to the official entry where the list has one, and a plain-language score breakdown
  • 🕒 listsVersion: for every list, the publication date the publisher gives, when this copy was downloaded, how many entries it has, where the entries were read from, and whether it was downloaded, unchanged, kept (EU list), or an older copy used after an error
  • ⚠️ listsUnavailable: a list that could not be downloaded is never silently skipped; every row names it, and the run's status message repeats it

Matching copes with upper and lower case, accents, punctuation, word order ("PUTIN, Vladimir" = "Vladimir Putin"), legal forms ("LLC", "PJSC", "GmbH", "OOO" …), Cyrillic and Greek script (transliterated), common spelling variants (Mohammed / Muhammad, Alexei / Aleksey, Usama / Osama), typos and aliases (a.k.a. / f.k.a.). Optional country, date of birth and type raise or lower the score.

This Actor is a screening aid. It is not a compliance decision and not legal advice. A hit is a possible match that a person must review; a name with no hit can still be listed (false negatives are possible, see Limitations). Not affiliated with or endorsed by OFAC, the EU, the UN or the UK government.

Who is it for?

  • Compliance, KYC and onboarding teams that need a first pass over customer, supplier or counterparty lists and a record of which list versions were used.
  • Fintechs, marketplaces, payment and crypto businesses that screen in bulk before a payout or contract.
  • Procurement, HR and trade teams that check distributors, vendors or agents.
  • Developers who want one API for the four official lists (OFAC, EU, UN, UK) without building the download, parsing and matching themselves.

How it works

  1. Download once per run. The Actor asks each publisher whether its file changed (HTTP ETag / Last-Modified). If not, it uses the copy it parsed earlier and kept in a named key-value store (sanctions-lists-cache, public list data only). If the file changed, it downloads and parses it. If a publisher cannot be reached, the older copy is used and the row says so (cached-after-error); with no copy at all, the list is marked unavailable. The EU list works differently, see The EU list.
  2. Normalise every name: lower case, accents removed, ß ø æ ł folded, Cyrillic and Greek transliterated, punctuation removed, legal forms at the start or end dropped, common spelling variants unified.
  3. Compare with every name and alias on the lists. The score (0–100) is a token-set similarity: the best one-to-one pairing of words, where a word counts as the same when it differs by at most a quarter of its letters (with a Jaro-Winkler similarity of 0.85 or more), weighted by word length. Words of your name that are missing on the list cost more than extra words on the list (a patronymic, a second given name). A name written as one word and as two ("Sberbank" / "Sber bank") is compared in glued form.
  4. Adjust the score with what you gave: country matches +5, conflicts −10; date of birth exact +10, year +5, month or day differs −5, year off by one −8, different −15; type (person / entity) that does not fit the entry −20; a match on a low-quality alias −5. Every adjustment is listed in scoreNotes.
  5. Return one row per name: hit, bestScore, up to 5 candidates at or above the threshold, the lists used and their versions.

Choosing a threshold. 85 is a common starting point. Lower it (70–80) to catch more spelling variants at the price of more false alarms; raise it (90+) for fewer alarms and more risk of missing a variant. Common names ("Mohammed Ali") will always produce candidates that a person has to separate using date of birth and country.

Your names are not kept. The Actor writes your names only to the run's own dataset. The named store holds the sanctions lists, nothing from your input. A run that is restarted by the platform keeps only a counter of how many names it already did.

How to use it

  1. Click Start with the default input: five well-known listed entities and people, one with country and date of birth, and one ordinary company name that should produce no hit.
  2. Replace Names to screen with your own list. Each entry is a plain name or an object with name and optional type, country, dateOfBirth and reference (your own ID, returned unchanged).
  3. Choose the lists and the threshold.

The Screening results tab has one row per name, Candidates shows what matched, Lists used shows the list versions.

Input example

{
"names": [
"Rosneft Oil Company",
{ "name": "Vladimir Putin", "type": "person", "country": "RU", "dateOfBirth": "1952-10-07", "reference": "case-1042" },
{ "name": "Acme Garden Furniture Ltd", "type": "entity", "country": "GB" }
],
"lists": ["ofac-sdn", "ofac-consolidated", "eu-sanctions-map", "un-consolidated", "uk-sanctions"],
"threshold": 85,
"includeAliases": true
}
FieldMeaning
namesUp to 10,000 entries. Plain text or { name, type?, country?, dateOfBirth?, reference? }. type is person or entity. country is a name or an ISO code. dateOfBirth is YYYY-MM-DD, YYYY-MM or YYYY (a numeric DD/MM/YYYY is also read). Optional fields that cannot be read are ignored and listed in warnings.
listsAny of ofac-sdn, ofac-consolidated, eu-sanctions-map, eu-fsf, un-consolidated, uk-sanctions. Default: OFAC SDN, OFAC Consolidated, EU (eu-sanctions-map), UN and UK. eu-fsf is the Commission's file download alone, which now needs an EU Login session; choose it only if you want exactly that file (it is reported as unavailable when the download fails). Do not select both EU entries: if you do, only eu-sanctions-map is used.
threshold0–100, default 85.
includeAliasesCompare with aliases too (default true; strongly recommended).

Output example

Real output of a local run on 2 October 2026, with the default input plus two EU-listed names. The lists were downloaded from the publishers that morning. The EU list came from the EU Sanctions Map (the Commission's FSF file download answered HTTP 401):

#NameHitBest scoreBest candidates
1Sberbank of Russiatrue100OFAC SDN 17018 PUBLIC JOINT STOCK COMPANY SBERBANK OF RUSSIA, OFAC Consolidated 17018 and 18715, OFAC SDN 18715
2Rosneft Oil Companytrue100OFAC SDN 17022, OFAC Consolidated 17022, UK RUS3064 PJSC Rosneft Oil Company
3Hizballahtrue100OFAC SDN 4697 HIZBALLAH, UK CTI0032 Hizballah
4Vladimir Putintrue100OFAC SDN 35096, UK RUS0251 (country +5, date of birth +10)
5Kim Jong Untrue100OFAC SDN 20157 Jong Un KIM
6Acme Garden Furniture Ltdfalse0–
7Agha, Abdul Rahman (added)true100EU 513 Abdul Rahman Agha, UK, UN
8Wilma II (added, a vessel)true100EU r26-wilma-ii, UK

The five default hits are on the OFAC and UK lists. Names that are on the EU list too may not reach 85 there: the EU Sanctions Map often has no date of birth or nationality, so nothing raises the score (for "Vladimir Putin" the EU entry, which also has a patronymic, scores 83 and appears when you lower the threshold to 80).

One row (shortened to two candidates, and with the unchanged list copies it was screened against):

{
"input": "{\"name\":\"Rosneft Oil Company\",\"type\":\"entity\"}",
"position": 2,
"reference": null,
"name": "Rosneft Oil Company",
"type": "entity",
"country": null,
"dateOfBirth": null,
"hit": true,
"bestScore": 100,
"threshold": 85,
"candidateCount": 3,
"candidates": [
{
"list": "ofac-sdn",
"listEntryId": "17022",
"primaryName": "OPEN JOINT-STOCK COMPANY ROSNEFT OIL COMPANY",
"matchedName": "OPEN JOINT-STOCK COMPANY ROSNEFT OIL COMPANY",
"matchedIsAlias": false,
"score": 100,
"entityType": "entity",
"programmes": ["UKRAINE-EO13662", "RUSSIA-EO14024"],
"countries": ["Russia"],
"datesOfBirth": [],
"listingDate": null,
"entryUrl": "https://sanctionssearch.ofac.treas.gov/Details.aspx?id=17022",
"source": "U.S. Department of the Treasury, Office of Foreign Assets Control",
"scoreNotes": ["name similarity 100 (exact)"]
},
{
"list": "uk-sanctions",
"listEntryId": "RUS3064",
"primaryName": "PJSC Rosneft Oil Company",
"matchedName": "PJSC Rosneft Oil Company",
"matchedIsAlias": false,
"score": 100,
"entityType": "entity",
"programmes": ["The Russia (Sanctions) (EU Exit) Regulations 2019"],
"countries": ["Russia"],
"datesOfBirth": [],
"listingDate": "2025-10-15",
"entryUrl": "https://www.gov.uk/government/publications/the-uk-sanctions-list",
"source": "UK Foreign, Commonwealth & Development Office",
"scoreNotes": ["name similarity 100 (exact)"]
}
],
"listsChecked": ["ofac-sdn", "ofac-consolidated", "eu-sanctions-map", "un-consolidated", "uk-sanctions"],
"listsUnavailable": [],
"listsVersion": {
"ofac-sdn": { "publishedOn": "2026-10-01", "downloadedAt": "2026-10-02T05:34:11.000Z", "entries": 19483, "status": "downloaded", "source": "U.S. Department of the Treasury, Office of Foreign Assets Control", "note": null },
"ofac-consolidated": { "publishedOn": "2026-09-14", "downloadedAt": "2026-10-02T05:34:12.000Z", "entries": 481, "status": "downloaded", "source": "U.S. Department of the Treasury, Office of Foreign Assets Control", "note": null },
"eu-sanctions-map": { "publishedOn": "2026-07-03", "downloadedAt": "2026-10-02T05:34:40.472Z", "entries": 7135, "status": "downloaded", "source": "sanctionsmap.eu (European Commission)", "note": "The FSF file download is not available to automated clients (HTTP 401 from webgate.ec.europa.eu); the list was read from the EU Sanctions Map (55 regimes)." },
"un-consolidated": { "publishedOn": "2026-10-01T23:00:06.597Z", "downloadedAt": "2026-10-02T05:34:42.000Z", "entries": 1011, "status": "downloaded", "source": "United Nations Security Council", "note": null },
"uk-sanctions": { "publishedOn": "2026-10-01", "downloadedAt": "2026-10-02T05:34:44.000Z", "entries": 6370, "status": "downloaded", "source": "UK Foreign, Commonwealth & Development Office", "note": null }
},
"screenedAt": "2026-10-02T00:29:28.082Z",
"warnings": [],
"error": null,
"errorMessage": null
}

Fields worth knowing:

  • hit: true = at least one entry reached the threshold (needs human review); false = none did; null = a free info row.
  • bestScore: the highest score among everything compared, also when it is below the threshold (so you can see near misses). 0 means nothing similar was found.
  • candidates[].listEntryId: OFAC uid, UK unique ID (for example RUS0251), UN reference number (for example CDi.001), EU FSD_ID (the EU reference number of the Financial Sanctions Files; entries of sectoral lists that have none get an id like r26-wilma-ii, regime 26 plus the normalised name). listingDate is null for OFAC: its XML file does not contain it.
  • candidates[].source: where the entry was read from, for example sanctionsmap.eu (European Commission) for the EU list.
  • candidates[].entryUrl: OFAC's search page for the entry, the EU Sanctions Map for EU entries (a search for the name within the regime), or the regulation in the Official Journal for entries read from the FSF file. The UN and UK files have no page per entry, so the link is the list's own page; use listEntryId to find the entry there.
  • listsVersion[list].status: downloaded, not-modified (the publisher's file had not changed since the copy kept from an earlier run), cached (EU list: a copy younger than 12 hours was used without asking the publisher), cached-after-error (the publisher could not be reached; the older copy was used, note says why) or unavailable (not used at all).
  • error / errorMessage are set on free rows only: invalid-input, lists-unavailable, limit-reached.

The EU list (EU Sanctions Map)

The European Commission's download of its Financial Sanctions Files (FSF) now sends automated clients to EU Login, so the EU list is read from the Commission's EU Sanctions Map (https://www.sanctionsmap.eu), which has a public JSON API without login or key:

  • The Actor first tries the FSF file (one attempt). If that answers with a redirect or a login page, it falls back to the Sanctions Map automatically. listsVersion["eu-sanctions-map"].note says which one was used.
  • The map is read politely: the list of regimes (55 on 2 October 2026), then each regime one at a time, about 300 ms apart, with a retry on HTTP 429 and 5xx. That is about 55 requests and takes a minute.
  • The merged list is kept for 12 hours in the named store sanctions-lists-cache, so most runs do not touch the map at all (status: "cached"). If a refresh fails, the older copy is used and the row says so; a refresh that misses some regimes is flagged as incomplete in the row and is never kept as the new copy.
  • On 2 October 2026 this gave 6,224 unique EU FSF ids (4,454 persons, 1,770 entities), plus 911 members of sectoral lists that have no FSF id (vessels and entities named in the annexes of sectoral measures, mostly the Russia and North Korea regimes), which are keyed by name and regime. Each entry carries the regime title in programmes, the listing date (from the reason text, else the record's creation date), a link to the map and source: "sanctionsmap.eu (European Commission)".
  • Fewer fields than the FSF XML. The map often has no date of birth and no nationality, so the country and date-of-birth adjustments only apply to the few entries that give them. A name with a patronymic or a second given name may therefore score a little lower on the EU list than on the OFAC or UK lists.
  • Aliases come as one comma-separated string. The Actor splits them (Agha, Abdul Rahman is read as the one name "Abdul Rahman Agha"); a rare name that is split wrongly can be missed. Check the entry on the map.
  • Reuse. The Commission's reuse policy is Commission Decision 2011/833/EU; content owned by the EU is licensed CC BY 4.0, which asks for credit and for changes to be indicated. Credit: European Commission, EU Sanctions Map (sanctionsmap.eu). The names are split and merged by this Actor, which is a change. The map is an information service: the legal acts in the Official Journal of the EU are the binding texts.

How much does it cost?

This Actor uses pay per event:

EventPrice
Name screened (one row per valid name, hit or no hit)$0.003
Invalid entries (no name, too long) and run notesfree
  • 1,000 names cost $3.00; the default run costs $0.018.
  • Duplicate names in your list are screened and charged each time (each row is one answer).
  • The lists are public and free; there are no other costs. Apify also charges a small standard start fee per run and the compute for the run (a full run with all lists takes about 10 seconds for the downloads and parsing, then about 0.6 ms per name; use at least 1 GB of memory).
  • Set Maximum cost per run in the run options and the Actor stops when it is reached.

Limitations

  • Not a compliance decision. A hit needs review by a person who can look at the official entry. No hit does not prove that a person or company is not sanctioned. The Actor does not know about other lists (for example national lists of other countries, or the OFAC 50 % ownership rule), about vessels or assets by identifier (it matches names only), or about people connected to a listed party.
  • False negatives are possible. Names in Arabic, Chinese or other non-Latin scripts only match the same script (the UK list includes original-script names); there is no transliteration from those scripts. Cyrillic and Greek are transliterated with simple rules, and transliteration systems differ (a name in Cyrillic may not match the way a list spells it). A name that is not on the list in any spelling close to yours, a name with a lot of missing parts, or a heavily changed alias will be missed. Lower the threshold when the cost of a miss is high.
  • False positives are normal, above all for common names and short names. Give country and dateOfBirth where you have them, and check the official entry.
  • Only what the lists say. OFAC's XML has no listing date. Dates of birth, countries and aliases are as complete as the publisher's file. The Actor does not enrich or verify them.
  • Lists change during the day and the Actor only sees the file as it was when it was downloaded. listsVersion tells you which version was used. For regulated use, screen close to the time of the transaction and keep the dataset as your record.
  • The EU list comes from the EU Sanctions Map (see above) and can be up to 12 hours old; the map can lag behind the Official Journal. If it cannot be loaded, rows say so (listsUnavailable: ["eu-sanctions-map"]) and the other lists are still used; if you need a guarantee that the EU list was part of the screening, check that listsUnavailable is empty in every row (the run status message also lists what was missing).
  • 10,000 names per run. Longer lists need several runs.
  • Names are compared as text. The Actor does not look at addresses, ID numbers or other fields.

Data and licences

ListSource fileTerms
OFAC SDN and Consolidatedsanctionslistservice.ofac.treas.gov (SDN.XML, CONSOLIDATED.XML)Publication of a U.S. federal agency; works of the U.S. Government are not subject to copyright (17 U.S.C. § 105). OFAC states no further terms on the download page.
UK sanctions listsanctionslist.fcdo.gov.uk (UK-Sanctions-List.xml)Published by the UK government on GOV.UK, where all content is available under the Open Government Licence v3.0 unless stated otherwise. Contains public sector information licensed under the Open Government Licence v3.0.
UN Security Council consolidated listscsanctions.un.org (consolidated.xml)Published by the UN Security Council Committees for the purpose of implementing the sanctions. The UN website's general copyright notice reserves all rights except as provided in its terms of use; no separate open licence for the list was found.
EU consolidated listwww.sanctionsmap.eu/api/v1/regime (EU Sanctions Map, European Commission); the FSF file (webgate.ec.europa.eu/fsd/fsf) is tried firstReuse under the Commission's reuse policy (Commission Decision 2011/833/EU; EU-owned content is licensed CC BY 4.0: credit the source and indicate changes). The Commission accepts no liability for omissions or mistakes. Source: European Commission, EU Sanctions Map.

Always check the official entry before acting on a hit. No personal data beyond the names you enter and the public list entries is processed. The Actor stores nothing from your input between runs.

FAQ

Is this a replacement for my compliance process?

No. It is a fast first screen with a clear record of which list versions were used. Decisions about hits, escalation, reporting and record keeping stay with your compliance team.

Why use this and not a commercial screening service or an aggregated dataset?

Because it reads the four official lists directly and tells you exactly which version of each list it used; you pay per name with no subscription. It does not include politically exposed persons, adverse media or other lists that commercial services add.

Why does a name I know is listed have no hit?

Check the spelling the list uses (search the entry on the official site), whether the list is in listsChecked, and the bestScore (a score just under your threshold means a spelling variant: lower the threshold). Non-Latin scripts other than Cyrillic and Greek are only matched in the same script.

Why are there so many candidates for a common name?

Because the lists contain many people with the same or similar names. Add country and dateOfBirth; a conflicting date of birth lowers the score by 15 points.

Why does the same entry show up under OFAC SDN and OFAC Consolidated?

Some entities are on both OFAC files. Both are returned, with the same listEntryId.

Do you keep the names I screen?

No. The Actor writes them only to your run's dataset. See "How it works".

More tools from the same developer

All pay-per-result, no proxy or login needed, built and maintained by the same developer:

Website audits

Company data and compliance

Media and AI

Market signals

Feedback

Missing a list, a date format or a matching rule? Open an issue on the Issues tab.