Screen individuals and entities against 305,000+ entries across 278 global sanctions lists in real time.
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.
https://ohmyfin.org/api/v4/sanctions
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
POST /api/v4/sanctions/screen
Screen an individual or entity name against all sanctions lists. Returns matching entries sorted by relevance score.
| 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. |
{
"name": "John Smith",
"threshold": 0.8,
"max_results": 50
}
{
"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..."
}
]
}
| 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. |
GET /api/v4/sanctions/entity/{entity_id}
Retrieve detailed information about a specific sanctioned entity by its unique identifier.
Returns the full entity object with all available fields (same structure as individual match objects in the screen response).
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 }'
| 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. |
{
"success": false,
"error": "Description of what went wrong",
"errors": {
"name": ["The name field is required."]
}
}
| 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.
Our database is updated daily and currently covers 278 sanctions lists, including:
API access is available with Corporate PRO and Enterprise plans.
View Pricing Try Free Screening