AIDEVELOPER TOOLS

OFAC Sanctions List Search

Search the US Treasury OFAC SDN sanctions list for individuals, companies, and vessels. Fuzzy name matching with confidence scores.

Try on Apify Store
$0.04per event
2
Users (30d)
168
Runs (30d)
82
Well maintained
Maintenance Pulse
$0.04
Per event

Maintenance Pulse

82/100
Last Build
1d ago
Last Version
6d ago
Builds (30d)
6
Issue Response
16h avg

Cost Estimate

How many results do you need?

result-returneds
Estimated cost:$4.00

Pricing

Pay Per Event model. You only pay for what you use.

EventDescriptionPrice
result-returnedCharged per result returned.$0.04

Example: 100 events = $4.00 · 1,000 events = $40.00

Documentation

Search the US Treasury OFAC Specially Designated Nationals (SDN) sanctions list directly from the Apify platform. This actor downloads the full official SDN XML file from treasury.gov, parses all entries in memory, and returns scored matches against your query. It supports individuals, entities, vessels, and aircraft with fuzzy name matching, sanctions program filtering, and country-based filtering. No API key is required -- the actor pulls data straight from the public OFAC source. Results include full biographical details, known aliases, ID documents, addresses, and direct links to the official OFAC details page for each match.


Why use OFAC Sanctions List Search

Compliance screening against the OFAC SDN list is a legal requirement for many businesses operating in or with connections to the United States. Banks, fintech companies, law firms, real estate agencies, and import/export businesses must verify that their customers, partners, and counterparties do not appear on the sanctions list. Manual lookups through the OFAC website are slow, limited to one query at a time, and offer no programmatic access for bulk workflows.

This actor solves that problem by giving you full programmatic access to the complete SDN list through a simple API call. You can integrate it into your onboarding pipelines, run batch screening jobs against your entire customer database, or set up scheduled checks that alert you when new matches appear. The built-in fuzzy matching engine handles name variations, transliteration differences, and spelling discrepancies that would be missed by exact-match lookups.

Unlike the official OFAC search tool, this actor returns structured JSON data that can be piped directly into your compliance workflows, CRM systems, or case management platforms. Every result includes a confidence score from 0 to 100, letting you prioritize high-confidence matches for human review while filtering out noise. The actor processes the entire SDN list -- over 12,000 entries -- in seconds, so you get comprehensive coverage without the wait.

Whether you are building an automated KYC pipeline, conducting due diligence on business partners, or monitoring sanctions exposure across a portfolio, this actor provides the data backbone you need without requiring a Treasury API key, paid data vendor, or custom infrastructure.


Key features

  • Full SDN list coverage -- Downloads and searches the complete OFAC Specially Designated Nationals list directly from treasury.gov, covering all sanctioned individuals, entities, vessels, and aircraft.
  • Fuzzy name matching -- Uses Levenshtein distance, token matching, and substring analysis to catch spelling variations, transliterations, and partial name matches that exact searches would miss.
  • Confidence scoring -- Every result includes a match score from 0 to 100, with primary name matches weighted highest, alias matches at 0.9x, and ID matches at 0.85x for transparent ranking.
  • Entity type filtering -- Narrow your search to specific categories: Individual, Entity, Vessel, or Aircraft, or search across all types at once.
  • Sanctions program filtering -- Filter results by sanctions program codes such as SDGT, IRAN, UKRAINE-EO13662, CUBA, DPRK, SYRIA, and dozens more.
  • Country-based filtering -- Filter by country across addresses, nationalities, citizenships, and vessel flags to focus on specific jurisdictions.
  • Diacritics normalization -- Automatically strips diacritics and normalizes Unicode characters, so searches for "Muller" will match "Mueller" and vice versa.
  • Rich structured output -- Returns complete records with aliases, ID documents, addresses, dates of birth, places of birth, vessel information, and direct OFAC detail page URLs.
  • No API key required -- Pulls data from the publicly available treasury.gov XML feed with zero authentication setup.
  • Batch-friendly design -- Combine with Apify scheduling and webhooks to run recurring compliance checks against your customer database automatically.

How to use

