Sanctions Screening API
Screen individuals and entities against 305,000+ entries across 278 global sanctions lists in real time.
Overview
The Ohmyfin Sanctions Screening API allows you to programmatically screen individuals and entities against comprehensive global sanctions lists. The API provides real-time fuzzy matching with configurable thresholds, supporting compliance workflows for financial institutions, fintechs, and businesses.
Base URL
https://ohmyfin.org/api/v4/sanctions
Authentication
All API requests require your API key in the KEY header. You can find your API key in your account settings after subscribing to a plan with API access.
KEY: your_api_key_here
Screen Endpoint
POST /api/v4/sanctions/screen
Screen an individual or entity name against all sanctions lists. Returns matching entries sorted by relevance score.
Request Parameters
| Parameter | Type | Description |
|---|---|---|
name required |
string | Name of the individual or entity to screen. Supports Latin, Cyrillic, and Arabic characters with automatic transliteration. |
threshold optional |
number | Match score threshold between 0 and 1. Only results with a score at or above this threshold are returned. Default: 0.8 (80% match). |
max_results optional |
integer | Maximum number of matches to return. Default: 50. |
Request Example
{
"name": "John Smith",
"threshold": 0.8,
"max_results": 50
}
Response
{
"success": true,
"total_matches": 3,
"matches": [
{
"entity_id": "ofac-12345",
"name": "JOHN SMITH",
"entity_type": "person",
"list_source": "OFAC-SDN",
"score": 0.95,
"aliases": ["J. SMITH", "JOHNNY SMITH"],
"nationalities": ["US"],
"birth_dates": ["1970-01-15"],
"addresses": [{"city": "New York", "country": "US"}],
"identifications": [{"type": "Passport", "number": "AB123456"}],
"programs": ["SDGT", "IRAN"],
"remarks": "Additional details..."
}
]
}
Response Fields
| Field | Type | Description |
|---|---|---|
success | boolean | Whether the request was processed successfully. |
total_matches | integer | Total number of matching entities found. |
matches | array | Array of matching entity objects. |
matches[].entity_id | string | Unique identifier for the sanctioned entity. |
matches[].name | string | Primary name of the sanctioned entity. |
matches[].entity_type | string | Type of entity: person, organization, or vessel. |
matches[].list_source | string | Source sanctions list (e.g., OFAC-SDN, EU, UN, OFSI). |
matches[].score | number | Match confidence score from 0 to 1. |
matches[].aliases | array | Known aliases for the entity. |
matches[].nationalities | array | Known nationalities (ISO country codes). |
matches[].birth_dates | array | Known dates of birth (persons only). |
matches[].addresses | array | Known addresses with city and country. |
matches[].identifications | array | Identity documents (passport, national ID, etc.). |
matches[].programs | array | Sanctions programmes the entity is listed under. |
matches[].remarks | string | Additional information or notes. |
Entity Lookup
GET /api/v4/sanctions/entity/{entity_id}
Retrieve detailed information about a specific sanctioned entity by its unique identifier.
Response
Returns the full entity object with all available fields (same structure as individual match objects in the screen response).
Code Examples
import requests response = requests.post( "https://ohmyfin.org/api/v4/sanctions/screen", headers={ "KEY": "your_api_key", "Content-Type": "application/json" }, json={ "name": "John Smith", "threshold": 0.8, "max_results": 50 } ) result = response.json() print(f"Found {result['total_matches']} matches") for match in result['matches']: print(f"- {match['name']} ({match['score']*100:.0f}% match) - {match['list_source']}")
const response = await fetch('https://ohmyfin.org/api/v4/sanctions/screen', { method: 'POST', headers: { 'KEY': 'your_api_key', 'Content-Type': 'application/json' }, body: JSON.stringify({ name: 'John Smith', threshold: 0.8, max_results: 50 }) }); const result = await response.json(); console.log(`Found ${result.total_matches} matches`); result.matches.forEach(match => { console.log(`- ${match.name} (${(match.score*100).toFixed(0)}% match) - ${match.list_source}`); });
curl -X POST https://ohmyfin.org/api/v4/sanctions/screen \ -H "KEY: your_api_key" \ -H "Content-Type: application/json" \ -d '{ "name": "John Smith", "threshold": 0.8, "max_results": 50 }'
Error Handling
| Status Code | Description |
|---|---|
| 200 | Success. Results returned in the response body. |
| 400 | Validation error. Check the errors field for details. |
| 401 | Authentication failed. Verify your API key. |
| 429 | Rate limit exceeded. Slow down your requests. |
| 500 | Server error. Retry after a short delay. |
Error Response Format
{
"success": false,
"error": "Description of what went wrong",
"errors": {
"name": ["The name field is required."]
}
}
Rate Limits
| Plan | Rate Limit | Bulk Screening |
|---|---|---|
| Corporate PRO | 100 requests/minute | Up to 50 entities per request |
| Enterprise | 500 requests/minute | Up to 100 entities per request |
X-RateLimit-Remaining, X-RateLimit-Reset) are included in every response.
Covered Sanctions Lists
Our database is updated daily and currently covers 278 sanctions lists, including:
- OFAC — SDN, Consolidated, Sectoral Sanctions
- European Union — Consolidated Financial Sanctions
- United Kingdom — OFSI Consolidated List
- United Nations — Security Council Sanctions
- Australia — DFAT Consolidated List
- Canada — OSFI Consolidated List
- Switzerland — SECO Sanctions
- Japan — MOF Foreign End-Users List
- Singapore — MAS Sanctions List
- Hong Kong — UNSO Designated Entities
- France — National Freezing Register
- ...and 267 additional lists
Disclaimers
Ready to get started?
API access is available with Corporate PRO and Enterprise plans.
View Pricing Try Free Screening