# OFAC Crypto Sanctions List — Addresses, Entities & Programs (`amlconsensus/ofac-crypto-sanctions`) Actor

Every crypto address on the U.S. OFAC SDN list with the sanctioned entity behind it, its sanctions programmes and aliases. ~1,000 addresses across 20 assets, parsed live from Treasury's own file.

- **URL**: https://apify.com/amlconsensus/ofac-crypto-sanctions.md
- **Developed by:** [Rinat Galimov](https://apify.com/amlconsensus) (community)
- **Categories:** Developer tools, Other
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-usage

## 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

## OFAC Crypto Sanctions List — addresses, entities & programmes

Every crypto address on the U.S. **OFAC SDN list**, together with the sanctioned
entity behind it and the programmes it was listed under.

Lists of sanctioned addresses are easy to find. What they don't tell you is
*whose* address it is and *why* it is there — and that is the part a compliance
decision actually rests on. This Actor parses Treasury's own 28 MB SDN file on
every run and gives you the answer as a flat dataset:

```
TNiq9AXBp9EjUqhDhrwrfvAA8U3GUQZH81
  Tron · Entity · SDN UID 4632
  BANK MARKAZI JOMHOURI ISLAMI IRAN  (Iran)
  programmes: IRAN, IFSR, IRGC, SDGT
  aka: CENTRAL BANK OF THE ISLAMIC REPUBLIC OF IRAN; BANK MARKAZI IRAN
```

### What you get

| Field | Meaning |
|---|---|
| `address` | The sanctioned address |
| `chain` | Bitcoin, Ethereum, Tron, Solana, … |
| `asset` | Ticker exactly as OFAC labels it (`XBT`, `ETH`, `TRX`, `USDT`, …) |
| `entity_name` | Who the address belongs to |
| `entity_type` | Individual, Entity or Vessel |
| `programs` | Sanctions programmes, e.g. `DPRK4`, `CYBER2`, `SDGT` |
| `country` | Nationality or registered country, where OFAC states one |
| `aka` | Known aliases of the entity |
| `sdn_uid` | OFAC's own identifier, so you can trace back to the source record |
| `remarks` | OFAC's free-text note on the listing |
| `list_published` | Publication date of the list this run read |

Current scale: **~1,000 addresses** across 20 assets — Bitcoin 534, Tron 202,
Ethereum 120, USDT 94, plus Litecoin, Monero, Zcash, Dash, Solana and others.

### Use it three ways

**1. Screen your own addresses.** Put them into `checkAddresses` and every one
comes back with a verdict — including the clean ones, marked `sanctioned: false`.
That is usually the answer you need before accepting a payment.

**2. Export the whole list.** Leave the input empty to seed a screening database
or a watchlist.

**3. Slice by threat.** Filter by `programs` to get only what matters to you —
`DPRK4` for North Korea, `ILLICIT-DRUGS-EO14059` for narcotics,
`RUSSIA-EO14024`, `CYBER2` for cyber, `SDGT`/`FTO` for terrorism. Or filter by
`assets` to get just the chains you support.

### What the data shows

The list is dominated by a handful of large designations: **408 addresses under
`CYBER2`**, 206 under `SDGT`, 156 under narcotics authorities. Single entities
can hold dozens — ISIL Khorasan accounts for 134 addresses, the Hydra darknet
market for 117.

Thirteen addresses appear under more than one entity. That is not a duplicate:
OFAC genuinely attributes them to several designated parties, and both rows are
kept so you don't lose the second attribution.

### Input

```json
{
  "checkAddresses": [],
  "assets": [],
  "programs": [],
  "maxItems": 0
}
```

All fields are optional.

### Source and limits

- Read live from **Treasury's official SDN file** on every run — not a mirror,
  not a cached snapshot. `list_published` tells you exactly which edition you got.
- **SDN only.** OFAC's separate Consolidated (non-SDN) list is not included yet.
- **Sanctions ≠ guilt of the counterparty holding a similar address.** A hit
  means the address itself is designated; dealing with it is prohibited for U.S.
  persons and blocked by most exchanges. Absence from the list is not a clean
  bill of health — it only means this one list does not name it.
- This is data, not legal advice.

### Who builds this

Made by [AMLConsensus](https://amlconsensus.com) — wallet screening that checks
an address against several independent sources at once (OFAC SDN, stablecoin
issuer freeze lists, sanctions oracles, open blacklists) and shows which source
flagged what, instead of returning one vendor's number.

See also our [Stablecoin Freeze Tracker](https://apify.com/amlconsensus/stablecoin-freeze-tracker)
— every address frozen by Tether or Circle.

Questions, bulk volume or a dataset you need that isn't here:
**support@amlconsensus.com**

# Actor input Schema

## `checkAddresses` (type: `array`):

Optional. Paste addresses to screen against the list instead of exporting all of it. Every address you pass comes back with a verdict — including the clean ones.

## `assets` (type: `array`):

Optional. Limit to certain tickers as OFAC labels them: XBT (Bitcoin), ETH, TRX, USDT, USDC, LTC, XMR, ZEC, DASH, SOL, DOGE, BCH, ETC, BSV, BTG. Empty means all.

## `programs` (type: `array`):

Optional. Filter by OFAC programme code, e.g. DPRK4 (North Korea), IRAN, IFSR, SDGT (terrorism), CYBER2, RUSSIA-EO14024, NPWMD. Empty means all.

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

Cap the number of records. 0 means no limit.

## Actor input object example

```json
{
  "checkAddresses": [],
  "assets": [],
  "programs": [],
  "maxItems": 0
}
```

# Actor output Schema

## `sanctionedAddresses` (type: `string`):

Every matching address with the sanctioned entity, programmes, aliases and country.

## `sanctionedAddressesCsv` (type: `string`):

The same records as CSV, ready for a screening database or a spreadsheet.

## `datasetInConsole` (type: `string`):

Browse and filter the results in the Apify Console.

# 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 = {
    "checkAddresses": [],
    "assets": [],
    "programs": []
};

// Run the Actor and wait for it to finish
const run = await client.actor("amlconsensus/ofac-crypto-sanctions").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 = {
    "checkAddresses": [],
    "assets": [],
    "programs": [],
}

# Run the Actor and wait for it to finish
run = client.actor("amlconsensus/ofac-crypto-sanctions").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 '{
  "checkAddresses": [],
  "assets": [],
  "programs": []
}' |
apify call amlconsensus/ofac-crypto-sanctions --silent --output-dataset

```

## MCP server setup

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

```

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/dfCoLSe2YDtlOPMFg/builds/ILcNx11grB7H1cN3P/openapi.json
