Full Sanctions Screener API avatar

Full Sanctions Screener API

Pricing

Pay per usage

Go to Apify Store
Full Sanctions Screener API

Full Sanctions Screener API

Screen entities against OFAC SDN, EU, UN, and UK OFSI sanctions lists with fuzzy matching. Instant API with standby mode.

Pricing

Pay per usage

Rating

0.0

(0)

Developer

George Kioko

George Kioko

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Categories

Share

Global Sanctions Screener API - OFAC, EU, UN & UK Sanctions Check

Screen any entity (person, company, or organization) against 4 major global sanctions lists in a single API call. Uses advanced fuzzy name matching to catch spelling variations, transliterations, and aliases -- reducing false negatives that plague exact-match tools.

Built as a Standby API on Apify for instant, sub-second responses with no cold starts.

Key Features

  • 4 Sanctions Lists in One Call -- OFAC SDN, EU Consolidated, UN Consolidated, and UK OFSI searched simultaneously
  • Fuzzy Name Matching -- combines Levenshtein distance, Soundex phonetic encoding, Dice coefficient, and token overlap to catch name variants
  • 24-Hour Smart Cache -- sanctions data is cached in memory with automatic refresh, so responses are fast and lists stay current
  • Batch Screening -- screen hundreds of entities in a single run via Apify input
  • Alias Matching -- every entry's known aliases (AKAs) are checked alongside the primary name
  • Configurable Thresholds -- tune match sensitivity from strict (1.0 = exact only) to loose (0.5 = broad fuzzy)

How It Works

flowchart LR
A["Entity Name\n(e.g. 'Vladimir Putin')"] --> B["Fuzzy Matching Engine"]
B --> C["Normalize\n(lowercase, strip punctuation)"]
C --> D{"Score against\n4 databases"}
D --> E["OFAC SDN\n🇺🇸"]
D --> F["EU Consolidated\n🇪🇺"]
D --> G["UN Consolidated\n🇺🇳"]
D --> H["UK OFSI\n🇬🇧"]
E --> I["Scored &\nRanked Results"]
F --> I
G --> I
H --> I
I --> J["Top Matches\nwith confidence scores"]

Sanctions Lists Covered

ListJurisdictionSourceFormatUpdate Frequency
OFAC SDNUnited Statestreasury.gov/ofacXMLUpdated regularly (near-daily)
EU ConsolidatedEuropean Unionwebgate.ec.europa.euXMLUpdated on designation changes
UN ConsolidatedUnited Nationsscsanctions.un.orgXMLUpdated on Security Council action
UK OFSIUnited Kingdomofsistorage.blob.core.windows.netCSVUpdated on designation changes

API Endpoints

MethodEndpointDescription
GET/screen?name=ENTITY_NAMEScreen a single entity by name
POST/screenScreen an entity with full options via JSON body
GET/listsView loaded sanctions lists, entry counts, and cache status
GET/healthHealth check with list status and available endpoints

GET /screen Parameters

ParameterTypeDefaultDescription
namestringrequiredEntity name to screen (also accepts entity or query)
listsstringallComma-separated list keys: ofac, eu, un, uk, or all
fuzzyMatchbooleantrueEnable fuzzy matching (false for exact/substring only)
thresholdfloat0.7Minimum match score (0.0 - 1.0)
maxResultsinteger10Maximum matches to return

POST /screen Body

{
"name": "Entity Name",
"lists": ["ofac", "eu", "un", "uk"],
"fuzzyMatch": true,
"threshold": 0.7,
"maxResults": 10
}

Matching Algorithms

The screener combines four complementary algorithms into a single weighted confidence score:

Levenshtein Distance (35% weight)

Measures the minimum number of single-character edits (insertions, deletions, substitutions) needed to transform one name into another. Converted to a 0-1 similarity score. Catches typos and minor spelling differences like "Vladmir" vs "Vladimir."

Dice Coefficient (35% weight)

Compares overlapping character bigrams (two-character pairs) between names. Calculated as 2 * |intersection| / (|bigrams_a| + |bigrams_b|). Effective for partial name matches and reordered characters.

Token Overlap / Jaccard (20% weight)

Splits names into words and computes the ratio of shared tokens to total unique tokens. Catches cases where name parts appear in different orders (e.g., "Kim Jong Un" vs "Jong Un Kim").

Soundex Bonus (+10%)

Phonetic encoding that groups similar-sounding consonants. Compares the Soundex code of the last word in each name (typically the surname). Adds a 0.1 bonus when surnames sound alike, catching transliteration variants like "Gaddafi" vs "Qaddafi."

Scoring Formula

score = min(1.0, levenshtein * 0.35 + dice * 0.35 + token_overlap * 0.20 + soundex_bonus)

A score of 1.0 means an exact match. The default threshold of 0.7 balances precision and recall for most compliance use cases.

Example Output

{
"query": "Vladimir Putin",
"totalMatches": 3,
"matches": [
{
"list": "OFAC_SDN",
"name": "PUTIN, Vladimir Vladimirovich",
"score": 0.92,
"type": "individual",
"programs": ["RUSSIA-EO14024", "UKRAINE-EO13661"],
"aliases": ["Vladmir PUTIN"],
"details": {
"uid": "36267",
"dateOfBirth": "07 Oct 1952",
"placeOfBirth": "Leningrad, Russia",
"remarks": "President of the Russian Federation"
}
},
{
"list": "EU",
"name": "Vladimir Vladimirovich PUTIN",
"score": 0.89,
"type": "individual",
"programs": ["RUS"],
"aliases": [],
"details": {
"euReferenceNumber": "EU.8833.29",
"designationDate": "2023-02-25"
}
},
{
"list": "UN",
"name": "Vladimir Vladimirovich Putin",
"score": 0.87,
"type": "individual",
"programs": ["Security Council Resolution"],
"aliases": [],
"details": {
"listedOn": "2022-03-11",
"nationality": "Russian Federation"
}
}
],
"listsChecked": ["OFAC_SDN", "EU", "UN", "UK_OFSI"],
"screeningDate": "2026-03-26T14:30:00.000Z",
"processingTimeMs": 42
}

