# Sanctions Screening — EU, OFAC & UN | $8/1K (`datawell/sanctions-screening`) Actor

Screen names against official EU, US OFAC and UN sanctions lists, fetched live from the authorities. Each hit returns the programme, legal basis and a link to the official record. Aliases searched, whole-word matching cuts false positives. For KYC, KYB and export compliance.

- **URL**: https://apify.com/datawell/sanctions-screening.md
- **Developed by:** [datawell](https://apify.com/datawell) (community)
- **Categories:** Business
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

$8.00 / 1,000 results

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/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Sanctions Screening — EU, US OFAC & UN Lists

Screen names against the **official** sanctions lists published by the European
Union, the US Treasury (OFAC) and the United Nations Security Council. Straight
from the authorities, with a link to the legal source on every row.

No API key. No account. No third-party licence.

***

### Why this exists

Anti-money-laundering rules require regulated businesses — banks, insurers,
estate agents, notaries, exporters, crypto firms — to check counterparties
against sanctions lists before doing business. Enterprise screening tools are
priced for enterprises.

This Actor does the lookup on the primary sources: the same CSV and XML files
the authorities publish themselves. Every hit carries the **programme**, the
**legal basis** and a **link to the official record** — the three things an
auditor asks for.

***

### What you can do

| Mode | What you get |
|---|---|
| **Screen names against the lists** | Every match for the names you enter, across all three authorities, with aliases, birth dates, nationalities and programme |
| **Export the full lists** | The complete lists as flat rows, ready for your own database |
| **Show list sizes and sources** | How many entries each list holds and where the authority publishes it |

***

### The lists

| Authority | Entries | What it covers |
|---|---|---|
| **European Union** | ~6,200 | Consolidated Financial Sanctions List — asset freezes and restrictions under EU regulations |
| **US Treasury (OFAC)** | ~19,200 | Specially Designated Nationals, including vessels and aircraft |
| **United Nations** | ~1,000 | Security Council Consolidated List — the basis most national lists build on |

Each is fetched live from the publishing authority on every run, so you always
screen against the current version.

***

### Quick start

1. Pick **Screen names against the lists**.
2. Enter the names to check, one per line.
3. Click **Start**, download as CSV for your file.

***

### Example inputs

**Check a counterparty against all three lists**

```json
{
  "mode": "screenNames",
  "names": ["Gazprom", "Rosneft", "Sberbank"],
  "maxItems": 200
}
```

**EU list only, for an EU-regulated obligation**

```json
{
  "mode": "screenNames",
  "names": ["Example Trading GmbH"],
  "sources": ["eu"],
  "maxItems": 50
}
```

**Screen a whole customer list in one run**

```json
{
  "mode": "screenNames",
  "names": ["Alpha Ltd", "Beta SA", "Gamma AG", "Delta BV"],
  "maxItems": 500
}
```

**Export the EU list into your own system**

```json
{
  "mode": "exportLists",
  "sources": ["eu"],
  "maxItems": 10000
}
```

***

### Output fields

| Field | Description |
|---|---|
| `name` | Official name as published |
| `matchedTerm` | Which of your search terms produced the hit |
| `aliases` | Every other name and spelling on the entry |
| `source` | Which authority publishes it |
| `programme` | Which sanctions programme applies, e.g. `UKRAINE-EO14024` |
| `legalBasis` | The regulation the listing rests on (EU) |
| `sourceUrl` | **Link to the official record** |
| `listedOn`, `lastUpdated` | When the entry was designated and last changed |
| `type` | Person, Entity, Vessel or Aircraft |
| `birthDates`, `birthPlaces`, `nationalities`, `gender` | For people — what separates a real hit from a namesake |
| `positions` | Function or title held |
| `addresses`, `identifiers` | Addresses and passport, ID or registration numbers |
| `vesselCallSign`, `vesselType`, `vesselFlag`, `vesselOwner` | For listed vessels |
| `euReference`, `unReference`, `entityId` | Reference numbers used by the authorities |
| `remarks` | Additional context published with the listing |

***

### How matching works

Names are compared against the official name **and every recorded alias** — so
`Taliban` also finds entries that carry it only as an alias, and transliterated
spellings are covered where the authority publishes them.

**Whole-word matching is on by default.** Without it, `Putin` also matches
`Supercomputing`. In a compliance workflow every false positive costs review
time, so this is the safer default. Turn it off for deliberately fuzzy searches.

***

### Limits and honest caveats

- **This is a lookup tool, not a compliance product.** No liability cover, no
  phonetic fuzzy matching, no audit trail. Treat the output as research input.
- **A name match is not an identification.** Compare date of birth, nationality
  and identifiers before acting on a hit.
- **Coverage is these three lists.** National lists (UK, Switzerland, Canada,
  Australia) and PEP registers are not included.
- **No fuzzy matching.** Misspellings and transliteration variants the authority
  does not list will be missed.
- **Lists are fetched live**, so a run takes a few seconds longer than a cached
  lookup — in exchange the data is never stale.

***

### FAQ

**Do I need an API key?**
No. All three authorities publish these lists openly.

**Is this enough for regulatory KYC?**
It gives you the primary-source data, but without workflow, archiving or
liability. Many teams use it for pre-screening and supplier checks, then
escalate real hits into their formal process.

**Why do I get hits that are obviously a different person?**
Names repeat across the world. Use `birthDates`, `nationalities` and
`identifiers` to rule out namesakes.

**Can I check hundreds of names at once?**
Yes. Put them all in the names field; they are screened in a single pass.

**Are PEP lists included?**
No. Politically exposed person registers come from aggregators whose data is
licensed for non-commercial use only, so they are deliberately left out.

**What formats can I export?**
CSV, Excel, JSON, XML, or straight from the Apify API.

***

### Sources

- [EU Consolidated Financial Sanctions List](https://data.europa.eu/data/datasets/consolidated-list-of-persons-groups-and-entities-subject-to-eu-financial-sanctions)
- [US OFAC Specially Designated Nationals](https://ofac.treasury.gov/specially-designated-nationals-and-blocked-persons-list-sdn-human-readable-lists)
- [UN Security Council Consolidated List](https://www.un.org/securitycouncil/content/un-sc-consolidated-list)

These are official publications of the respective authorities. Entries concern
identifiable people: screening data is personal data under GDPR, so you need a
lawful basis, and results should not be stored longer or shared more widely than
your obligation requires.

# Actor input Schema

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

Screen specific names against the official lists, or export the lists themselves. Each option below says which extra field it needs — fill that one in, the rest are ignored.

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

People, companies or vessels to check, one per line. Matched against official names and every recorded alias.

## `sources` (type: `array`):

Which official lists to check: eu, ofac, un. Leave empty to use all three.

## `exactWordMatch` (type: `boolean`):

Recommended. Without it, searching for 'Putin' also matches 'Supercomputing' — in a compliance workflow every false positive costs review time.

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

How many records to return in total.

## Actor input object example

```json
{
  "mode": "screenNames",
  "names": [
    "Vladimir Putin"
  ],
  "sources": [
    "eu",
    "ofac",
    "un"
  ],
  "exactWordMatch": true,
  "maxItems": 100
}
```

# Actor output Schema

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

Matched or exported entities with name, aliases, risk flags, listing authorities, identifiers and dates.

## `resultsCsv` (type: `string`):

The same rows as a CSV download, ready for Excel or an audit file.

# 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": [
        "Gazprom"
    ],
    "sources": [
        "eu",
        "ofac",
        "un"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("datawell/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": ["Gazprom"],
    "sources": [
        "eu",
        "ofac",
        "un",
    ],
}

# Run the Actor and wait for it to finish
run = client.actor("datawell/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": [
    "Gazprom"
  ],
  "sources": [
    "eu",
    "ofac",
    "un"
  ]
}' |
apify call datawell/sanctions-screening --silent --output-dataset

```

## MCP server setup

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