# Global Sanctions List — OFAC, EU & UK Screening (`sourcerow/global-sanctions-list`) Actor

31,817 sanctioned people, companies, vessels and aircraft from the US OFAC, EU and UK official lists — three incompatible formats reduced to one table, fetched fresh on every run.

- **URL**: https://apify.com/sourcerow/global-sanctions-list.md
- **Developed by:** [SourceRow](https://apify.com/sourcerow) (community)
- **Categories:**
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$2.00 / 1,000 entities

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?

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

31,817 sanctioned people, companies, vessels and aircraft. The US OFAC, EU and
UK official lists in one table with the same 33 fields on every row, fetched
from the three authorities on every run.

### What it does

Three governments publish sanctions lists in three incompatible formats: OFAC as
a fixed-width text file, the EU as XML, the UK as its own CSV. Names,
identifiers and programme codes sit in different places and mean different
things in each.

This Actor fetches all three, normalises them into one shape, and returns one
row per listed entity with 33 fields. Lists are fetched fresh on every run,
never from a cached copy, because a sanctions list read from yesterday's copy is
worse than no list.

### What you get

33 fields per row, including `name`, `entity_type`, `source`, `regime`,
`programme`, `nationalities`, `dates_of_birth`, `aliases_count`, `passports`,
`national_ids`, `addresses`, `designated_on`, `source_id` and `retrieved_at`.

The table view shows 10 of them; all 33 are in the JSON, CSV and Excel
downloads.

### Input

| Field | Meaning |
|---|---|
| `sources` | Which lists to fetch: `ofac`, `eu`, `uk`. All three by default. |
| `entityTypes` | Restrict to `individual`, `entity`, `vessel` or `aircraft`. |
| `maxEntities` | Stop after this many. `0` removes the cap. |

```json
{
  "sources": ["ofac", "eu", "uk"],
  "entityTypes": [],
  "maxEntities": 1000
}
```

### Sample output

One complete record:

```json
{
  "name": "BANCO NACIONAL DE CUBA",
  "entity_type": "entity",
  "source": "ofac",
  "regime": "CUBA",
  "nationalities": null,
  "dates_of_birth": null,
  "aliases_count": 1,
  "designated_on": null,
  "passports": null,
  "issues": ""
}
```

### Pricing

| Event | Per 1,000 | Notes |
|---|---|---|
| Entity | $2.00 | One charge per listed entity returned |

All three lists in full is $63.63. There is no start fee and no per-row dataset
fee.

### What it does not do

**It does not decide whether a name matches yours.** This Actor returns clean,
complete records. Screening a customer list against them is a separate decision
with a risk tolerance that belongs to you, not to a default in someone else's
code.

**These are three lists, not all of them.** OFAC, the EU consolidated list and
the UK list. There is no UN, Swiss, Canadian or Australian list here, and no
national lists beyond the UK.

**Fields are populated unevenly.** OFAC records often carry passports and dates
of birth; EU records often do not. A null means the authority did not publish
it, not that it does not exist.

**Not every entry is identifiable.** `issues` marks
`individual_without_identifiers` on people listed with no date of birth and no
document number. Those entries generate most false positives in name screening.

### Personal data

**15,991 of these records are real people**, with names, dates of birth,
passport numbers and addresses. Three governments publish them by law precisely
so that businesses can screen against them, and anti-money-laundering screening
is the reason the data is public at all.

That does not make it ordinary data. Loading it means processing personal data
about identified individuals, and it requires your own legal basis and your own
retention policy. It should not be used for any purpose other than the one the
lists were published for.

### Notes

Pull the whole list once, then re-pull daily. The lists change constantly and
`retrieved_at` on every row is the audit trail.

Filter with `entityTypes` when screening only companies or only people. It
reduces both the cost and the run.

`aliases_count` above zero means the entity is listed under other names as well.
Screening only the primary name will miss those.

### Support

Open the **Issues** tab with the `source`, `source_id` and `name` from the row
in question.

### Licence and attribution

Sanctions data from three official sources: the US Treasury Office of Foreign
Assets Control (OFAC), the European Union consolidated list published by the
European Commission, and the UK Office of Financial Sanctions Implementation
(OFSI). All three are published by the authorities for public screening use.
None of them endorses this Actor.

# Actor input Schema

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

Which official lists to include. All three by default.

## `entityTypes` (type: `array`):

Keep only these. Empty means every type.

## `maxEntities` (type: `integer`):

Stop after this many entities. **0 returns everything.** The default keeps a first run small and cheap.

## Actor input object example

```json
{
  "sources": [
    "ofac",
    "eu",
    "uk"
  ],
  "entityTypes": [],
  "maxEntities": 1000
}
```

# Actor output Schema

## `entities` (type: `string`):

No description

## `summary` (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 = {};

// Run the Actor and wait for it to finish
const run = await client.actor("sourcerow/global-sanctions-list").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 = {}

# Run the Actor and wait for it to finish
run = client.actor("sourcerow/global-sanctions-list").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 '{}' |
apify call sourcerow/global-sanctions-list --silent --output-dataset

```

## MCP server setup

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

```

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/gtKg7UMXxf7x19zmq/builds/rAOPCfWUpsRzH1ejU/openapi.json