Using the Apify Console

  1. Navigate to OFAC Sanctions List Search on the Apify Store.
  2. Click Try for free to open the actor in the Apify Console.
  3. Enter a name, entity, or ID number in the Search Query field (e.g., "Putin").
  4. Optionally select a Search Type to filter by Individual, Entity, Vessel, or Aircraft.
  5. Optionally enter a Sanctions Program code (e.g., "UKRAINE-EO13662") or Country Filter (e.g., "Russia").
  6. Toggle Fuzzy Matching on or off depending on whether you want approximate or exact matching.
  7. Set the Max Results to control how many matches are returned (default: 50, max: 500).
  8. Click Start and wait for the run to complete.
  9. View results in the Dataset tab, or export as JSON, CSV, or Excel.

Using the Apify API

cURL:

curl "https://api.apify.com/v2/acts/ryanclinton~ofac-sanctions-search/run-sync-get-dataset-items?token=YOUR_API_TOKEN" \
  -X POST \
  -H "Content-Type: application/json" \
  -d '{
    "query": "Putin",
    "searchType": "Individual",
    "country": "Russia",
    "fuzzyMatch": true,
    "maxResults": 10
  }'

JavaScript:

import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });

const run = await client.actor('ryanclinton/ofac-sanctions-search').call({
    query: 'Putin',
    searchType: 'Individual',
    country: 'Russia',
    fuzzyMatch: true,
    maxResults: 10,
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Python:

from apify_client import ApifyClient

client = ApifyClient("YOUR_API_TOKEN")

run = client.actor("ryanclinton/ofac-sanctions-search").call(run_input={
    "query": "Putin",
    "searchType": "Individual",
    "country": "Russia",
    "fuzzyMatch": True,
    "maxResults": 10,
})

items = client.dataset(run["defaultDatasetId"]).list_items().items
print(items)

Input parameters

FieldTypeRequiredDefaultDescription
queryStringYes--Name, entity, ID number, or keyword to search for in the SDN list
searchTypeEnumNo"All"Filter by entry type: All, Individual, Entity, Vessel, Aircraft
programStringNo--Filter by sanctions program code (e.g., SDGT, IRAN, UKRAINE-EO13662, CUBA, DPRK, SYRIA)
countryStringNo--Filter results by country in addresses, nationalities, citizenships, or vessel flags
fuzzyMatchBooleanNotrueEnable fuzzy/partial name matching. When disabled, requires exact substring match
maxResultsIntegerNo50Maximum number of results to return (1--500)

Example input:

{
    "query": "Rosneft",
    "searchType": "Entity",
    "program": "UKRAINE-EO13662",
    "country": "Russia",
    "fuzzyMatch": true,
    "maxResults": 25
}

Tips for best input:

  • Use full names when possible for the most accurate results (e.g., "Vladimir Putin" rather than just "Putin").
  • Combine country and program filters to narrow results when searching common names.
  • Disable fuzzyMatch when you need exact substring matching or when searching by ID numbers.
  • Use the searchType filter to avoid false positives across different entry categories.
  • Program codes are case-insensitive -- "iran" works the same as "IRAN".

Output

Each result in the dataset represents one matching SDN entry. Here is a realistic example:

{
    "uid": "36360",
    "firstName": "Vladimir",
    "lastName": "PUTIN",
    "fullName": "Vladimir PUTIN",
    "entityType": "Individual",
    "title": "President of the Russian Federation",
    "programs": ["RUSSIA-EO14024", "UKRAINE-EO13661"],
    "remarks": "DOB 07 Oct 1952; POB Leningrad, Russia; nationality Russia; citizen Russia; Gender Male",
    "addresses": [],
    "nationalities": ["Russia"],
    "citizenships": ["Russia"],
    "datesOfBirth": ["07 Oct 1952"],
    "placesOfBirth": ["Leningrad, Russia"],
    "idNumbers": [],
    "aliases": [
        {
            "type": "a.k.a.",
            "category": "strong",
            "firstName": "Vladimir Vladimirovich",
            "lastName": "PUTIN"
        }
    ],
    "vesselInfo": null,
    "country": "Russia",
    "matchScore": 100,
    "ofacUrl": "https://sanctionssearch.ofac.treas.gov/Details.aspx?id=36360",
    "source": "US Treasury OFAC SDN List",
    "extractedAt": "2026-02-17T14:30:00.000Z"
}

Output field descriptions:

FieldTypeDescription
uidStringUnique OFAC identifier for the entry
firstNameString/nullFirst name (null for entities without a first name)
lastNameStringLast name or entity name
fullNameStringCombined first and last name
entityTypeStringEntry type: Individual, Entity, Vessel, or Aircraft
titleString/nullTitle or position if available
programsString[]Sanctions program codes (e.g., SDGT, IRAN, CUBA)
remarksString/nullOFAC remarks field with additional details
addressesObject[]Known addresses with street, city, state, postal code, and country
nationalitiesString[]Listed nationalities
citizenshipsString[]Listed citizenships
datesOfBirthString[]Known dates of birth
placesOfBirthString[]Known places of birth
idNumbersObject[]ID documents with type, number, country, issue/expiration dates
aliasesObject[]Known aliases with type, category, and name components
vesselInfoObject/nullVessel details (call sign, type, flag, owner, tonnage) for vessel entries
countryString/nullPrimary country derived from nationality, citizenship, or address
matchScoreNumberConfidence score from 0 to 100 (higher is a stronger match)
ofacUrlStringDirect link to the official OFAC details page
sourceStringAlways "US Treasury OFAC SDN List"
extractedAtStringISO 8601 timestamp of when the data was extracted

Use cases

  • KYC/AML compliance screening -- Integrate into your customer onboarding pipeline to automatically check new customers against the SDN list before account approval.
  • Ongoing monitoring -- Schedule daily or weekly runs to re-screen your entire customer database and detect newly added sanctions entries.
  • Vendor and supplier due diligence -- Screen business partners, suppliers, and third-party vendors before entering into contracts or processing payments.
  • Real estate transaction screening -- Verify buyers, sellers, and beneficial owners in property transactions as required by FinCEN guidance.
  • Trade compliance -- Check counterparties, shipping companies, and vessel names before processing international trade transactions.
  • Investment portfolio screening -- Scan portfolio companies, board members, and beneficial owners against the sanctions list for ESG and compliance reporting.
  • Legal case research -- Search for sanctioned individuals and entities by name, alias, or ID number during legal investigations and litigation support.
  • Journalist investigations -- Cross-reference persons of interest against the SDN list for investigative reporting on sanctions evasion or financial crime.
  • Insurance underwriting -- Screen policy applicants and beneficiaries against sanctions lists as part of the underwriting risk assessment process.
  • Nonprofit grant screening -- Verify grant recipients and partner organizations are not sanctioned before disbursing funds, as required by US federal grant conditions.

API & Integration

The actor's output is available through the Apify API immediately after each run completes. You can retrieve results in JSON, CSV, XML, or Excel format.

Python -- fetch results from the last run:

from apify_client import ApifyClient

client = ApifyClient("YOUR_API_TOKEN")
dataset = client.dataset(client.actor("ryanclinton/ofac-sanctions-search").last_run().get()["defaultDatasetId"])
for item in dataset.iterate_items():
    if item.get("matchScore", 0) >= 80:
        print(f"HIGH MATCH: {item['fullName']} (score: {item['matchScore']})")

JavaScript -- fetch results from the last run:

import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });
const run = await client.actor('ryanclinton/ofac-sanctions-search').lastRun().get();
const { items } = await client.dataset(run.defaultDatasetId).listItems();

