OFAC SDN Sanctions List Scraper — Name Screening + Bulk Export
Pricing
Pay per event
OFAC SDN Sanctions List Scraper — Name Screening + Bulk Export
Screen names against the US Treasury OFAC SDN sanctions list with fuzzy alias matching, or bulk-export the parsed list filtered by program and entity type. Structured JSON, no OFAC CSV wrangling required.
Pricing
Pay per event
Rating
0.0
(0)
Developer
DevilScrapes
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
7 hours ago
Last modified
Categories
Share
🎯 What this scrapes
This Actor fetches the US Treasury's public OFAC SDN export
(SDN.CSV, plus its ALT.CSV alias and ADD.CSV address companion
files) and turns Treasury's raw legacy CSV format into structured,
typed records. It runs in two modes:
- Screen (default) — submit a list of names and get back a fuzzy- matched verdict per name: matched or not, which SDN entities it matched, the match type (primary name vs. alias), and a score. A name that clears with zero matches is a successful result, not an error — that's a clean screening outcome, exactly what a compliance workflow needs to log.
- Bulk — export the parsed SDN list itself, filterable by OFAC
program code (e.g.
CUBA,SDGT) and entity type (individual vs. entity), with aliases and addresses joined in on request.
The SDN list itself is free and public. What you're paying for is the parsing, normalization, alias cross-referencing, and fuzzy-matching layer on top of it — delivered as a hosted Actor you can call from any workflow, without writing OFAC ingestion code.
🔥 What we handle for you
- 🧊 Correct CSV parsing — Treasury's SDN export has no header row and uses a literal
-0-string as its null sentinel; we map columns by position and convert-0-to a realnullso you never see it in your data. - 🔗 Alias + address cross-referencing —
ALT.CSVandADD.CSVrows are joined back to their parent SDN entity byent_num, not left as three disconnected files you'd have to join yourself. - 🎯 Tunable fuzzy matching — names are normalized (case, punctuation, diacritics) and scored with a string-similarity ratio, not brittle exact/substring matching.
matchThresholdis yours to tighten or loosen per screening run. - ✅ Zero matches is a success, not a failure — a screened name that clears the sanctions list finishes with a clean
matched: falserow and aSUCCEEDEDrun, so you can log every screening outcome without treating "no hit" as an error. - 🔁 Retries with exponential backoff on
408 / 429 / 5xx— up to 5 attempts,Retry-Afterhonoured, before we fail loud. - 💰 Pay-Per-Event pricing — you pay per name screened or record exported, not per page fetched. No results, no charge beyond the small warm-up fee.
💡 Use cases
- KYC/AML onboarding checks — screen new customer or counterparty names before account opening.
- Vendor and partner due diligence — batch-screen a supplier or partner list ahead of a contract.
- Payroll and HR screening — check new-hire names against the SDN list as part of a compliance workflow.
- Compliance data warehousing — bulk-export the current SDN list filtered by program to keep an internal sanctions table fresh.
- Fintech transaction screening prototypes — a pay-per-use SDN check to validate a screening flow before committing to a monitored SaaS contract.
⚙️ How to use it
- Click Try for free (or Start) on the Actor page.
- Leave Mode on
screenand edit Names to screen to your own list — or switch tobulkto export parsed SDN records instead. - Run it. Each screened name (or exported record) lands in your dataset as one row.
- Export the dataset as JSON, CSV, Excel, or pull it via the Apify API.
📥 Input
| Field | Type | Default | Description |
|---|---|---|---|
mode | enum screen/bulk | screen | Screen names, or bulk-export the parsed list. |
namesToScreen | array of strings | 2 sample names | Required (non-empty) when mode is screen. |
matchThreshold | number (0.5–1.0) | 0.82 | Minimum fuzzy-match ratio to count as a hit. |
includeAliases | boolean | true | Match against (screen) / attach (bulk) OFAC alias names. |
includeAddresses | boolean | false | Bulk mode only — attach known addresses. |
maxMatchesPerName | integer (1–100) | 10 | Screen mode only — cap matches returned per name. |
programFilter | array of strings | none | Bulk mode only — restrict to these OFAC program codes. |
entityTypeFilter | enum all/individual/entity | all | Bulk mode only — restrict by SDN entity type. |
limit | integer (1–20 000) | 1000 | Bulk mode only — max rows exported. |
proxyConfiguration | object | Apify Proxy on | Fleet-standard field; this target has no known anti-bot. |
{"mode": "screen","namesToScreen": ["Ayman Al-Zawahiri", "Jane Smith"],"matchThreshold": 0.82,"includeAliases": true,"maxMatchesPerName": 10,"proxyConfiguration": { "useApifyProxy": true }}
📤 Output
Screen mode, matched case:
{"mode": "screen","fetched_at": "2026-09-09T07:24:46Z","queried_name": "Ayman Al-Zawahiri","matched": true,"match_count": 1,"matches": [{"ent_num": 2676,"matched_name": "AL ZAWAHIRI, Dr. Ayman","match_type": "primary_name","sdn_type": "individual","program": "SDGT","score": 0.91}]}
Screen mode, zero-match case (a successful screening outcome):
{"mode": "screen","fetched_at": "2026-09-09T07:24:46Z","queried_name": "Jane Smith","matched": false,"match_count": 0,"matches": []}
Bulk mode:
{"mode": "bulk","fetched_at": "2026-09-09T07:24:46Z","ent_num": 2676,"sdn_name": "AL ZAWAHIRI, Dr. Ayman","sdn_type": "individual","program": "SDGT","title": "Operational and Military Leader of JIHAD GROUP","remarks": "DOB 19 Jun 1951; POB Giza, Egypt; ...","aliases": [],"addresses": []}
💰 Pricing
Pay-Per-Event — you're charged only for the warm-up and for rows that actually land in your dataset.
| Event | Price | Trigger |
|---|---|---|
| Actor start | $0.20 | Once per run, after input validation succeeds |
| Record exported | $0.004 | Per parsed SDN record pushed (bulk mode) — ~$4 / 1 000 |
| Name screened | $0.01 | Per screened name pushed (screen mode), matched or not — ~$10 / 1 000 |
🚧 Limitations
- SDN list only, v1. The Consolidated (Non-SDN) sanctions list isn't included — its export filename wasn't confirmed live at build time.
- US OFAC only. No EU, UN, UK, or other national sanctions lists.
- Screening aid, not a compliance guarantee. Fuzzy matching can produce false positives or false negatives on ambiguous names.
matchThresholdand per-matchscoreare yours to tune and audit — this Actor doesn't replace a licensed compliance program. - No historical snapshots. Every run screens against the SDN list as currently published by Treasury; there's no diffing between publication dates.
- No recurring monitoring in-Actor. For scheduled re-screening, layer Apify's own Scheduler on top of this Actor.
❓ FAQ
Is the OFAC SDN list free? Yes — Treasury publishes it publicly. You're paying for the parsing, alias cross-referencing, and fuzzy-matching layer, not the underlying data.
What counts as a "match"?
Any SDN primary name (and alias, if includeAliases is on) whose fuzzy-match score against your queried name is at or above matchThreshold.
Does a "no match" result cost anything? Yes, the same as a match — the deliverable is the verdict, not just a hit. A clean screening result is still a result you need to log.
Can I screen a large batch of names in one run?
Yes — add as many entries to namesToScreen as you need; each is billed and returned as its own row.
Does this cover the EU, UN, or UK sanctions lists? Not in v1 — this Actor is US OFAC SDN only.
💬 Your feedback
Found a gap, a parsing edge case, or want another sanctions list covered? Message DevilScrapes on Apify — we read every note and ship fixes fast.