OpenSanctions Sanctions & Watchlist Screener
Pricing
from $2.00 / 1,000 results
OpenSanctions Sanctions & Watchlist Screener
Screen entity names and crypto wallet addresses against sanctions and watchlists: OFAC SDN by default plus EU, UK, UN and 470+ more lists. Each match comes with the list, confidence tier, programs, authorities and source links; every query that finds nothing gets an audit row.
Pricing
from $2.00 / 1,000 results
Rating
0.0
(0)
Developer
Philip Kirkbride
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Sanctions & AML Screening with OpenSanctions Data
Quick Start
Screen entity names and crypto wallet addresses against sanctions and watchlists — OFAC SDN by default, plus EU, UK, UN, and 470+ more datasets. Built for AML checks, counterparty due diligence, and compliance audits. Start with:
{"queries": ["VTB Bank", "Lazarus Group", "0xE950DC316b836e4EeFb8308bf32Bf7C72a1358FF"], "datasets": ["us_ofac_sdn"]}
Screened against OpenSanctions official bulk data — no account or API key required.
What you get
- One record per matched name or address: which lists matched, match confidence, programs, authorities, sanction reasons, and source URLs.
- An explicit no-match audit row for every query that found nothing — each query is accounted for.
- List data is downloaded once and reused by subsequent runs, refreshed on the schedule you set.
Input
| Name | Type | Default | What it does |
|---|---|---|---|
queries | array | required | 1–500 entity names and/or crypto addresses (BTC/ETH/TRON/USDT/…). |
datasets | array | ["us_ofac_sdn"] | Up to 8 OpenSanctions datasets, e.g. us_trade_csl, eu_fsf, gb_fcdo_sanctions, un_sc_sanctions, or the consolidated sanctions merge. |
maxDatasetAgeHours | integer | 168 | Reuse cached list data younger than this many hours; re-download when older. |
includeAliases | boolean | true | Also match known aliases / AKAs of listed entities. |
Output
Dataset fields: recordKey, query, queryType (name/address), match, confidence (exact/alias/address), matchedName, caption, targetType (Person, LegalEntity, Company, Organization, Vessel, CryptoWallet, Airplane), lists, countries, topics, programs, authorities, sanctions (per-list designation details with source URLs), sourceUrl, entityUrl (the OpenSanctions profile page), publicKey, currency, holderName, datasetsMeta (dataset provenance incl. upstream build time), screenedAt.
Example record:
{"recordKey":"os:vtb-bank:NK-223CQDBzp8MRkdJMDiqXn3","source":"opensanctions-bulk","kind":"sanctions_screen","query":"VTB Bank","queryType":"name","match":true,"confidence":"exact","matchedName":"VTB Bank","caption":"Bank VTB Publichnoe Aktsionernoe Obshchestvo","targetType":"Organization","lists":["us_ofac_sdn","eu_fsf"],"countries":["ru"],"topics":["sanction"],"programs":["US-UKRRUS-REL"],"sanctions":[{"program":"US-UKRRUS-REL","authority":["Office of Foreign Assets Control"],"sourceUrl":["https://sanctionssearch.ofac.treas.gov/Details.aspx?id=17013"]}],"entityUrl":"https://www.opensanctions.org/entities/NK-223CQDBzp8MRkdJMDiqXn3","screenedAt":"2026-10-02T00:00:00Z"}
The run summary in the default key-value store reports status, per-dataset freshness, matched and unmatched query counts, rows by confidence tier, and warnings naming the queries with no match.
FAQ
How does matching work? Deterministic tiers: exact name, known alias/AKA, or wallet address. There is no fuzzy scoring — near-misses come back as no-match rather than as low-confidence hits.
How fresh are the lists? Every record carries the upstream build time of the list data it was screened against. Cached runs screen the cached build; control refresh with maxDatasetAgeHours (default one week).
Which lists can I screen against? Any of the 470+ OpenSanctions datasets — OFAC SDN by default, plus EU FSF, UK FCDO, UN Security Council, the US trade consolidated list, or the full consolidated sanctions merge (a much larger download: give that run more memory and time).
Are wallet addresses matched exactly? Hex (0x…) and uniformly-cased bech32 addresses match case-insensitively; base58 (BTC/TRON) is case-sensitive — screen the exact address you transact with.
What does a no-match mean? No match in the selected datasets at their build time. It is audit evidence — never clearance or proof of sanction absence.
Support
For questions or issues, contact Apify Support from the Actor page and include the run URL.