# Sanctions Screener — OFAC, UN, EU, UK & Canada Lists (`tacps126/sanctions-screener`) Actor

Screen names against the official OFAC SDN and consolidated, UN, EU, UK and Canada sanctions lists: fuzzy matching, birth-year and country checks, verdicts. Follow new designations, export the lists. Real-time API.

- **URL**: https://apify.com/tacps126/sanctions-screener.md
- **Developed by:** [Tapaswai Ashok Choudhary](https://apify.com/tacps126) (community)
- **Stats:** 1 total users, 0 monthly users, 0.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.40 / 1,000 name screeneds

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Sanctions Screener — OFAC, UN, EU, UK & Canada Lists

Screen people and companies against the **official sanctions lists, read straight from each publisher**: the US OFAC SDN and consolidated (non-SDN) lists, the UN Security Council consolidated list, the EU consolidated financial sanctions list, the UK Sanctions List, Canada's consolidated autonomous sanctions list and the Swiss SECO list. About 46,000 listed people, organisations, vessels and aircraft, refreshed on every run.

**Built for** KYC and KYB onboarding, fintechs and payment companies, trade and logistics compliance, vendor and partner due diligence, procurement, and AI agents that need a sanctions check.

### What you get

For every name, a **verdict** (`match`, `possible-match` or `no-match`) and the best matching entries:

| Field | Example |
|---|---|
| `status`, `topScore` | `match`, `100` |
| `matches[].matchedName` | `PUTIN, Vladimir` (the name or alias that matched) |
| `matches[].list`, `listName` | `us-ofac-sdn`, US OFAC Specially Designated Nationals (SDN) List |
| `matches[].programs` | `RUSSIA-EO14024` |
| `matches[].countries`, `birthDates`, `identifiers` | `Russia`, `1952-10-07`, `Passport …` |
| `matches[].checks` | `birthYear: consistent`, `country: different` |
| `matches[].url` | the entry on the publisher's site |

### Matching that copes with real names

- **Transliteration.** `Владимир Путин`, `PUTIN, Vladimir` and `Vladimir Putin` are the same name; so are `Mohammed` and `Muhammad`, `Gaddafi` and `Qaddafi`.
- **Any word order, patronymics and initials.** `V. Putin` and `Vladimir Vladimirovich PUTIN` are found too.
- **Company forms ignored.** `Ltd`, `LLC`, `PJSC`, `OOO`, `GmbH`… don't count. Generic words such as *Bank*, *Trading* or *Group* count for less, so `Bank` alone doesn't match every listed bank.
- **Fewer false positives.** Add a date of birth or a country: a different birth year or country lowers a match and is flagged under `checks`. A strong name match is never hidden, only lowered.

### Three modes

1. **Screen names.** Paste names (one per line), or send `subjects` with your own reference, date of birth, country and type.
2. **Follow changes.** Schedule mode `changes` (daily, for example). Each run reports the **new designations and the removals** since the last run, optionally only for some programmes or countries. The first run saves a baseline.
3. **Export.** All entries, or only those matching programmes (`RUSSIA`, `IRAN`, `SDGT`…), countries, entity type, or a listing date, in one schema.

### Real-time API

Run it in **Standby mode** for screening during onboarding: the lists are read once and kept in memory for six hours, so each call answers in milliseconds:

```
GET https://<your-standby-url>/?names=Rosneft&format=json
```

### How to use it

```json
{
  "names": ["Rosneft", "Acme Trading LLC"],
  "subjects": [{ "name": "Vladimir Putin", "id": "customer-17", "dateOfBirth": "1952", "country": "RU" }],
  "minScore": 85,
  "matchScore": 95
}
```

### Pricing

**$3 per 1,000 names screened** (match or not) and **$1 per 1,000 list entries** delivered in `changes` and `export`, plus a small start fee per run.

### Good to know

- The lists are the publishers' own files, used as published. This Actor is a **screening aid, not legal advice or a clearance**: review possible matches yourself, and follow your own compliance policy.
- If a publisher's file can't be downloaded, the run says so in its summary and in `listsChecked`.
- Need another list, or a private feed? **Contact tacps126@gmail.com**.

# Actor input Schema

## `mode` (type: `string`):

Screen names, follow list changes on a schedule, or export the lists in one schema.

## `names` (type: `array`):

People or organisations, one per line.

## `subjects` (type: `array`):

For fewer false positives: \[{"name": "…", "id": "your ref", "dateOfBirth": "1966", "country": "IR", "type": "individual"}]. A different birth year or country lowers a match.

## `lists` (type: `array`):

Empty = all seven.

## `entityType` (type: `string`):

Screen against people, organisations (with vessels and aircraft), or both.

## `minScore` (type: `integer`):

Name similarity (0–100) from which a list entry is reported as a possible match.

## `matchScore` (type: `integer`):

From this score the verdict is `match` (below it, `possible-match`).

## `maxMatches` (type: `integer`):

Best matching list entries reported per name.

## `programs` (type: `array`):

Only entries whose programme or regime contains one of these words (e.g. RUSSIA, Iran, SDGT).

## `countries` (type: `array`):

Only entries linked to these countries (names or ISO codes).

## `listedWithinDays` (type: `integer`):

0 = any date.

## `maxItems` (type: `integer`):

Names screened, or entries delivered.

## `monitorName` (type: `string`):

Keeps separate baselines for separate monitors.

## `tenantId` (type: `string`):

For platforms serving many customers: keeps each one's monitor state apart.

## `debug` (type: `boolean`):

Extra logging.

## Actor input object example

```json
{
  "mode": "screen",
  "names": [
    "Vladimir Putin",
    "Rosneft",
    "Acme Trading LLC"
  ],
  "entityType": "any",
  "minScore": 85,
  "matchScore": 95,
  "maxMatches": 5,
  "listedWithinDays": 0,
  "maxItems": 1000,
  "debug": false
}
```

# Actor output Schema

## `results` (type: `string`):

The produced items (default dataset items).

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "names": [
        "Vladimir Putin",
        "Rosneft",
        "Acme Trading LLC"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("tacps126/sanctions-screener").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "names": [
        "Vladimir Putin",
        "Rosneft",
        "Acme Trading LLC",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("tacps126/sanctions-screener").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "names": [
    "Vladimir Putin",
    "Rosneft",
    "Acme Trading LLC"
  ]
}' |
apify call tacps126/sanctions-screener --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,tacps126/sanctions-screener"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/U6r10yiBVhZnp2O0a/builds/JeHIpphSBgD6xzVlo/openapi.json