const highMatches = items.filter(item => item.matchScore >= 80);
console.log(`Found ${highMatches.length} high-confidence matches`);

cURL -- download results as CSV:

curl "https://api.apify.com/v2/acts/ryanclinton~ofac-sanctions-search/runs/last/dataset/items?token=YOUR_API_TOKEN&format=csv" \
  -o sanctions_results.csv

Integrations:

This actor works with all Apify integrations out of the box. Connect it to Zapier, Make (formerly Integromat), Google Sheets, Slack, Microsoft Teams, or email notifications using Apify's built-in integration options. Use webhooks to trigger downstream workflows whenever a run completes -- for example, automatically sending a Slack alert when high-confidence matches are found. You can also chain this actor with other actors using the Apify API for multi-step compliance pipelines.


How it works

  1. Download -- The actor fetches the complete SDN XML file (~30 MB) directly from the US Treasury website at treasury.gov/ofac/downloads/sdn.xml.
  2. Parse -- The XML is parsed in memory using fast-xml-parser with array hints to ensure consistent handling of single-element and multi-element lists.
  3. Normalize -- The search query is normalized: lowercased, diacritics stripped, punctuation removed, and whitespace collapsed. The same normalization is applied to every field being compared.
  4. Filter -- Entries are filtered by search type (Individual/Entity/Vessel/Aircraft), sanctions program code, and country (checked across addresses, nationalities, citizenships, and vessel flags).
  5. Score -- Each surviving entry is scored 0--100 against the query using a multi-signal approach: exact full-name match (100), substring containment (70--95), token overlap (up to 55), and Levenshtein fuzzy matching for short strings. Alias matches receive a 0.9x multiplier, ID number matches receive 0.85x, and remarks matches cap at 30.
  6. Threshold -- Entries scoring below the threshold are discarded (20 for fuzzy mode, 50 for exact mode).
  7. Rank and output -- Remaining entries are sorted by score descending, truncated to maxResults, transformed into structured JSON with all available fields, and pushed to the Apify dataset.
  treasury.gov/sdn.xml
          |
          v
  +-----------------+
  | Download ~30 MB |
  +-----------------+
          |
          v
  +-----------------+
  |   Parse XML     |
  | (fast-xml-parser)|
  +-----------------+
          |
          v
  +-----------------+
  | Normalize query |
  | + all fields    |
  +-----------------+
          |
          v
  +-----------------+
  | Filter by type, |
  | program, country|
  +-----------------+
          |
          v
  +-----------------+
  | Score & rank    |
  | (0-100 fuzzy)   |
  +-----------------+
          |
          v
  +-----------------+
  | Output to       |
  | Apify dataset   |
  +-----------------+

