OFAC Sanctions Scraper — SDN, Consolidated & AML Data avatar

OFAC Sanctions Scraper — SDN, Consolidated & AML Data

Pricing

from $1.50 / 1,000 results

Go to Apify Store
OFAC Sanctions Scraper — SDN, Consolidated & AML Data

OFAC Sanctions Scraper — SDN, Consolidated & AML Data

Scrape the US Treasury OFAC sanctions lists (SDN + Consolidated). Extract name, type, programs, aliases, addresses, nationalities and IDs for AML/KYC, compliance screening, and sanctions research. No API key required.

Pricing

from $1.50 / 1,000 results

Rating

0.0

(0)

Developer

Logiover

Logiover

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Categories

Share

OFAC Sanctions Scraper — SDN, Consolidated & AML/KYC Data

Scrape the US Treasury OFAC sanctions lists (SDN + Consolidated) and extract structured, enriched entity data for AML/KYC compliance, sanctions screening, and financial crime research. No API key or login required.

What does OFAC Sanctions Scraper do?

OFAC Sanctions Scraper downloads the US Treasury's Office of Foreign Assets Control (OFAC) official public CSV files directly from treasury.gov — no API key, no login, no scraping of HTML. It parses three interconnected datasets: the primary SDN list (sdn.csv), the alternate-names file (alt.csv), and the addresses file (add.csv). For broader coverage it also supports the Consolidated Sanctions List (cons_prim.csv), which covers all OFAC-administered programs in a single file.

Each raw CSV row is enriched using cross-reference joins: aliases from alt.csv, addresses from add.csv, and structured IDs (passport numbers, tax IDs, IMO vessel numbers, dates/places of birth) parsed directly from the remarks free-text field using pattern matching. The scraper normalizes null sentinel values (-0-) to empty strings, classifies entity types (individual, entity, vessel, aircraft), and streams results directly into the Apify dataset.

A single run returns the full SDN list (~19,000 entries), the full Consolidated list (~440 entries), or both, filtered by name substring, sanctions program code (e.g., IRAN, SDGT, RUSSIA), or entity type.

Who is it for?

  • Compliance officers and AML analysts who need up-to-date sanctions data for customer screening workflows.
  • Fintech and banking developers building automated KYC/CDD pipelines that require fresh OFAC data without paying for commercial screening APIs.
  • Legal and risk teams conducting due diligence on counterparties, vendors, or investment targets.
  • Academic researchers and journalists studying sanctions regimes, geopolitical enforcement, or financial crime patterns.
  • Data engineers maintaining internal sanctions databases who need a reliable, scriptable extract in JSON, CSV, or Excel format.

Use cases

  • Screen a customer onboarding list against all OFAC-sanctioned individuals and entities to flag matches before account opening.
  • Build a daily-refresh pipeline that downloads the latest OFAC data and inserts new or changed entries into your compliance database.
  • Research all sanctioned entities under a specific program (e.g., DPRK, RUSSIA, IRAN) for policy analysis or investigative journalism.
  • Extract vessel data (IMO, flag, tonnage, call sign) to power maritime compliance dashboards tracking sanctioned ships.
  • Generate an enriched export of all sanctioned individuals with aliases, addresses, and passport numbers for third-party risk assessment tools.

Why use OFAC Sanctions Scraper?

  • Keyless and official: pulls directly from treasury.gov public downloads — no API key, no registration, no cost per call.
  • 18 structured fields: uid, name, type, programs, title, remarks, listType, aliases, addresses, nationalities, IDs (passport/tax/DOB/POB/IMO), call sign, vessel type, flag, tonnage, GRT, vessel owner.
  • Thousands of entries per run: SDN alone contains ~19,000 entries; combined with consolidated totals over 19,400+.
  • Smart enrichment: alias list and address list joined from separate CSV files; IDs and DOB/POB parsed from remarks free-text.
  • Flexible filtering: filter by name substring, sanctions program code, or entity type before results are written — saves cost on downstream processing.
  • Export to CSV, JSON, Excel, or Google Sheets: Apify dataset supports all formats out of the box; no post-processing needed.

What data can you extract?

Every output row represents one sanctioned entity and contains the following fields:

FieldTypeDescription
uidstringOFAC unique entity identifier
namestringPrimary name of the sanctioned entity
typestringEntity type: individual, entity, vessel, aircraft
programsstringSanctions program code(s), e.g. SDGT, IRAN, RUSSIA
titlestringTitle or position (individuals only)
remarksstringFree-text remarks including DOB, POB, passport numbers
listTypestringSource list: SDN or Consolidated
aliasesstringJSON array of {type, name} objects (aka, fka, nka)
addressesstringJSON array of address strings
nationalitiesstringNationalities/countries extracted from remarks
idsstringJSON array of {type, value} objects (passport, tax ID, IMO, DOB, POB)
callSignstringRadio call sign (vessels and aircraft)
vesselTypestringVessel class description
tonnagestringVessel tonnage
grtstringGross registered tonnage
vesselFlagstringVessel flag state
vesselOwnerstringRegistered vessel owner
scrapedAtstringISO 8601 timestamp of the scrape run

