# Sanctions Screening — OFAC SDN & UN Sanctions List Name Check (`intelscrape/sanctions-screening`) Actor

Sanctions Screening: check names of people, companies and vessels against the OFAC SDN list, OFAC non-SDN consolidated lists and the UN Security Council list with fuzzy matching, aliases and match scores, plus programs, addresses, DOB and remarks. Bulk KYC/AML. Official sources. No API key.

- **URL**: https://apify.com/intelscrape/sanctions-screening.md
- **Developed by:** [IntelScrape](https://apify.com/intelscrape) (community)
- **Categories:** Business, Lead generation, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per event

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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 SDN & UN Sanctions List Name Check

![Sanctions Screening — OFAC SDN & UN Sanctions List Name Check](https://api.apify.com/v2/key-value-stores/hRabN9WfDGrT4nSvV/records/sanctions-screening-banner.png)

🇨🇳 **制裁名单筛查**：将个人、公司和船舶名称与美国 OFAC SDN 名单、OFAC 非 SDN 综合名单以及联合国安理会制裁名单进行比对，支持模糊匹配、别名和匹配分数，并返回制裁项目、地址、出生日期和备注。批量 KYC/AML，数据来自官方来源，无需 API 密钥。

🇸🇬 **Saringan Sekatan**: semak nama individu, syarikat dan kapal terhadap senarai OFAC SDN, senarai gabungan OFAC dan senarai Majlis Keselamatan PBB dengan padanan kabur, alias, skor, program, alamat dan tarikh lahir. Sumber rasmi.

#### 🤖 NEW: Connect This To Your AI!

Use this actor from Claude, ChatGPT, Cursor or any MCP client through the **[IntelScrape MCP Server](https://apify.com/intelscrape/skip--trace)**, or call it directly over the Apify API.

#### 🏆 Featured Bots by IntelScrape

- [Skip Trace Pro](https://apify.com/intelscrape/skip-trace-pro)
- [TruePeopleSearch Scraper](https://apify.com/intelscrape/truepeoplesearch-scraper)
- [TikTok Email Scraper](https://apify.com/intelscrape/tiktok-scraper)
- [Amazon Product Reviews Scraper](https://apify.com/intelscrape/amazon-product-review-scraper)
- [Website Contact Scraper](https://apify.com/intelscrape/contact-info-scraper)
- [Skip Trace MCP Server](https://apify.com/intelscrape/skip--trace)

⚡ Works with n8n, Make, Zapier, Google Sheets and the Apify API.

![price](https://img.shields.io/badge/price-%244%20per%201K%20names-blue) ![billing](https://img.shields.io/badge/billing-pay%20per%20name-green) ![source](https://img.shields.io/badge/source-OFAC%20%2B%20UN%20official-brightgreen) ![freshness](https://img.shields.io/badge/freshness-every%20run-orange)

**Bulk sanctions screening against the official OFAC SDN, OFAC consolidated and UN lists, with fuzzy alias matching and full listing details.**

> **Honest coverage & billing:** Name matching only; there is no ID-number or date-of-birth filter on input yet. You pay only for results actually delivered, and a built-in cost guard stops the run at your max-charge limit.

🌍 Built for teams in the **US, China and Singapore**, and anyone who needs this data in a spreadsheet or pipeline.

⭐ Found it useful? Please leave a review; it helps others find it.

⚖️ **Lawful business use only.** Collect public data only, and comply with the source site's terms, copyright and data-protection laws (GDPR, CCPA, China PIPL, Singapore PDPA).

*Examples below are illustrative; names and values may be fictional or out of date.*

### What is Sanctions Screening?

Every business that onboards customers, pays suppliers or ships goods internationally is expected to screen counterparties against sanctions lists. Enterprise screening tools cost thousands per year. **Sanctions Screening** downloads the official OFAC and UN lists fresh on every run and fuzzy-matches your names against every primary name and alias, so you get a clear, potential-match or match result with scores and the full listing details, at a few dollars per thousand names.

### What does it do?

- **Official lists, downloaded fresh each run**: OFAC SDN (about 18,000 parties), OFAC non-SDN consolidated lists (SSI, NS-MBS, CAPTA and others) and the UN Security Council consolidated list
- **Fuzzy matching** on primary names and every alias (aka, fka, nka) using token-aware Jaro-Winkler, robust to word order, accents, punctuation and company suffixes like LLC, Ltd, JSC
- **Clear / potential match / match** status with a 0 to 1 score
- **Match details (on by default)**: programs, aliases, addresses, nationality, date of birth, remarks (passport and ID numbers often appear here), vessel flag and source link
- **Filters**: entity type (individual, entity, vessel, aircraft) and adjustable threshold
- **Bulk**: thousands of names per run, in seconds after the lists load

### Why choose us over cheaper scrapers?

- **Honest output**: limits are documented, missing data is labeled, never invented
- **Clean, consistent schema** ready for Excel, Sheets, BI tools or an LLM
- **No account risk**: no logins, no cookies, no API keys
- **Pay per result** with a built-in cost guard; no subscription, failed items are never charged
- **Fast and light**: no residential proxy, so runs finish in seconds and stay cheap
- **Maintained by IntelScrape** and fixed fast when the source changes

### Who is it for?

- **KYC & customer onboarding** for fintechs, marketplaces and crypto platforms
- **Supplier and vendor due diligence**
- **Export compliance**: screen consignees and vessels
- **Payments**: screen payees before payout
- **Periodic re-screening** of your whole customer base on a schedule
- **Journalism and research** on sanctioned networks

### How to use it

#### In Apify Console (no code)

1. Click **Try for free** / **Start**. The form is prefilled with a working example.
2. Change the inputs (see examples below).
3. Click **Start**, then export the results as **JSON, CSV, Excel, XML or HTML**, or open them in Google Sheets.
4. Optional: **Schedule** the actor to run hourly, daily or weekly.

#### Via API

```bash
curl -X POST "https://api.apify.com/v2/acts/intelscrape~sanctions-screening/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"names": ["Banco Nacional de Cuba", "Vladimir Putin", "Acme Widgets LLC", "Kim Jong Un"], "matchDetails": true}'
```

Or use the official [Apify JavaScript](https://docs.apify.com/api/client/js/) and [Python](https://docs.apify.com/api/client/python/) clients:

```python
from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("intelscrape/sanctions-screening").call(run_input={"names": ["Banco Nacional de Cuba", "Vladimir Putin", "Acme Widgets LLC", "Kim Jong Un"], "matchDetails": true})
for item in client.dataset(run["default_dataset_id"]).iterate_items():
    print(item)
```

#### With AI agents (MCP)

Add Apify's MCP server (`https://mcp.apify.com`) or the [IntelScrape MCP Server](https://apify.com/intelscrape/skip--trace) to Claude Desktop, Cursor, ChatGPT or any MCP client, then ask in plain language, e.g. *"Run intelscrape/sanctions-screening with the default input and summarise the results."*

### Input examples

**Default: four sample names**

```json
{
  "names": ["Banco Nacional de Cuba", "Vladimir Putin", "Acme Widgets LLC", "Kim Jong Un"],
  "matchDetails": true
}
```

**Strict vessel screening on OFAC only**

```json
{
  "names": ["SEA DIAMOND", "OCEAN STAR"],
  "lists": ["ofac-sdn"],
  "entityType": "vessel",
  "minScore": "0.95"
}
```

### Output fields

| Field | Description |
|---|---|
| `query` | The name you submitted |
| `status` | clear, potential match (score below 0.97) or match |
| `topScore / matchCount` | Best score and number of listed parties above the threshold |
| `matches[].list / uid / name` | Which list and the official entry |
| `matches[].matchedName / matchedOn / score` | The exact primary name or alias that matched |
| `matches[].type / programs` | individual, entity, vessel or aircraft; sanctions programs (e.g. RUSSIA-EO14024, SDGT) |
| `matches[].aliases / addresses / nationality / dateOfBirth / remarks / sourceUrl` | Match details |
| `listsChecked / listSizes` | Audit trail of what was screened against |
| `screenedAt` | Timestamp for your records |

#### Sample output

```json
{
  "query": "Vladimir Putin",
  "status": "match",
  "topScore": 1,
  "matchCount": 2,
  "matches": [
    {
      "list": "ofac-sdn",
      "name": "PUTIN, Vladimir Vladimirovich",
      "matchedOn": "primary name",
      "score": 1,
      "type": "individual",
      "programs": ["RUSSIA-EO14024"]
    }
  ],
  "listsChecked": ["ofac-sdn", "ofac-consolidated", "un"]
}
```

### Pricing (pay per event)

| Event | When it is charged | Price |
|---|---|---|
| **Actor start** | once per run | $0.005 |
| **Name screened** | per name checked against all selected lists | $0.004 |
| **Match details** | per name with at least one match (on by default; turn off to skip) | $0.002 |

#### Cost examples

| Run | Cost |
|---|---|
| Default run: 4 names, 3 with matches | $0.027 |
| 1,000 customers, about 2% with matches | $4.045 |
| Monthly re-screen of 20,000 names | $80.8 |

Platform usage is included in these prices. Set **Max charge per run** in the run options to cap spend; the actor stops cleanly when the limit is reached and keeps everything collected so far.

### Tips for best results

- Screen full legal names; add common transliterations as separate lines for higher recall.
- Use 0.95 or higher for automatic decisions and 0.85 to 0.9 for analyst review queues.
- Keep the run output: screenedAt, listsChecked and listSizes give you an audit trail.
- Schedule a daily re-screen; lists change several times a week.

### FAQ

#### Is this legal advice or a certified screening service?

No. It is a fast data tool. A potential match must be reviewed by a person against the official listing; final compliance decisions are yours.

#### How fresh are the lists?

They are downloaded from the official OFAC and UN endpoints at the start of every run.

#### Does it include EU or UK lists?

Not yet; OFAC and UN are covered today.

#### Why did a common name match?

Fuzzy matching is deliberately sensitive. Check date of birth, nationality and remarks in match details before deciding.

#### Are my names stored?

Only in your own run dataset in your Apify account.

#### Is a clear result charged?

Yes, every screened name is charged; match details are only charged when there is a match.

### Honest limits

- Name matching only; there is no ID-number or date-of-birth filter on input yet.
- Non-Latin scripts are matched only through the Latin aliases the lists provide.
- Very short names (one token) produce more potential matches.
- The first minute of each run is spent downloading about 10 MB of official lists.

### Related IntelScrape bots

- [Email Verifier](https://apify.com/intelscrape/email-verifier): check if emails are deliverable
- [Skip Trace Pro](https://apify.com/intelscrape/skip-trace-pro): people lookup
- [WHOIS Domain Lookup](https://apify.com/intelscrape/whois-domain-lookup): registrar, dates & owner data
- [SPF DMARC Checker](https://apify.com/intelscrape/dns-email-security-checker): email security records per domain
- [Skip Trace MCP Server](https://apify.com/intelscrape/skip--trace): IntelScrape tools for AI agents

### Legal

This actor collects publicly available data only. You are responsible for using the results lawfully and in line with the source's terms and applicable privacy laws (GDPR, CCPA, PIPL, PDPA). Process personal data only with a legitimate purpose. IntelScrape is not affiliated with, endorsed by or sponsored by the data source; all trademarks belong to their owners.

# Actor input Schema

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

People, companies, banks, vessels or aircraft, one per line.

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

Which official lists to check.

## `minScore` (type: `string`):

Fuzzy-match threshold. Lower finds more spelling variants (more false positives); 1 = exact only.

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

Only match listed parties of this type.

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

Highest-scoring matches returned per name.

## `matchDetails` (type: `boolean`):

Add aliases, addresses, nationality, date of birth, remarks and source links to every match. Charged once per name that has matches.

## `proxyConfiguration` (type: `object`):

Not needed normally. The actor switches to Apify Proxy automatically if the source starts rate-limiting.

## Actor input object example

```json
{
  "names": [
    "Banco Nacional de Cuba",
    "Vladimir Putin",
    "Acme Widgets LLC",
    "Kim Jong Un"
  ],
  "lists": [
    "ofac-sdn",
    "ofac-consolidated",
    "un"
  ],
  "minScore": "0.88",
  "entityType": "any",
  "maxMatchesPerName": 5,
  "matchDetails": true,
  "proxyConfiguration": {
    "useApifyProxy": 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",
        "Vladimir Putin",
        "Acme Widgets LLC",
        "Kim Jong Un"
    ],
    "matchDetails": true
};

// Run the Actor and wait for it to finish
const run = await client.actor("intelscrape/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",
        "Vladimir Putin",
        "Acme Widgets LLC",
        "Kim Jong Un",
    ],
    "matchDetails": True,
}

# Run the Actor and wait for it to finish
run = client.actor("intelscrape/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",
    "Vladimir Putin",
    "Acme Widgets LLC",
    "Kim Jong Un"
  ],
  "matchDetails": true
}' |
apify call intelscrape/sanctions-screening --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,intelscrape/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/percfhyy9KCoy9qFZ/builds/Pv2m6aengTz1XGzE5/openapi.json
