DEV Community

Moose&Raven
Moose&Raven

Posted on

Screen a list of names against the OFAC sanctions list, with a record of every check

If you only screen a handful of customers or vendors a month, enterprise screening subscriptions are hard to justify. Treasury's own search at sanctionssearch.ofac.treas.gov works for one name at a time. The gap is when you have a list and want a record of what you checked.

I built an Apify actor for that gap. Here is what it does, what it costs, and where it falls short.

What it does

You give it names (an array, or CSV text with optional reference ID, date of birth, and country columns). It checks them against the U.S. Treasury OFAC SDN and Consolidated lists from the Sanctions List Service, including the alias files, and returns a verdict per name: clear, possible, or hit, with the top 3 candidate matches.

{
  "names": [
    "Example Trading LLC",
    { "name": "Jane Q Example", "dateOfBirth": "1980-01-01", "country": "XX" }
  ],
  "lists": ["SDN", "CONSOLIDATED"],
  "matchMode": "fuzzy",
  "fuzzyThreshold": 85
}
Enter fullscreen mode Exit fullscreen mode

Matching is exact substring on the listed name and aliases, plus a typo and word-order tolerant fuzzy score, with transliteration folding (c/k, v/w, ph/f and similar). Tokens under 4 characters get exact matching only. If you supply a date of birth or country and it conflicts with the listing, the name's verdict drops to "possible" rather than "clear", so it shows up in the per-name summary for a human to review.

Each run also writes a CSV of every check, including the clears, to a key-value store in your Apify account. That gives you a record of what you screened and when.

What it costs

Pay per event, from the actor README (effective 2026-10-08):

  • $0.02 per name screened, hit or clear
  • $0.004 per matched record
  • $0.05 per scheduled monitor run (flags newly added list entries)
  • $4.00 per 1,000 records for a full-list export

No monthly subscription and no API key.

Where it falls short

Please read this part before using it.

  • It screens listed parties only. It does not do the OFAC 50 percent rule or ownership checks. A name that is not on the list can still be owned 50 percent or more by blocked persons. Name screening alone does not cover that.
  • It is a screening aid, not legal advice, and not a certified compliance engine comparable to enterprise AML platforms.
  • Match quality. On a benchmark of 1,097 machine-generated misspellings of real SDN names (typos, c/k and v/w swaps, reordered or dropped words, transposed letters), it still surfaced 97.5 percent of them as hit-or-possible; 95.3 percent reached a confident "hit" and 2.3 percent only reached "possible". That measures tolerance to spelling variants of listed names. It is not the share of real-world sanctioned parties it would catch, and it does not test other transliterations or unlisted owned entities. The list changes daily, so the figure drifts. In a separate test, 16.5 percent of 200 common names came back as a false "hit". Route every hit and possible to a human reviewer, and cross-check against OFAC's official search.
  • The legacy CSV format OFAC publishes is undocumented, so Treasury could change it without notice.
  • Uncapped full-list exports can exceed Apify's per-run cost limit and abort partway; set a cap.

Try it

Actor page: https://apify.com/mooseandraven/ofac-sanctions-screening-suite

If something is wrong or missing, open an issue on the actor page.

Top comments (0)