# UN & UK OFSI Sanctions Screening Scraper (AML / KYB Watchlist) (`scrapers_lat/un-uk-sanctions-screening-scraper`) Actor

Browse or screen names against the UN Security Council and UK OFSI (HM Treasury) consolidated sanctions lists. Persons, entities and vessels with aliases, DOB, nationalities, IDs, regime and listing dates. LIST and SCREEN (fuzzy name match) modes for AML/KYB.

- **URL**: https://apify.com/scrapers\_lat/un-uk-sanctions-screening-scraper.md
- **Developed by:** [Scrapers Lat](https://apify.com/scrapers_lat) (community)
- **Categories:** Automation, Developer tools, Other
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $15.60 / 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.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

[![UN & UK OFSI Sanctions Screening Scraper (AML / KYB Watchlist)](https://scrapers.lat/banners/un-uk-sanctions-screening-scraper.png)](https://apify.com/scrapers_lat/un-uk-sanctions-screening-scraper)

## UN & UK OFSI Sanctions Screening Scraper (AML / KYB Watchlist)

Browse, filter and screen names against two official, public-domain sanctions lists in one place: the **UN Security Council Consolidated List** and the **UK OFSI (HM Treasury) Consolidated List**. Every sanctioned person, entity and vessel is normalized into a single clean schema with aliases, dates of birth, nationalities, identity documents, regime and listing dates, so you can run compliance screening for onboarding, KYB, AML and payment checks.

Two modes:

- **List** browse or filter the full consolidated lists.
- **Screen** submit your own person or company names and get fuzzy matches against every listed party and alias, scored 0 to 1.

### What you get

Here is one real record from **List** mode:

```json
{
  "mode": "list",
  "id": "6907993",
  "source": "UN",
  "entityType": "Individual",
  "name": "ERIC BADEGE",
  "aliases": [],
  "aliasCount": 0,
  "dateOfBirth": "1971",
  "placeOfBirth": null,
  "nationalities": ["Democratic Republic of the Congo"],
  "countries": ["Rwanda"],
  "addresses": ["Rwanda"],
  "identifiers": [],
  "regime": "DRC",
  "referenceNumber": "CDi.001",
  "listedOn": "2012-12-31",
  "designationReason": "He fled to Rwanda in March 2013 and is still living there as of early 2016.",
  "sourceUrl": "https://scsanctions.un.org/consolidated/",
  "observedAt": "2026-08-17T07:00:00.000Z",
  "error": null
}
```

And one real result from **Screen** mode (checking the name "Vladimir Putin"):

```json
{
  "mode": "screen",
  "inputName": "Vladimir Putin",
  "matched": true,
  "matchCount": 1,
  "matches": [
    {
      "source": "UK-OFSI",
      "name": "Vladimir Vladimirovich PUTIN",
      "matchedAlias": "Vladimir PUTIN",
      "entityType": "Individual",
      "regime": "Russia",
      "referenceNumber": "14196",
      "id": "14196",
      "score": 1
    }
  ],
  "observedAt": "2026-08-17T07:00:00.000Z",
  "error": null
}
```

A name with no hit returns a clean `"matched": false` row (never an error), so you can log a full audit trail of every name you screened.

### Input

| Field | Type | Description |
| --- | --- | --- |
| `mode` | string | `list` (browse and filter) or `screen` (match your own names). Default `list`. |
| `names` | array | Screen mode. Person or company names to check against the combined lists. |
| `minScore` | number | Screen mode. Minimum similarity (0 to 1) for a fuzzy match. Default `0.85`. |
| `source` | string | `both`, `UN` or `UK-OFSI`. Default `both`. |
| `entityType` | string | List mode. `all`, `Individual`, `Entity` or `Vessel`. |
| `nameContains` | string | List mode. Keep records whose name or any alias contains this text. |
| `country` | string | List mode. Filter by nationality, country of birth or address country. |
| `regime` | string | List mode. Filter by sanctions regime or UN list type (for example Russia, DRC, ISIL). |
| `maxEntries` | integer | List mode. Max records to return. |
| `withAiRisk` | boolean | Optional paid AI add-on. Adds a plain-English compliance risk note. Off by default. |

### Output

| Field | Description |
| --- | --- |
| `id` | Source record id (UN DATAID or UK OFSI Group ID). |
| `source` | `UN` or `UK-OFSI`. |
| `entityType` | Individual, Entity or Vessel. |
| `name` | Primary full name of the sanctioned party. |
| `aliases` | Known aliases and other names. |
| `dateOfBirth` / `placeOfBirth` | Birth details for individuals. |
| `nationalities` / `countries` | Nationalities and associated countries. |
| `addresses` | Listed addresses. |
| `identifiers` | Passport and national ID documents with type and number. |
| `regime` | Sanctions regime (UK) or UN list type. |
| `referenceNumber` | UN reference number or UK sanctions list reference. |
| `listedOn` | Date the party was listed or designated. |
| `designationReason` | Reason, position or narrative for the designation. |
| `inputName` / `matched` / `matchCount` / `matches` | Screen mode: your submitted name and its scored matches. |
| `aiRiskWho` / `aiWhyListed` / `aiRegime` / `aiRiskLevel` | Optional AI risk note (paid add-on). |
| `sourceUrl`, `observedAt`, `error` | Provenance and run metadata. |

### Use cases

- **Sanctions screening** of customers, suppliers and counterparties against the UN and UK OFSI lists.
- **AML and KYB onboarding** checks and periodic re-screening of your existing book.
- **UN and UK watchlist** monitoring for banks, fintechs, crypto exchanges, law firms and marketplaces.
- **PEP and adverse-party review** feeding names into a wider compliance workflow.
- **Payment and trade screening** to flag sanctioned individuals, entities and vessels before you transact.
- Building or enriching your own **compliance database** with clean, normalized sanctions data.

### Billing

This actor uses pay per event:

- **result** `$0.015` per record. One sanctioned record in List mode, or one screened name with its matches in Screen mode. Charged only on a successful result.
- **AI compliance risk note** `$0.012` per note (opt in via `withAiRisk`). A plain-English risk note for a matched party. Charged only when usable AI output is produced.

Failed runs are never charged. Free Apify plans are capped at 10 results per run.

### Data sources and licensing

Data comes only from the official **public-domain** primary sources: the UN Security Council Consolidated List and the UK OFSI (HM Treasury) Consolidated List. This actor does not redistribute any non-commercial aggregated dataset, so its output is safe to use commercially. Sanctions lists change frequently; always confirm a positive match against the official source before acting on it.

This actor complements our **OFAC Sanctions Scraper** and **EU Consolidated Sanctions List Scraper** so you can cover US, EU, UN and UK regimes across your compliance stack.

# Actor input Schema

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

list = browse/filter the consolidated sanctions lists. screen = check your own names against the lists (fuzzy AML/KYB screening).

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

Screen mode only. Person or company names to check against the combined UN + UK OFSI lists. One matched/not-matched row is returned per name.

## `minScore` (type: `number`):

Screen mode only. Minimum similarity (0-1) for a fuzzy name match. Lower catches more (looser), higher is stricter. Default 0.85.

## `source` (type: `string`):

Which official list to use. UN = UN Security Council Consolidated List. UK-OFSI = UK HM Treasury (OFSI) Consolidated List. both = combined.

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

List mode filter. Return only individuals, only entities (companies/groups), only vessels, or all.

## `nameContains` (type: `string`):

List mode filter. Keep only records whose primary name or any alias contains this text.

## `country` (type: `string`):

List mode filter. Keep only records whose nationality, country of birth or address country contains this text (for example Russia, Iran, DPRK).

## `regime` (type: `string`):

List mode filter. Keep only records whose sanctions regime or UN list type contains this text (for example Russia, DRC, ISIL, Cyber).

## `maxEntries` (type: `integer`):

List mode: maximum sanctioned records to return. Free Apify plans are capped at 10 per run.

## `withAiRisk` (type: `boolean`):

Optional paid AI add-on, off by default. For each matched/returned sanctioned party, adds a plain-English risk note (who, why listed, regime, risk level). Billed only when produced. Requires a paid Apify plan.

## Actor input object example

```json
{
  "mode": "list",
  "names": [
    "Vladimir Putin",
    "Acme Trading Ltd"
  ],
  "minScore": 0.85,
  "source": "both",
  "entityType": "all",
  "maxEntries": 100,
  "withAiRisk": 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": [
        "Vladimir Putin",
        "Acme Trading Ltd"
    ],
    "maxEntries": 100
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapers_lat/un-uk-sanctions-screening-scraper").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",
        "Acme Trading Ltd",
    ],
    "maxEntries": 100,
}

# Run the Actor and wait for it to finish
run = client.actor("scrapers_lat/un-uk-sanctions-screening-scraper").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",
    "Acme Trading Ltd"
  ],
  "maxEntries": 100
}' |
apify call scrapers_lat/un-uk-sanctions-screening-scraper --silent --output-dataset

```

## MCP server setup

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

```

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/BmHWvyteIIbDSjsNl/builds/uIK5gn21YUeDaQLg0/openapi.json