Performance & cost

MetricValue
Average run time15--30 seconds
XML download5--15 seconds (~30 MB)
Parse + search3--10 seconds
Memory usage512 MB (recommended)
Compute units per run~0.01--0.02 CU
Cost per run (pay-as-you-go)~$0.005--$0.01
Free tier estimate~50--100 runs/month on the free plan
SDN list size~12,000+ entries
Max results per run500

Costs depend on Apify's current pricing and may vary based on platform load and actual run duration. The actor is optimized for single-pass in-memory processing, so it does not make multiple HTTP requests or use persistent storage beyond the output dataset.


Limitations

  • Single-query design -- The actor accepts one search query per run. For bulk screening of hundreds of names, you will need to call the actor multiple times or build a wrapper that iterates through your list.
  • SDN list only -- This actor searches only the OFAC SDN list. It does not cover the Consolidated Sanctions List, the Sectoral Sanctions Identifications (SSI) list, the Non-SDN Palestinian Legislative Council list, or other OFAC sub-lists.
  • No historical data -- The actor always downloads the current SDN list. It does not provide historical snapshots or track when entries were added or removed.
  • Name matching is heuristic -- While fuzzy matching handles many variations, heavily transliterated names across different scripts (e.g., Arabic, Cyrillic, Chinese) may not always match perfectly.
  • Download dependency -- The actor relies on the treasury.gov XML feed being accessible. If the Treasury website is down or the XML format changes, the actor will fail.
  • In-memory processing -- The entire SDN XML (~30 MB parsed) is held in memory. The 512 MB memory allocation handles this comfortably, but extremely constrained environments may need adjustment.
  • No real-time updates -- OFAC typically updates the SDN list a few times per week. There may be a delay between OFAC publishing an update and the XML file reflecting the change.

Responsible use

  • Not a substitute for legal compliance programs -- This actor is a screening tool, not a compliance program. Always consult qualified legal counsel for sanctions compliance obligations specific to your jurisdiction and industry.
  • Human review required -- Fuzzy matching may produce false positives. All results, especially those with match scores below 80, should be reviewed by a trained compliance professional before taking action.
  • Respect the data source -- The SDN list is published by the US Department of the Treasury. Avoid excessive request frequency that could burden the treasury.gov servers. Use Apify scheduling at reasonable intervals (daily or weekly) rather than minute-by-minute polling.
  • Privacy considerations -- Sanctions screening results contain personal information (names, dates of birth, addresses, ID numbers). Handle this data in accordance with applicable privacy regulations such as GDPR, CCPA, and your organization's data protection policies.
  • Do not use for discrimination -- Sanctions screening should be applied uniformly as part of a documented compliance process. Do not use this tool to discriminate against individuals based on nationality, ethnicity, or other protected characteristics beyond what is required by sanctions regulations.