How to Use

Quick Start with cURL

Screen an entity (GET):

$curl "https://your-actor-standby-url/screen?name=Vladimir%20Putin"

Screen with specific lists and threshold (GET):

$curl "https://your-actor-standby-url/screen?name=Bank%20Melli%20Iran&lists=ofac,eu&threshold=0.6&maxResults=5"

Screen via POST:

curl -X POST "https://your-actor-standby-url/screen" \
-H "Content-Type: application/json" \
-d '{
"name": "Sberbank",
"lists": ["ofac", "eu", "un", "uk"],
"fuzzyMatch": true,
"threshold": 0.7
}'

Check loaded lists:

$curl "https://your-actor-standby-url/lists"

Health check:

$curl "https://your-actor-standby-url/health"

Batch Screening via Apify Input

To screen multiple entities at once, pass them as input when running the actor:

{
"queries": [
"Vladimir Putin",
"Bank Melli Iran",
"Hezbollah",
"Kim Jong Un"
],
"lists": ["ofac", "eu", "un", "uk"],
"fuzzyMatch": true,
"matchThreshold": 0.7,
"maxResults": 10
}

Results are pushed to the actor's default dataset, one record per entity.

Use Cases

  • KYC/AML Compliance -- screen customers and beneficial owners during onboarding to meet regulatory obligations
  • Financial Institutions -- continuous monitoring of transaction counterparties against all major sanctions regimes
  • Trade Compliance -- verify business partners, suppliers, and shipping destinations before export transactions
  • Due Diligence -- screen targets during M&A, investment, or vendor onboarding processes
  • Legal & Consulting -- bulk-screen client rosters and counterparty lists for law firms and advisory practices
  • Fintech & Payments -- integrate sanctions checks into payment processing pipelines via API
  • Insurance -- screen policyholders and claimants against global sanctions lists

Pricing

EventCost
Entity screened$0.015 per entity

Each API call that screens one entity name against the selected sanctions lists counts as one charge. Batch mode charges per entity in the queries array. Checking /lists and /health endpoints is free.

Input Parameters

ParameterTypeDefaultDescription
queriesstring[][]Array of entity names for batch screening
listsstring[]["ofac","eu","un","uk"]Which sanctions lists to search
fuzzyMatchbooleantrueEnable fuzzy matching algorithms
matchThresholdfloat0.7Minimum confidence score (0.0 - 1.0)
maxResultsinteger10Max matches returned per entity

Compliance Disclaimer

This tool is a screening aid designed to help identify potential sanctions matches. It is not legal advice and should not be used as the sole basis for compliance decisions.

  • Match scores indicate similarity, not confirmed identity. All potential matches should be reviewed by a qualified compliance professional.
  • Sanctions lists are cached for up to 24 hours. For time-critical decisions, verify against official government sources directly.
  • No screening tool can guarantee 100% coverage. This API supplements -- but does not replace -- a comprehensive compliance program.
  • Users are solely responsible for their compliance obligations under applicable laws and regulations.

FAQ

How often are the sanctions lists updated?

Lists are cached in memory with a 24-hour TTL. After 24 hours, the next API request triggers a fresh download from the official government sources. If a download fails, the API gracefully falls back to the most recent cached version.

What does the match score mean?

The score ranges from 0.0 to 1.0, where 1.0 is an exact match. It combines four algorithms (Levenshtein, Dice, Soundex, token overlap) into a weighted composite. A score of 0.85+ typically indicates a strong match worth manual review.

Can I screen against just one list?

Yes. Use the lists parameter to specify which lists to check. For example, lists=ofac screens only against the OFAC SDN list. You can combine any subset: lists=ofac,eu.

Does it check aliases?

Yes. Every sanctions entry includes known aliases (AKAs). The screener checks your query against both the primary name and all recorded aliases, returning the highest match score found.

What is fuzzy matching and should I disable it?

Fuzzy matching catches name variations like typos, transliterations, and alternate spellings. It is enabled by default. Set fuzzyMatch=false for strict mode, which only matches exact names or substrings. Strict mode is faster but will miss spelling variants.

How do I reduce false positives?

Increase the threshold parameter. The default is 0.7. Setting it to 0.85 or higher will return only high-confidence matches. You can also reduce maxResults to limit output.

How do I catch more potential matches?

Lower the threshold (e.g., 0.5) and increase maxResults. This broadens the search but will return more low-confidence results that require manual review.

Is there a rate limit?

The API runs on Apify's infrastructure. Standby mode provides instant responses with no cold starts. Throughput depends on your Apify plan's memory allocation.

Can I use this for batch screening?

Yes. Pass an array of names in the queries input field when running the actor. Each entity is screened and results are pushed to the dataset. You can also call the /screen endpoint repeatedly for real-time batch processing.

What data format does the UK list use?

The UK OFSI publishes their consolidated list as a CSV file (ConList.csv), while OFAC, EU, and UN publish XML. The API handles all format differences internally -- you get a unified JSON response regardless of source format.