Sanctions Screening API

Screen individuals and entities against 305,000+ entries across 278 global sanctions lists in real time.

REST API ~60ms response Daily Updates 278 Lists

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.

Coverage: OFAC SDN, EU Consolidated, UK OFSI, UN Security Council, and 274+ additional lists from governments worldwide. Updated daily from official sources.

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.

HTTP Header
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

ParameterTypeDescription
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

JSON Request Body
{
  "name": "John Smith",
  "threshold": 0.8,
  "max_results": 50
}

Response

JSON 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

FieldTypeDescription
successbooleanWhether the request was processed successfully.
total_matchesintegerTotal number of matching entities found.
matchesarrayArray of matching entity objects.
matches[].entity_idstringUnique identifier for the sanctioned entity.
matches[].namestringPrimary name of the sanctioned entity.
matches[].entity_typestringType of entity: person, organization, or vessel.
matches[].list_sourcestringSource sanctions list (e.g., OFAC-SDN, EU, UN, OFSI).
matches[].scorenumberMatch confidence score from 0 to 1.
matches[].aliasesarrayKnown aliases for the entity.
matches[].nationalitiesarrayKnown nationalities (ISO country codes).
matches[].birth_datesarrayKnown dates of birth (persons only).
matches[].addressesarrayKnown addresses with city and country.
matches[].identificationsarrayIdentity documents (passport, national ID, etc.).
matches[].programsarraySanctions programmes the entity is listed under.
matches[].remarksstringAdditional 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

Python
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']}")
JavaScript (Node.js / Browser)
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
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 CodeDescription
200Success. Results returned in the response body.
400Validation error. Check the errors field for details.
401Authentication failed. Verify your API key.
429Rate limit exceeded. Slow down your requests.
500Server error. Retry after a short delay.

Error Response Format

Error Response
{
  "success": false,
  "error": "Description of what went wrong",
  "errors": {
    "name": ["The name field is required."]
  }
}

Rate Limits

PlanRate LimitBulk Screening
Corporate PRO100 requests/minuteUp to 50 entities per request
Enterprise500 requests/minuteUp to 100 entities per request
Rate limit headers (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

Important: This API is provided for informational purposes only and should not be the sole basis for compliance decisions. Always verify results with official sources and consult qualified compliance professionals. Ohmyfin does not provide legal or compliance advice.

Ready to get started?

API access is available with Corporate PRO and Enterprise plans.

View Pricing Try Free Screening