FAQ

Q: Do I need an API key or Treasury account to use this actor? A: No. The actor downloads the SDN list from a publicly available XML file hosted on treasury.gov. No API key, registration, or authentication is required.

Q: How current is the SDN data? A: The actor downloads the live SDN XML file from treasury.gov on every run. The data is as current as the latest OFAC publication, which is typically updated several times per week.

Q: What does the match score mean? A: The match score ranges from 0 to 100. A score of 100 means an exact match on the primary name. Scores of 70--95 indicate strong substring matches. Scores of 50--70 suggest partial token overlap. Scores below 50 are weaker fuzzy matches. Alias matches are weighted at 0.9x and ID matches at 0.85x relative to primary name matches.

Q: How does fuzzy matching work? A: Fuzzy matching uses a combination of Levenshtein edit distance (for detecting typos and transliteration variations), token-based matching (for name word overlap), substring detection, and diacritics normalization. It is designed to catch common variations like "Muller" vs. "Mueller" or "Mohammad" vs. "Muhammad".

Q: Can I search by ID number or passport number? A: Yes. Enter the ID or passport number as the search query. The actor checks against all ID documents listed for each SDN entry. ID matches are scored at 0.85x the primary name match weight.

Q: Can I screen a list of names in bulk? A: The actor processes one query per run. For bulk screening, call the actor multiple times using the Apify API in a loop, or use the Apify client.actor().call() method in a script that iterates through your list.

Q: What sanctions programs are covered? A: All programs on the SDN list are searchable. Common codes include SDGT (terrorism), IRAN, CUBA, DPRK (North Korea), SYRIA, UKRAINE-EO13661, UKRAINE-EO13662, RUSSIA-EO14024, CYBER2, GLOMAG (Global Magnitsky), and many more.

Q: Does this actor cover the full consolidated OFAC sanctions list? A: No, this actor specifically covers the SDN (Specially Designated Nationals) list. It does not include the Sectoral Sanctions (SSI), the Non-SDN Menu-Based Sanctions, or other supplementary lists published by OFAC.

Q: How do I set up recurring screening? A: Use the Apify scheduling feature to run the actor on a daily or weekly basis. Combine it with a webhook to receive a notification or trigger a downstream workflow whenever results are returned.

Q: Can I search for vessel names? A: Yes. Set the searchType to "Vessel" and enter the vessel name or IMO number as the query. Results will include vessel-specific fields such as call sign, vessel type, flag, owner, and tonnage.

Q: What happens when no results are found? A: The actor pushes a single object to the dataset with a message field indicating no matches were found, along with the query parameters and the SDN list metadata (publication date and total entry count).

Q: How much does it cost to run? A: A typical run costs approximately $0.005--$0.01 in Apify compute units. On the free plan, you can run approximately 50--100 screenings per month at no cost.


Related actors

ActorDescriptionLink
OpenSanctions SearchSearch the OpenSanctions global dataset covering sanctions, PEPs, and criminal watchlists from 80+ data sourcesLink
Interpol Red Notice SearchSearch Interpol's database of Red Notices for wanted persons worldwideLink
UK Companies HouseSearch the UK Companies House register for company details, officers, and filing historyLink
OpenCorporates SearchSearch the world's largest open database of company information across 140+ jurisdictionsLink
GLEIF LEI LookupLook up Legal Entity Identifiers (LEIs) for corporate entity verification and ownership dataLink
SEC Insider TradingSearch SEC EDGAR for insider trading filings (Form 4) by company or individualLink

How it works

01

Configure

Set your parameters in the Apify Console or pass them via API.

02

Run

Click Start, trigger via API, webhook, or set up a schedule.

03

Get results

Download as JSON, CSV, or Excel. Integrate with 1,000+ apps.

Use cases

Sales Teams

Build targeted lead lists with verified contact data.

Marketing

Research competitors and identify outreach opportunities.

Data Teams

Automate data collection pipelines with scheduled runs.

Developers

Integrate via REST API or use as an MCP tool in AI workflows.

Ready to try OFAC Sanctions List Search?

Start for free on Apify. No credit card required.

Open on Apify Store