Example output record (individual):

{
"uid": "2674",
"name": "ABBAS, Abu",
"type": "individual",
"programs": "SDGT",
"title": "Director of PALESTINE LIBERATION FRONT - ABU ABBAS FACTION",
"remarks": "DOB 10 Dec 1948; Secondary sanctions risk: section 1(b) of Executive Order 13224...",
"listType": "SDN",
"aliases": "[{\"type\":\"aka\",\"name\":\"ABU KHALED\"},{\"type\":\"aka\",\"name\":\"ZAYED, Muhammad Abbas\"}]",
"addresses": "[\"Gaza, Palestinian Territory\"]",
"nationalities": "",
"ids": "[{\"type\":\"DOB\",\"value\":\"10 Dec 1948\"},{\"type\":\"POB\",\"value\":\"Haifa\"}]",
"callSign": "",
"vesselType": "",
"tonnage": "",
"grt": "",
"vesselFlag": "",
"vesselOwner": "",
"scrapedAt": "2026-07-08T10:00:00.000Z"
}

How to use

Option A: Full list extraction (most common)

Set mode to sdn, consolidated, or all and leave filters empty to retrieve all entries.

Input JSON:

{
"mode": "sdn"
}

Option B: Filtered extraction by program or name

Use programFilter and/or nameFilter to narrow down results to a specific sanctions regime or entity name.

Step 1: Choose the list mode. Step 2: Enter a program code in programFilter (e.g., IRAN, RUSSIA, DPRK, CYBER, SDGT, CUBA). Step 3: Optionally add a nameFilter substring to further restrict by name or alias. Step 4: Run the actor and export results as CSV, JSON, or Excel.

Input JSON (Russia-program individuals only):

{
"mode": "sdn",
"programFilter": "RUSSIA",
"typeFilter": "individual",
"nameFilter": ""
}

Input JSON (specific person search):

{
"mode": "all",
"nameFilter": "Putin",
"programFilter": "",
"typeFilter": ""
}

Input parameters

ParameterTypeDefaultDescription
modestring"sdn"Which list(s) to scrape: sdn, consolidated, or all
nameFilterstring""Case-insensitive substring match on name and aliases
programFilterstring""Case-insensitive substring match on sanctions program code
typeFilterstring""Filter by type: individual, entity, vessel, aircraft
maxEntriesinteger0Cap output at N entries; 0 = unlimited
proxyConfigurationobjectApify datacenterProxy settings (datacenter works for US .gov endpoints)

Full input JSON:

{
"mode": "sdn",
"nameFilter": "",
"programFilter": "IRAN",
"typeFilter": "individual",
"maxEntries": 0,
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": ["SHADER"]
}
}

Output example

{
"uid": "26765",
"name": "BANK MELLI IRAN",
"type": "entity",
"programs": "IRAN",
"title": "",
"remarks": "All offices worldwide. SWIFT/BIC MELIIRTH; Additional Sanctions Information...",
"listType": "SDN",
"aliases": "[{\"type\":\"aka\",\"name\":\"MELLI BANK\"},{\"type\":\"aka\",\"name\":\"NATIONAL BANK OF IRAN\"}]",
"addresses": "[\"Ferdowsi Avenue, PO Box 11365-171, Tehran, Iran\",\"43 Avenue Montaigne, Paris 75008, France\"]",
"nationalities": "",
"ids": "[{\"type\":\"Passport\",\"value\":\"\"},{\"type\":\"Registration\",\"value\":\"10100459\"}]",
"callSign": "",
"vesselType": "",
"tonnage": "",
"grt": "",
"vesselFlag": "",
"vesselOwner": "",
"scrapedAt": "2026-07-08T10:00:00.000Z"
}

Tips for best results

  • Use mode: "all" when building a comprehensive sanctions screening database — it merges SDN and Consolidated lists and deduplicates by UID.
  • OFAC updates its lists frequently (often weekly). Schedule the actor to run daily or weekly via Apify Schedules to keep your data fresh.
  • For vessel screening, use typeFilter: "vessel" combined with programFilter to isolate specific maritime sanctions programs.
  • The ids field contains structured identifiers parsed from the remarks free-text — use JSON.parse() when processing with code to extract individual passport or tax ID values.
  • When building a sanctions screening tool, match against both name and the aliases array (parse the JSON string) to maximize hit rates.
  • The programFilter field accepts partial matches — use "IRAN" to catch IRAN, IRAN-EO13622, IRAN-TRA, and all related sub-programs.
  • Export as CSV for quick analysis in Excel/Sheets; export as JSON for downstream API consumption or database loading.
  • For large-scale integrations, use the Apify API to trigger runs programmatically and poll for completion before pulling the dataset.
  • Set maxEntries: 100 for testing your downstream pipeline before running a full extraction.
  • Datacenter proxies are sufficient for treasury.gov — no residential proxy needed, which keeps costs low.

