Sanctions Screening API avatar

Sanctions Screening API

Pricing

from $5.00 / 1,000 result founds

Go to Apify Store
Sanctions Screening API

Sanctions Screening API

Screen names against the live OFAC SDN and EU consolidated sanctions lists. Keyless, no login — flags potential hits with a match score so you can review before onboarding a client or counterparty.

Pricing

from $5.00 / 1,000 result founds

Rating

0.0

(0)

Developer

Tim Zinin

Tim Zinin

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

16 hours ago

Last modified

Share

Sanctions Screening — OFAC & EU List Checker

Check a name against the two sanctions lists that actually matter before you onboard a client, counterparty or vendor — the US Treasury OFAC SDN list (including its published aliases) and the EU consolidated financial sanctions list — read live from their own public exports. No API key, no login, no third-party screening vendor.

The problem

Anyone onboarding clients, running KYC/KYB, or vetting a new counterparty needs a sanctions check. Commercial screening tools (Refinitiv World-Check, Dow Jones, ComplyAdvantage) run hundreds to thousands of dollars a month and are built for compliance teams, not a one-off check or a lightweight internal tool. The underlying data — OFAC's SDN list and the EU's consolidated list — is public and free; this Actor reads it directly.

This is a preliminary screening tool, not a compliance determination. Every row carries that disclaimer. Sanctions screening in any serious compliance workflow always ends with human review of the hits — this Actor is built to make that review list, not replace it.

What you get

  • Two official lists, screened together: OFAC SDN (US Treasury) and the EU consolidated financial sanctions list, both fetched fresh at the start of every run — never a stale cache.
  • OFAC's published aliases are screened too, not just primary names. OFAC's own guidance is explicit that checking primary names alone is an incomplete screen — a sanctioned party is routinely listed, and searched for, under an a.k.a./f.k.a./n.k.a. spelling. This Actor loads OFAC's own alias export alongside the primary list.
  • Honest partial-coverage flag. If one of the two source lists fails to load for a run, every row carries listsComplete: false so you know exactly what wasn't checked — rather than a clean-looking row that quietly skipped half the screen.
  • Ranked candidates, not one silent guess. matches returns every candidate above your score threshold (up to 25, ranked), because on a common name picking one match and hiding the rest is worse than showing you the list.
  • Tunable sensitivity. minScore defaults soft, on purpose — a missed hit is worse than a false one — and it's yours to tighten.
  • Runs on Apify: schedule it, monitor it, call it from the API or the MCP server, export to JSON/CSV/Excel, or push straight into your own pipeline.

Sources

  • OFAC SDN list + aliases (US Treasury) — sanctionslistservice.ofac.treas.gov, the same SDN.CSV and ALT.CSV flat-file exports OFAC itself publishes for download.
  • EU consolidated list (financial sanctions) — webgate.ec.europa.eu, the EU's own public CSV export, names and aliases both.

Both are fetched fresh on every run — no scraping, no unofficial mirrors.

Matching

Names are normalized (uppercase, diacritics stripped, punctuation removed) and compared by token overlap: a match score is the fraction of the query's words found in a candidate entity's name (matched against its primary name or any of its aliases, whichever hits). A single distinctive word matched inside a longer name still counts as a strong hit — e.g. checking "Wagner" against an entry like "PRIVATE MILITARY COMPANY 'WAGNER'" scores 1.0. This is deliberate: a missed hit is worse than a false one, so the default threshold (minScore: 0.5) is soft, and it's tunable per your own risk tolerance.

Common/ambiguous names will produce more hits now that aliases are in scope, not fewer — that's expected of any sanctions screen and is why matches returns everything above the threshold (up to 25, ranked by score) for you to review, rather than silently picking one.

How to run it

  1. Click Try for free — no card needed on the free plan.
  2. Paste names into Names, one per row — people or companies.
  3. Press Start and read the results from the dataset — UI, API or webhook.

Pricing

Pay-per-event: $0.005 per run start + $0.005 per name screened. 100 names cost about $0.51; 1,000 names about $5.01 — that's the normal case, both lists loaded.

If one of the two source lists fails to load for a run, every row that run is flagged listsComplete: false. In that state a match is still charged as usual, but a "no match" verdict is not charged — because that's the case where we ourselves are telling you not to treat the answer as clean. You only pay for an answer this Actor stands behind. If both lists fail to load entirely, every name in the run returns found: false with the reason, and none of it is charged.

Input

FieldTypeDescription
namesarray of stringsPerson or company names to screen against the OFAC SDN (+aliases) and EU consolidated sanctions lists, one per row. Up to 100.
minScorenumberMinimum score (0–1) for a candidate to be reported. Default 0.5. Lower = more (weaker) hits reported.
maxConcurrencyintegerParallelism (1–20, default 5).
{
"names": ["Yevgeniy Prigozhin", "Acme Trading LLC"]
}

Output

One dataset row per name. This is a real row from a real run, matches trimmed to the top few of 25:

