# OFAC Sanctions Search - SDN and Consolidated Lists (`captainhandsome/ofac-sanctions-search`) Actor

Search official U.S. Treasury OFAC SDN and consolidated non-SDN data by name, alias, program, entity type, and country. Export joined identity, alias, address, vessel, and remarks fields.

- **URL**: https://apify.com/captainhandsome/ofac-sanctions-search.md
- **Developed by:** [Joseph McRell](https://apify.com/captainhandsome) (community)
- **Categories:** Business, Other
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.50 / 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/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

## OFAC Sanctions Search - SDN and Consolidated Lists

Search official U.S. Treasury OFAC sanctions data by primary name, alias, sanctions program, entity type, and country. The Actor joins OFAC's primary, alternate-name, address, and comments files into one flat record per listed party.

No API key, login, browser automation, or website scraping is required.

### What data can I extract?

- SDN or consolidated non-SDN list membership and OFAC UID
- Primary names and alternate names
- Entity type and sanctions programs
- Addresses, cities, countries, and postal codes
- Individual titles and remarks
- Vessel call signs, types, tonnage, flag, and owner
- The exact primary or alias name that matched
- Official source URL and total match count

### Input example

```json
{
  "name": "GAZPROM",
  "match_mode": "contains",
  "list_scope": "all",
  "include_aliases": true,
  "max_items": 10
}
```

At least one of `name`, `program`, `country`, or `entity_type` must be supplied. `max_items` is always a hard output ceiling.

### Output example

```json
{
  "list_type": "SDN",
  "uid": "11233",
  "primary_name": "GAZPROM NEFT",
  "entity_type": "entity",
  "programs": "RUSSIA-EO14024",
  "aliases": "GAZPROMNEFT | GAZPROM NEFT PJSC",
  "countries": "Russia",
  "matched_name": "GAZPROM NEFT",
  "match_basis": "primary_name",
  "source_url": "https://ofac.treasury.gov/sanctions-list-service"
}
```

### Common use cases

- Sanctions-data research and list-change investigation
- Vendor, customer, and counterparty review workflows
- Entity-resolution and alias research
- Compliance-data enrichment and quality assurance
- Investigative journalism and academic research

### Use with AI agents and MCP

The flat joined schema lets an agent compare names and aliases, summarize list context, or route possible matches for human review without reconstructing OFAC's relational CSV exports.

### Pricing and cost control

Output is billed per result at **$0.005 per result** (about $5.00 per 1,000 results), plus a $0.0005 Actor-start charge billed once per gigabyte of memory at run start. Use `max_items` to cap both output volume and charges. The price shown on the Apify Store listing is authoritative.

### Reliability

Each run downloads the current official list exports, retries temporary transport and service failures, joins related rows by OFAC UID, validates the filters, and fails visibly on upstream errors. It does not silently substitute cached or third-party sanctions data.

### Limitations and responsible use

- This is literal case-insensitive matching, not fuzzy identity resolution.
- A match is not a compliance decision, and no match is not clearance.
- Transliteration, spelling, date of birth, ownership, and other context can be essential to identification.
- OFAC controls source coverage, corrections, and update timing.
- Always verify possible matches using OFAC's current search tools and qualified compliance procedures.

### Turn this into a sanctions-data refresh

1. Save a narrowly scoped Task for the names, programs, countries, or entity types you need to review.
2. Schedule periodic refreshes appropriate to your compliance process.
3. Add an `ACTOR.RUN.SUCCEEDED` Task webhook or integration and route `resource.defaultDatasetId` to a human-review queue; never treat a literal name match as automatic clearance or rejection.

Related fleet tools: [GLEIF LEI Search](https://apify.com/captainhandsome/gleif-lei-search) supplies legal-entity identifiers and relationships, [SEC EDGAR Filings Search](https://apify.com/captainhandsome/sec-edgar-filings-search) supplies US public-company disclosures, and [Company Registry Search](https://apify.com/captainhandsome/company-registry-search) covers UK, French, and global registry records.

### FAQ

#### Does this search alternate names?

Yes. Leave `include_aliases` enabled to test the name query against OFAC alternate names and receive the matched alias in the output.

#### Are the SDN and non-SDN lists both included?

Yes by default. Use `list_scope` to restrict the run to SDN or consolidated non-SDN records.

#### Can this clear a person or company for a transaction?

No. It is a data-retrieval tool and does not replace identity resolution, ownership analysis, legal advice, or a sanctions-compliance program.

# Actor input Schema

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

Case-insensitive name or alias to search.

## `match_mode` (type: `string`):

Use contains for discovery or exact for an exact normalized name.

## `program` (type: `string`):

Optional program code filter such as RUSSIA-EO14024.

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

Optional country filter across addresses and vessel flag.

## `entity_type` (type: `string`):

Optional OFAC type filter such as individual, entity, vessel, or aircraft.

## `list_scope` (type: `string`):

Search the SDN list, consolidated non-SDN data, or both.

## `include_aliases` (type: `boolean`):

Match the name query against alternate names as well as primary names.

## `max_items` (type: `integer`):

Hard cap on records saved to the dataset.

## Actor input object example

```json
{
  "name": "GAZPROM",
  "match_mode": "contains",
  "list_scope": "all",
  "include_aliases": true,
  "max_items": 10
}
```

# Actor output Schema

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

One flat joined record per matching OFAC primary sanctions-list entry.

# 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 = {
    "name": "GAZPROM"
};

// Run the Actor and wait for it to finish
const run = await client.actor("captainhandsome/ofac-sanctions-search").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 = { "name": "GAZPROM" }

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

```

## MCP server setup

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

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/XdJi9H4AbiPm6loRe/builds/cqQU9fcFV0khnfx0M/openapi.json