Integrations

  • Google Sheets: Connect via Apify's Google Sheets integration to auto-populate a spreadsheet with the latest OFAC data on each scheduled run.
  • Slack: Send a Slack notification webhook when a new run completes to alert your compliance team that the sanctions database has been refreshed.
  • Zapier / Make: Trigger downstream workflows (e.g., update a Salesforce record, notify a risk team) whenever new sanctioned entities are detected.
  • Webhooks: Configure an Apify webhook to POST the dataset URL to your internal API endpoint on run completion.
  • Schedule: Use Apify Schedules to run this actor automatically every day or week — treasury.gov updates can occur at any time.

API usage

cURL:

curl -X POST \
"https://api.apify.com/v2/acts/logiover~ofac-sanctions-scraper/runs?token=YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"mode":"sdn","programFilter":"IRAN"}'

Node.js (Apify client):

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });
const run = await client.actor('logiover/ofac-sanctions-scraper').call({
mode: 'sdn',
programFilter: 'RUSSIA',
typeFilter: 'individual',
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items.length, 'sanctioned individuals found');

Python:

from apify_client import ApifyClient
client = ApifyClient("YOUR_API_TOKEN")
run = client.actor("logiover/ofac-sanctions-scraper").call(run_input={
"mode": "sdn",
"programFilter": "DPRK",
})
items = client.dataset(run["defaultDatasetId"]).list_items().items
print(f"{len(items)} DPRK-sanctioned entities found")

Use with AI agents (MCP)

OFAC Sanctions Scraper is available as an Apify MCP server tool. An AI agent can call it on demand to check sanctions status during a due diligence or KYC workflow. Example prompt: "Use the OFAC Sanctions Scraper to check whether any entity named 'Gazprom' appears on the OFAC SDN list and return all aliases and addresses." The agent will trigger a filtered run, wait for results, and return structured data without any manual steps.

FAQ

Does this require an API key or login?

No. The actor downloads data directly from public US Treasury URLs (treasury.gov/ofac/downloads/) using standard HTTP GET requests. No OFAC account, API key, or registration is required.

How many entries does a full run return?

A full sdn run returns approximately 19,000–19,500 entries (the list grows as new designations are added). A consolidated run returns around 440 entries. Using mode: "all" returns the union of both.

How current is the data?

The actor fetches the live files directly from treasury.gov every time it runs. OFAC updates its lists frequently — sometimes daily. Schedule the actor to match your compliance refresh cadence.

Why do some entries have empty fields?

OFAC's CSV files use -0- as a null sentinel for empty values. The actor converts these to empty strings. Not all entities have all fields — vessels have IMO/flag data, individuals have DOB/passport data, and many older entries have sparse remarks.

Can I filter for specific countries or sanctions programs?

Yes. Use programFilter to match against OFAC program codes. Common codes include: IRAN, CUBA, SDGT (global terrorism), RUSSIA, DPRK (North Korea), CYBER, SYRIA, VENEZUELA, GLOMAG (global Magnitsky), CAATSA.

How do I extract passport numbers or dates of birth from the output?

Parse the ids field as JSON: JSON.parse(row.ids) returns an array of {type, value} objects. type values include DOB, POB, Passport, National ID, Tax ID, IMO, MMSI.

How do I export to Excel or CSV?

In the Apify dataset view, click the Export button and choose CSV, Excel, or JSON. Or use the Apify API: GET /v2/datasets/{datasetId}/items?format=csv.

How fast is a full run?

A full SDN extraction (19,000+ entries) completes in under 3 minutes with a single datacenter proxy connection. No concurrency tuning needed.

OFAC sanctions data is published by the US federal government as open government data with no usage restrictions. It is explicitly intended for public use for compliance and screening purposes. See the OFAC website FAQ for details.

How often is the OFAC list updated?

OFAC updates the lists on an irregular but frequent schedule — sometimes multiple times per week. Major geopolitical events (new executive orders, UN resolutions) trigger immediate list updates. Running this actor daily is recommended for compliance-critical workflows.

Can I match against my own customer database?

Not directly — this actor extracts the OFAC data. Build your matching logic separately: load the actor's output into a database, then use fuzzy name matching (e.g., Levenshtein distance, Metaphone) to compare against your customer records.

What is the difference between SDN and Consolidated lists?

The SDN (Specially Designated Nationals) list is OFAC's primary and largest list, covering individuals and entities from many programs. The Consolidated list merges all OFAC-administered lists into one file. Use mode: "all" to get full coverage.

This actor accesses only publicly available data published by the US Treasury Department at official government URLs. The OFAC sanctions data is released as open government data intended for use by financial institutions, compliance teams, researchers, and the general public. No authentication is bypassed, no rate limits are violated, and no private data is accessed. Users are responsible for ensuring their downstream use of this data complies with applicable laws and their own privacy policies.