OFAC Sanctions Screening API — No API Key Required
Pricing
from $4.00 / 1,000 sanctions records
OFAC Sanctions Screening API — No API Key Required
No API key required — screen names against the official U.S. Treasury OFAC SDN and Consolidated sanctions lists for AML/KYB compliance. Keyless, no scraping.
Pricing
from $4.00 / 1,000 sanctions records
Rating
0.0
(0)
Developer
Moose & Raven
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
0
Monthly active users
37 minutes ago
Last modified
Categories
Share
No API key required. This actor screens names against the official U.S. Treasury OFAC Specially Designated Nationals (SDN) list and the Consolidated (non-SDN) sanctions list for AML/KYB compliance — via the official, keyless Sanctions List Service. No account, no registration, no scraping: just supply names and screen. Optional incremental monitoring flags newly-added listings on scheduled runs.
Live-validated 2026-07-15 against the real, current lists (19,217 real SDN entries fetched and correctly parsed/filtered in testing) — the CSV parsing, name matching, and monitor-mode diff logic have all been exercised against live data, not just fixtures.
This is a screening aid, not legal advice. It does substring matching against the official lists, not certified fuzzy/phonetic compliance matching. Use it to narrow down candidates for review, not as a standalone legal clearance — see Limitations below.
What makes this different
Zero setup. Treasury's Sanctions List Service (sanctionslistservice.ofac.treas.gov) is a
free, official REST service — no account, no API key, nothing to configure beyond your search
input. Most comparable actors on the Store require registration or scrape a web UI; this hits the
official bulk-data service directly.
Built for ongoing monitoring, not just one-off lookups. Incremental new-listing detection flags newly-added sanctions designations on scheduled runs — most comparable actors in this category only support one-off searches.
Natural pairing: combine with our SAM.gov Federal Contracting Suite actor for a combined "federal debarment + OFAC sanctions" screening pass.
How it works
- No API key needed. Nothing to register, nothing to configure beyond your search input.
- Supply
namesto screen (case-insensitive substring match against the officialSDN_Namefield). Any real screen always checks both SDN and CONSOLIDATED by default — the primary sanctions list is never silently dropped just because you didn't specifylistsyourself. - Choose which lists to check (
SDN,CONSOLIDATED, or both) and optionally filter by sanctionsprogramcode (e.g. "CUBA", "IRAN"). Explicitly narrowinglistsyourself is always respected exactly as given. - Leaving
namesempty with no explicitlistschoice (nothing to screen at all) uses a cheaper, CONSOLIDATED-only default rather than pulling the full ~19,659-entry combined list — this keeps a zero-configuration run fast and inexpensive. This run always pushes an explicitlists-coveragerecord naming exactly what was and wasn't included, so it's never silent. Passlistsexplicitly (with or withoutnames) to include SDN in a no-screen run too. - This actor downloads and filters locally — Treasury's service is a bulk-file distribution endpoint, not a server-side search API, so there's no way to query it more surgically than "fetch the current list, then filter." The full SDN list is a manageable ~5-6MB/~19K entries, so this is fast and cheap in practice, not a real limitation in disguise.
- Optional incremental monitor mode: remembers which
ent_numvalues it has seen (Apify key-value store) and emits a separatenew-listingrecord for anything newly added since the last run — designed for scheduled runs watching for new designations. Confirmed live: a second run against unchanged data produces zero false-positive new-listing flags. - An optional
maxRecordsPerRunper-list cap (default 0 = uncapped). Screening is exhaustive by default — every matching record on every requested list is returned, because a silently partial sanctions screen is the worst failure mode this actor could have (see below). If you set a cap and it truncates a list, the actor emits a loudscreening-statusrecord withstatus: "TRUNCATED"plus a warning log — it never lets a capped run look like a complete one. - The actor aborts the whole run (non-zero exit, clear error) if a list fails to fetch — it never reports "0 matches" when the authoritative list simply never loaded. A compliance user reading a clean result must be able to trust that the list was actually checked.
⚠️ Limitations — read this before relying on it for compliance decisions
- This is substring matching with diacritic-folding and Last,First/First-Last order-swapping —
not a certified compliance-screening engine. Real sanctions screening products use fuzzy/
phonetic matching (to catch typos, transliteration variants beyond simple accent differences,
etc.) — this actor doesn't. A name spelled meaningfully differently than OFAC's listing, or a
nickname/alias not captured in the
SDN_Namefield itself, can still produce a false negative (a real match that this actor misses). Results are binary substring candidates, not scored/ranked matches. This is not legal advice. For compliance-critical decisions, always cross-check against OFAC's own official search tool (sanctionssearch.ofac.treas.gov) — do not treat a clean result from this actor as a legal clearance. - The Consolidated (non-SDN, e.g. NS-PLC) list is fetched and screened in full — as of 2026-07-15 it's ~442 real entries. This actor never treats a near-empty result as normal for either list; an unexpectedly small or missing list is treated as a fetch problem, not a quiet "nothing to report."
- The legacy CSV format is undocumented/positional (no header row, no official published
schema for the exact column order) — the 12-column mapping used here (
entNum,sdnName,sdnType,program,title,callSign,vesselType,tonnage,grt,vesselFlag,vesselOwner,remarks) is inferred from the well-known, long-standing OFAC SDN.CSV format and confirmed against real live data, but OFAC could change this format without notice since it isn't a versioned/documented API contract the way SAM.gov's or FMCSA's JSON APIs are. - Aliases (a.k.a./f.k.a. names) are not broken out as separate searchable records in v1 — they
appear only within the free-text
remarksfield if present, not as structured, individually matchable entries. A more complete implementation would use the richerSDN_ADVANCED.XMLformat (which does have structured alias records) — deferred for now, since that file is ~126MB with a complex ID-based reference schema, too heavy for a cost-efficient per-run fetch. - A full-list export with no names to screen can hit a real cost limit if left uncapped.
Leaving
namesempty with the defaultlistsgets a cheap, bounded default automatically (see above). But if you explicitly request a full list with nothing to screen (e.g.lists: ["SDN"]alone, nonames) and leavemaxRecordsPerRunat 0, fetching and delivering the entire ~19,000-row SDN list can exceed Apify's own per-run cost limit and abort partway through. This is a loud abort, not a silent miss — but set an explicitmaxRecordsPerRunfor a full-list export to avoid it.
Pricing
Pay per event:
sanctions-record— $0.004 / screened record returnedmonitor-run— $0.05 / scheduled monitor-mode run, in addition to per-record charges
Input
Key fields (see the Input tab for the full form): names, lists, programFilter,
monitorMode, maxRecordsPerRun. No required fields — a run with all defaults screens against
both full lists.
Output
Each dataset item has a recordType of "sanctions-listing", "new-listing" (monitor mode
only), "screening-status" (only when a run is truncated), or "lists-coverage" (only when a
run covers fewer than both sanctions lists — see Limitations below). See the Output tab for the
full field reference.
Local development
npm installnpm test # recorded-fixture unit tests, no network needednpx apify-cli run # local end-to-end run — works immediately, no key/account needed
Support
Built and maintained by Moose & Raven. Questions or issues: support@mooseandraven.com.