# UK Sanctions List - 2,350 Entities & Ships (FCDO) (`j0401/uk-sanctions-list`) Actor

The UK Sanctions List, Entity and Ship designations only (2,350, FCDO, OGL): names, aliases, regime, sanctions, addresses and ship identifiers. Individuals excluded. Search or aggregate.

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

## Pricing

from $0.03 / 1,000 uk sanctions designation records

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

## UK Sanctions List - 2,350 Entities & Ships (FCDO)

The consolidated **UK Sanctions List**, published by the Foreign,
Commonwealth & Development Office: **2,350 Entity and Ship designations**
(1,667 entities and 683 ships) as of **16 October 2026**, with the names,
aliases and non-Latin names the list publishes (a per-designation cap guards
pathological rows), the regime, the sanctions imposed, addresses, countries,
business registration numbers and - for ships - IMO number, flag, type and
tonnage.

**Entity and Ship designations only.** Individual (natural person)
designations are deliberately excluded from this dataset. A few free-text
fields (notably `parentCompany` and `ukStatementOfReasons`) reproduce the
official listing text, which can name directors or controllers; structured
personal fields on individuals (DOB, nationality, passport, home address)
are never carried.

### Low cost

**From $0.00005 per record, down to $0.00003 at Gold.** Pay only for the
records you receive - the whole list stays searchable, you are never billed
for the scan behind it.

### What you get per designation

| field | meaning |
|---|---|
| `entityId`, `ofsiGroupId`, `unReference` | UK designation ID, the OFSI group where the list gives one (1:1 when present) and the UN reference |
| `primaryName`, `aliases`, `aliasCount` | primary name and every alternative name |
| `nonLatinNames` | the Arabic / Cyrillic / other non-Latin names on the list |
| `designationType` | `Entity` or `Ship` |
| `regimes` | the sanctions regime(s) applied |
| `sanctionsImposed` | asset freeze, travel ban, transport sanctions, trust services, ... |
| `designationSource` | UN, UK or other designation origin |
| `typeOfEntity` | entity category where the list states one |
| `businessRegistrationNumbers`, `parentCompany`, `subsidiaries` | corporate identifiers, capped per designation (the source lists up to 63 subsidiaries for one designation) |
| `addresses`, `addressCount`, `countries` | every listed address, folded into one field |
| `phone`, `website`, `email` | contact details where published |
| `otherInformation`, `ukStatementOfReasons` | the official listing rationale |
| `dateDesignated`, `lastUpdated` | designation and list-refresh dates (source format DD/MM/YYYY) |
| `imoNumber`, `shipType`, `flag`, `tonnage`, `length`, `yearBuilt`, `currentOwner`, `previousOwner` | vessel identifiers and ownership |

### Search it

- **Name or alias** - `name="GAZPROM"` (matches primary names, aliases and non-Latin names).
- **Regime** - `regime="Russia"`, `"Iran"`, `"Global Human Rights"`.
- **Sanction** - `sanctionsImposed="Asset freeze"`, `"Transport sanctions"`.
- **Country** - `country="Iran"`.
- **Type** - `designationType="Ship"` for the designated fleet.
- **Exact ID** - `entityId="RUS1072"`, `ofsiGroupId="12703"`.
- **Vessel** - `imoNumber="..."`.

### Example inputs

**Russia regime, asset-freeze entities**

```json
{ "regime": "Russia", "sanctionsImposed": "Asset freeze",
  "designationType": "Entity", "maxResults": 50 }
```

**One name across all aliases**

```json
{ "name": "Sberbank", "maxResults": 50 }
```

**The designated fleet**

```json
{ "designationType": "Ship", "maxResults": 100 }
```

### Aggregate it

Set `groupBy` with no filters for a whole-list rollup, or with filters for a
scoped one:

```json
{ "mode": "aggregate", "groupBy": "regime" }
```

`groupBy` = `regime` (default), `sanctions`, `designationType`, `country`,
`designationSource` or `typeOfEntity`. Every row carries `groupKey`,
`groupCount`, `groupBy` and `totalMatched`. A designation with several
sanctions, regimes or countries is counted once per value, so those group
counts sum to more than `totalMatched`.

The default (empty) run returns the regime rollup. To list every record rather
than a rollup, pass a filter - for example `designationType="Entity"` (1,667)
and `designationType="Ship"` (683) in two runs.

### Source and licence

UK Sanctions List, Foreign, Commonwealth & Development Office, published
under the **Open Government Licence v3**, which permits commercial reuse with
attribution. Refreshed weekly by the publisher.

Source: [UK Sanctions List](https://sanctionslist.fcdo.gov.uk/docs/UK-Sanctions-List.csv).

# Actor input Schema

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

search = filter the list. aggregate = one row per group. warm = owner maintenance: rebuild the snapshot from the FCDO source and upload it (no filters). Leave blank to auto-route: filters -> search, no filters -> aggregate.

## `name` (type: `string`):

Primary name, alias or non-Latin name substring, case-insensitive (e.g. "GAZPROM", "Sberbank").

## `entityId` (type: `string`):

Exact UK Sanctions List unique ID (e.g. "RUS1072").

## `ofsiGroupId` (type: `string`):

OFSI group identifier (1:1 with each designation in this entity/ship list).

## `designationType` (type: `string`):

Entity = company, organisation or other legal person; Ship = a designated vessel. Individuals are not published by this actor.

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

Regime name substring, case-insensitive (e.g. "Russia", "Iran", "Global Human Rights").

## `sanctionsImposed` (type: `string`):

Substring of the sanctions imposed (e.g. "Asset freeze", "Transport sanctions", "Trust Services").

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

Country substring from the designation addresses (e.g. "Russia", "Iran").

## `imoNumber` (type: `string`):

Ship IMO number; digits are compared, so "9562233" and "IMO9562233" both work.

## `groupBy` (type: `string`):

regime -> sanctions regime; sanctions -> sanction imposed; designationType -> Entity vs Ship; country -> address country; designationSource -> UN / UK / EU-origin designation; typeOfEntity -> entity category. Blank defaults to regime.

## `maxResults` (type: `integer`):

Cap the number of search records pushed (0 = the default 50, maximum 2000). Aggregate returns every group.

## Actor input object example

```json
{
  "maxResults": 50
}
```

# Actor output Schema

## `recordsUrl` (type: `string`):

UK sanctions designation records - as JSON

## `datasetUrl` (type: `string`):

No description

## `runUrl` (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("j0401/uk-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("j0401/uk-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 j0401/uk-sanctions-list --silent --output-dataset

```

## MCP server setup

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