{
"input": "Yevgeniy Prigozhin",
"found": true,
"match": true,
"matchCount": 25,
"matches": [
{ "listName": "OFAC SDN", "entityName": "PRIGOZHIN, Yevgeniy Viktorovich", "entityType": "individual", "program": "UKRAINE-EO13661, CYBER2, ELECTION-EO13848, RUSSIA-EO14024", "matchedName": "PRIGOZHIN, Yevgeniy Viktorovich", "matchedNameType": "primary", "score": 1 },
{ "listName": "EU Consolidated", "entityName": "Yevgeniy Viktorovich PRIGOZHIN", "entityType": "individual", "program": "UKR", "matchedName": "Yevgeniy Viktorovich PRIGOZHIN", "matchedNameType": "primary", "score": 1 },
{ "listName": "OFAC SDN", "entityName": "BALYTSKYI, Yevhen Vitaliiovych", "entityType": "individual", "program": "RUSSIA-EO14024", "matchedName": "BALITSKIY, Yevgeniy", "matchedNameType": "aka", "score": 0.5 },
"…"
],
"highestScore": 1,
"matchedName": "PRIGOZHIN, Yevgeniy Viktorovich",
"matchedNameType": "primary",
"listsChecked": ["OFAC SDN", "EU Consolidated"],
"listsComplete": true,
"disclaimer": "Screening signal only — NOT a legal/compliance determination; verify against official sources.",
"summary": "Yevgeniy Prigozhin — 25 potential matches (highest score 1). Top hit: PRIGOZHIN, Yevgeniy Viktorovich [OFAC SDN], program UKRAINE-EO13661, CYBER2, ELECTION-EO13848, RUSSIA-EO14024.",
"checkedAt": "2026-07-26T15:09:32.370Z"
}
FieldDescription
inputThe name you passed
foundWhether screening completed (false only if both lists failed to load)
matchWhether any candidate scored at or above minScore
matchCountHow many candidates cleared the threshold (capped at 25 in matches)
matchesRanked list of candidates: listName, entityName, entityType, program, score, plus matchedName/matchedNameType when the hit came through an alias rather than the entity's primary name
highestScoreScore of the top match (0 if none)
matchedName / matchedNameTypeThe top hit's own name and whether it was the entity's primary name or an alias (aka/fka/nka)
listsCheckedWhich source lists actually loaded and were screened this run
listsCompletefalse when one of the two lists failed to load — a "no match" row in that state is not a clean bill of health, and is not billed either
disclaimerAlways present — this is a signal, not a determination
summaryHuman-readable one-liner, notes an alias match by name when that's what fired

Need the rest of the picture?

These run on the same account, take the same shape of input and bill the same way, so they slot into an existing pipeline without new plumbing.

ActorWhat it does
Company Registry EnricherTurn a company name, LEI or UK company number into an official registry card: legal name, status,…
Gov Tender RadarSearch EU public-sector tenders (TED Europa) by keyword or CPV code, optionally filtered by buyer country
AI Crawler Access CheckerCheck which AI crawlers (GPTBot, ClaudeBot, PerplexityBot, Google-Extended & more) can access your website
B2B Lead EnricherTurn a list of company websites into sales-qualified lead cards: detected tech stack, a rough revenue…
Clinical Trials MonitorWatch conditions, drugs or sponsors for new and updated clinical trials

FAQ / Limitations

Does it need an API key or login? No — both source lists are public, keyless exports.

How fresh is the data? Both lists are downloaded fresh at the start of every run, straight from OFAC and the EU — not cached.

Is this legally sufficient for KYC/AML? No single automated tool is. This is a preliminary screening tool, not a compliance determination — use it to build your review list, not as your only control, and always verify a hit against the official OFAC/EU sources before acting on it.

Does it catch aliases (a.k.a. names)? Yes. OFAC's own alias export (a.k.a./f.k.a./n.k.a.) and the EU list's alias rows are both loaded and screened alongside primary names — a hit through an alias is marked as such via matchedNameType. Free-text alias mentions buried in OFAC's unstructured remarks field are not indexed separately.

What if a name is very common? Expect more hits now that aliases are in scope, not fewer — that's the nature of sanctions screening, not a bug. Review the ranked matches list; lower minScore catches more, higher minScore narrows to only near-exact hits.

What does listsComplete: false mean for what I'm charged? If a source list failed to load, a "no match" answer for that run is not charged — an unverifiable clean result is free. A match, or any result from a run where both lists loaded, is charged as usual.

Can I call it from an AI agent? Yes — it's a standard Apify Actor, callable via the Apify API or the Apify MCP server.

What this is NOT. Not a legal or compliance determination, and not a substitute for your own KYC/AML program — it is an inexpensive way to build the review list a human then checks against the official sources.

Found a wrong result, or need a source list we don't cover? Open an issue on this Actor's page.


Built by zinin. Questions? Telegram @timzinin.