# Sanctions Screening: OFAC, UN & UK Lists Name Check (Bulk) (`plotpointtech/sanctions-screening`) Actor

Screen people and companies against the official US OFAC SDN and consolidated lists, the UN Security Council list and the UK Sanctions List, downloaded fresh each run. Fuzzy name matching with scores, aliases, programmes and DOB. $3 per 1,000 names.

- **URL**: https://apify.com/plotpointtech/sanctions-screening.md
- **Developed by:** [Plot Point Technologies](https://apify.com/plotpointtech) (community)
- **Categories:** Developer tools, Automation, Other
- **Features:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.86 / 1,000 name screeneds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
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 Screening: OFAC, UN & UK Lists Name Check (Bulk)

**Check customers, suppliers and counterparties against the official sanctions lists for $3 per 1,000 names.** Paste a list of people or company names and each one is fuzzy-matched against the **US OFAC SDN list**, the **OFAC consolidated (non-SDN) lists**, the **UN Security Council consolidated list** and the **UK Sanctions List**. All four are downloaded fresh from the government sources on every run. For each name you get a clear, potential-match or match status, a similarity score, the matched list entry with its aliases, sanctions programmes, date of birth, nationality and a link to the official record.

### What can this sanctions screening tool do?

- **Screen in bulk:** from a handful of names to 100,000 in one run, in seconds.
- **Four official lists** (about 27,000 entries with tens of thousands of aliases): OFAC SDN, OFAC consolidated non-SDN (SSI, NS-MBS and others), UN Security Council and UK (OFSI/FCDO).
- **Fuzzy matching** handles word order ("PUTIN, Vladimir" = "Vladimir Putin"), accents and transliteration, punctuation, company suffixes (Ltd, LLC, JSC, OOO, GmbH...) and titles, and checks every alias, not just the primary name.
- **Adjustable threshold:** 85 by default; lower it to catch more spelling variants, raise it to cut false positives. Scores of 95+ are labelled **match**.
- **Filter by type:** people, organisations, or vessels and aircraft.
- **Always current:** no stale copy. The lists are read straight from treasury.gov, un.org and gov.uk when the run starts, and each result records when it was checked.

### What data do you get?

One record per name screened:

| Field | Description |
|---|---|
| `name`, `normalizedName` | The name you gave and how it was compared |
| `status` | `clear`, `potential match` or `match` (score 95+) |
| `topScore`, `topMatch`, `topMatchList`, `matchCount` | The best match at a glance |
| `matches` | Closest list entries: `score`, `matchedName`, `primaryName`, `list`, `listId`, `type`, `programs`, `dateOfBirth`, `nationality`, `aliases`, `remarks`, `sourceUrl` |
| `listsChecked`, `threshold`, `checkedAt` | What was screened and when (keep it as your audit trail) |

### Who uses it?

- **Fintech, payments and crypto teams** screening new customers and payees during onboarding.
- **Exporters, freight forwarders and marketplaces** checking buyers, consignees and vessels before shipping.
- **Compliance and finance teams** re-screening the whole customer or supplier base after each list update.
- **Developers** adding a sanctions check to sign-up, KYB or invoicing workflows through the API.

### How to use it

1. Click **Try for free** (or **Start**).
2. Paste your **Names to screen**, one per line.
3. Choose the **Sanctions lists**, **Match threshold** and **Entity type** if you need to.
4. Run it and review the **Output** tab: filter by `status`, then check each potential match against its `sourceUrl`.

### Input example

```json
{
  "names": ["Vladimir Putin", "Rosneft", "Acme Widgets Ltd"],
  "lists": ["ofac_sdn", "ofac_consolidated", "un", "uk"],
  "threshold": 85,
  "entityType": "any"
}
```

### Output example

From a real run (shortened):

```json
{
  "name": "Vladimir Putin",
  "status": "match",
  "topScore": 100,
  "topMatch": "PUTIN, Vladimir Vladimirovich",
  "topMatchList": "OFAC Specially Designated Nationals (SDN)",
  "matchCount": 3,
  "matches": [
    {
      "score": 100,
      "matchedName": "PUTIN, Vladimir",
      "primaryName": "PUTIN, Vladimir Vladimirovich",
      "list": "OFAC Specially Designated Nationals (SDN)",
      "type": "individual",
      "programs": ["RUSSIA-EO14024"],
      "dateOfBirth": "07 Oct 1952",
      "sourceUrl": "https://sanctionssearch.ofac.treas.gov/Details.aspx?id=35096"
    }
  ],
  "listsChecked": ["sdn", "cons", "un", "uk"],
  "checkedAt": "2026-11-08T19:29:05+00:00"
}
```

"Acme Widgets Ltd" came back `clear` in the same run.

### How much does it cost?

**$3 per 1,000 names screened** ($0.003 each), plus a $0.00005 start fee per run. Every name is charged once per run, whether it matches or not; duplicates in your list are screened once.

| You screen | You pay |
|---|---|
| 1 new customer at sign-up | $0.003 |
| 1,000 suppliers | $3.00 |
| 50,000 customers, monthly re-screen | $150.00 |

**Volume discounts on higher Apify plans.** The prices above are for the Apify Free plan. On paid plans the price drops automatically: about 15% lower on Bronze, 25% lower on Silver and 38% lower on Gold and above.

### Use it via API, Make, Zapier, n8n or an AI agent

**Apify API.** Screen a name and get the result back in one HTTP request (replace `YOUR_API_TOKEN` with the token from Apify Console > Settings > Integrations):

```bash
curl -X POST "https://api.apify.com/v2/acts/plotpointtech~sanctions-screening/run-sync-get-dataset-items?token=YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"names": ["Example Trading LLC"], "threshold": 88}'
```

Official `apify-client` libraries exist for Python and JavaScript; the **API** tab on this page has ready-made code.

**No-code automation.** Connect the tool to **Make, Zapier, n8n, Google Sheets, HubSpot, Airtable** or any webhook, or schedule a monthly re-screen of your whole list in Apify.

**AI agents (MCP).** Give Claude, ChatGPT, Cursor or any MCP-compatible agent direct access through the hosted Apify MCP server:

```
https://mcp.apify.com?tools=plotpointtech/sanctions-screening
```

### FAQ

**Is a match proof that someone is sanctioned?**
No. Name screening finds list entries with similar names; many people share names. Treat every `potential match` and `match` as an alert to review: compare date of birth, nationality, address and other identifiers on the official record before acting. This tool supports your compliance process; it is not legal advice and does not replace your own procedures.

**Which lists are not included?**
The EU consolidated list (its download needs a personal access token), national lists of other countries, PEP (politically exposed persons) and adverse-media databases. Ask on the **Issues** tab if you need one.

**How fresh are the lists?**
They are downloaded from the official government sources at the start of every run, so each run uses the version published at that moment.

**What does the score mean?**
0-100 similarity between your name and the closest name or alias on the entry, after normalising case, accents, punctuation, word order, titles and company suffixes. Single-word names (for example "Bank") must match a whole name closely, so they do not hit every bank on the lists.

**Is my data stored or shared?**
Names are processed inside your own Apify run and stored only in your Apify storage. The tool only downloads the public lists; your names are never sent to any third party.

### Related tools from Plot Point Technologies

- [UK Companies House Scraper - Officers, PSC, Filings](https://apify.com/plotpointtech/uk-companies-house-scraper): check UK company details, officers and owners.
- [France Company Search (SIRENE) - SIREN, Directors](https://apify.com/plotpointtech/france-company-search): look up French companies by name or SIREN.
- [Bulk Email Validator - Syntax, MX, Disposable & Role Check](https://apify.com/plotpointtech/bulk-email-validator): clean customer contact data.

Plot Point Technologies is not affiliated with the US Department of the Treasury (OFAC), the United Nations or the UK Government. List data: OFAC (US public domain), UN Security Council, UK Sanctions List (Open Government Licence v3.0). Questions: support@plotpoint.tech.

***

If this tool saved you time, we would be grateful for a short review on this page; it helps other people find it. If something did not work as expected, please open an issue on the **Issues** tab and we will look into it quickly.

# Actor input Schema

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

People, companies, vessels or aircraft to check, one per line. Up to 100,000 per run.

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

Official lists to screen against, downloaded fresh from the government source on every run.

## `threshold` (type: `integer`):

Minimum similarity score to report. Lower finds more spelling variants but more false positives. 95+ is reported as a match.

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

Only compare against list entries of this type.

## `maxMatchesPerName` (type: `integer`):

How many of the closest list entries to return for each name.

## `onlyReturnMatches` (type: `boolean`):

Skip names that came back clear (they are still charged, as they were screened).

## Actor input object example

```json
{
  "names": [
    "Banco Nacional de Cuba",
    "Acme Widgets Ltd"
  ],
  "lists": [
    "ofac_sdn",
    "ofac_consolidated",
    "un",
    "uk"
  ],
  "threshold": 85,
  "entityType": "any",
  "maxMatchesPerName": 5,
  "onlyReturnMatches": false
}
```

# Actor output Schema

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

No description

# 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": [
        "Banco Nacional de Cuba",
        "Acme Widgets Ltd"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("plotpointtech/sanctions-screening").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": [
        "Banco Nacional de Cuba",
        "Acme Widgets Ltd",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("plotpointtech/sanctions-screening").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": [
    "Banco Nacional de Cuba",
    "Acme Widgets Ltd"
  ]
}' |
apify call plotpointtech/sanctions-screening --silent --output-dataset

```

## MCP server setup

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

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/XcGRSlYsghR7FYxQh/builds/f3DPtX4AwWL7dUvIi/openapi.json
