Full Sanctions Screener API
Pricing
Pay per usage
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
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 LRA["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 --> IG --> IH --> II --> J["Top Matches\nwith confidence scores"]
Sanctions Lists Covered
| List | Jurisdiction | Source | Format | Update Frequency |
|---|---|---|---|---|
| OFAC SDN | United States | treasury.gov/ofac | XML | Updated regularly (near-daily) |
| EU Consolidated | European Union | webgate.ec.europa.eu | XML | Updated on designation changes |
| UN Consolidated | United Nations | scsanctions.un.org | XML | Updated on Security Council action |
| UK OFSI | United Kingdom | ofsistorage.blob.core.windows.net | CSV | Updated on designation changes |
API Endpoints
| Method | Endpoint | Description |
|---|---|---|
GET | /screen?name=ENTITY_NAME | Screen a single entity by name |
POST | /screen | Screen an entity with full options via JSON body |
GET | /lists | View loaded sanctions lists, entry counts, and cache status |
GET | /health | Health check with list status and available endpoints |
GET /screen Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
name | string | required | Entity name to screen (also accepts entity or query) |
lists | string | all | Comma-separated list keys: ofac, eu, un, uk, or all |
fuzzyMatch | boolean | true | Enable fuzzy matching (false for exact/substring only) |
threshold | float | 0.7 | Minimum match score (0.0 - 1.0) |
maxResults | integer | 10 | Maximum 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
| Event | Cost |
|---|---|
| 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
| Parameter | Type | Default | Description |
|---|---|---|---|
queries | string[] | [] | Array of entity names for batch screening |
lists | string[] | ["ofac","eu","un","uk"] | Which sanctions lists to search |
fuzzyMatch | boolean | true | Enable fuzzy matching algorithms |
matchThreshold | float | 0.7 | Minimum confidence score (0.0 - 1.0) |
maxResults | integer | 10 | Max 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.