Sanctions Screening API

Screen individuals and entities against 140+ global sanctions lists including OFAC, EU, UK, UN, and more.

91,000+ Entities 149 Sanctions Lists ~60ms Response Time Daily Updates

Quick Start

All API requests require authentication via the KEY header with your organization's API key.

Base URL:

https://ohmyfin.ai/api/v4
Authentication Example:
# Include your API key in the KEY header curl -X POST https://ohmyfin.ai/api/v4/sanctions/screen \ -H "KEY: your_api_key_here" \ -H "Content-Type: application/json" \ -d '{"name": "John Smith"}'

API Endpoints

POST /api/v4/sanctions/screen

Screen a single entity against all sanctions lists.

Request Parameters
ParameterTypeDescription
name required string Name of the person, organization, or entity to screen (2-255 chars)
threshold optional number Match threshold between 0.6 and 0.95 (default: 0.8). Lower values return more results.
max_results optional integer Maximum number of results to return, 1-100 (default: 50)
include_lists optional array Only search these specific lists (e.g., ["OFAC", "EU"])
exclude_lists optional array Exclude these lists from search
Code Examples
curl -X POST https://ohmyfin.ai/api/v4/sanctions/screen \ -H "KEY: your_api_key" \ -H "Content-Type: application/json" \ -d '{ "name": "John Smith", "threshold": 0.8, "max_results": 50 }'
import requests response = requests.post( "https://ohmyfin.ai/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.ai/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} (${Math.round(match.score * 100)}% match) - ${match.list_source}`); });
<?php $ch = curl_init('https://ohmyfin.ai/api/v4/sanctions/screen'); curl_setopt_array($ch, [ CURLOPT_RETURNTRANSFER => true, CURLOPT_POST => true, CURLOPT_HTTPHEADER => [ 'KEY: your_api_key', 'Content-Type: application/json' ], CURLOPT_POSTFIELDS => json_encode([ 'name' => 'John Smith', 'threshold' => 0.8, 'max_results' => 50 ]) ]); $response = curl_exec($ch); $result = json_decode($response, true); echo "Found {$result['total_matches']} matches\n"; foreach ($result['matches'] as $match) { $score = round($match['score'] * 100); echo "- {$match['name']} ({$score}% match) - {$match['list_source']}\n"; }
Response Example
{ "success": true, "query": "John Smith", "threshold": 0.8, "matches": [ { "name": "JOHN SMITH", "score": 0.95, "entity_type": "person", "list_source": "OFAC-SDN", "list_name": "Specially Designated Nationals", "entity_id": "ofac-12345", "aliases": ["J. SMITH", "JOHNNY SMITH"], "nationalities": ["US"], "programs": ["SDGT"] } ], "total_matches": 1, "search_time_ms": 45 }
POST /api/v4/sanctions/screen/bulk

Screen multiple entities in a single request (up to 100 entities per request).

Request Parameters
ParameterTypeDescription
entities required array Array of entities to screen. Each entity has name (required) and type (optional: person, organization, vessel, aircraft)
threshold optional number Match threshold between 0.6 and 0.95 (default: 0.8)
max_results_per_entity optional integer Max results per entity, 1-50 (default: 10)
Request Example
{ "entities": [ {"name": "John Smith", "type": "person"}, {"name": "Acme Corporation", "type": "organization"}, {"name": "Jane Doe"} ], "threshold": 0.8, "max_results_per_entity": 10 }
Response Example
{ "success": true, "threshold": 0.8, "results": [ { "index": 0, "query": "John Smith", "has_matches": true, "total_matches": 2, "matches": [...] }, { "index": 1, "query": "Acme Corporation", "has_matches": false, "total_matches": 0, "matches": [] } ], "summary": { "total_entities_screened": 3, "entities_with_matches": 1, "entities_without_matches": 2, "total_search_time_ms": 120 } }
GET /api/v4/sanctions/lists

Get all available sanctions lists with metadata including entity counts and last update times.

Response Example
{ "success": true, "lists": [ { "list_name": "OFAC-SDN", "full_name": "Specially Designated Nationals and Blocked Persons", "description": "US Treasury OFAC SDN List", "entity_count": 12500, "severity": "high", "last_update": "2025-12-10T00:00:00Z" } ], "total_lists": 149, "total_entities": 91000 }
GET /api/v4/sanctions/entity/{entityId}

Get detailed information about a specific sanctioned entity by its ID.

Path Parameters
ParameterTypeDescription
entityId required string The unique entity ID returned from a screening search
Response Example
{ "success": true, "entity": { "entity_id": "ofac-12345", "name": "JOHN SMITH", "entity_type": "person", "list_source": "OFAC-SDN", "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 about the entity..." } }

Error Handling

The API uses standard HTTP status codes and returns errors in a consistent JSON format:

Status CodeDescription
200Success
400Bad Request - Invalid parameters
401Unauthorized - Invalid or missing API key
403Forbidden - API key doesn't have access to this endpoint
404Not Found - Entity not found
429Too Many Requests - Rate limit exceeded
500Internal Server Error
Error Response Format
{ "success": false, "error": "Description of what went wrong", "errors": { // Only for validation errors "name": ["The name field is required."] } }

API Pricing

Starter
$99
/month

  • 1,000 screenings/month
  • Single entity screening
  • All sanctions lists
  • Email support
Contact Sales
Enterprise
Custom
contact us

  • Unlimited screenings
  • Bulk screening (500/batch)
  • Custom list filtering
  • Dedicated support
  • SLA guarantee
  • On-premise option
Contact Sales

Ready to Get Started?

Try our sanctions screening tool for free, then upgrade to API access when you're ready to integrate.

Supported Sanctions Lists

We aggregate and update daily from these major sanctions authorities:

US OFAC (US Treasury)
EU EU Sanctions
UK OFSI (UK)
UN UN Security Council
CH SECO (Switzerland)
CA Canada Sanctions
AU Australia DFAT
JP Japan MOF

Plus 140+ additional lists including regional sanctions, PEP databases, and regulatory watchlists.