ofac-sanctions-screening
OFAC / sanctions / PEP / KYB screening for Python. Screen any person, company, or crypto wallet against OFAC SDN, EU, UK (OFSI), UN + 100+ global watchlists (powered by OpenSanctions) and get a PASS / WARN / BLOCK verdict — in one call, with cited sources.
- ✅ Free demo, no signup — start screening in 10 seconds, no API key.
- 🪙 Crypto-wallet OFAC screening — screen BTC/ETH addresses against the OFAC SDN crypto list (most APIs only do names & companies).
- 🏢 KYB-360 — sanctions + PEP + entity risk + registry in one call.
- ⚖️ One PASS / WARN / BLOCK verdict — no raw-list parsing.
- 🔌 Zero dependencies, Python 3.8+. Pay-per-call (card or USDC via x402) — no seat license, no enterprise contract.
Install
pip install ofac-sanctions-screening
Quickstart (free, no key)
from ofac_sanctions_screening import Client
c = Client() # free demo mode, rate-limited
# Sanctions / PEP screen a person or company
print(c.screen("Vladimir Putin"))
# {'result': {'flagged': True, 'match_count': 2, 'risk_topics': ['sanction', 'role.pep', ...], 'matches': [...]}}
# OFAC-screen a crypto wallet against the SDN crypto list
print(c.screen_wallet("1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa"))
# KYB screen a company
print(c.kyb("Acme Inc"))
Full access (paid)
Get an API key instantly with a card at https://api.gocreativeai.com/credits/buy (or pay-per-call in USDC via x402 — no key at all):
c = Client(api_key="gck_...")
c.screen("Some Person") # full sanctions & PEP coverage
c.screen_wallet("0xabc...") # full OFAC wallet screen
c.kyb("Some Company Ltd") # full KYB-360 dossier
c.verdict("Some Person") # one PASS / WARN / BLOCK decision
c.risk("Some Company") # entity risk score 0-100 + onboarding flag
Compliance & registry lookups (paid)
Live watchlist + registry lookups that complement the sanctions screen — healthcare exclusion, fuzzy SDN matching, corporate ownership, name→LEI resolution, SEC filings and the FDA drug directory:
c = Client(api_key="gck_...")
c.screen_oig_exclusion("John Smith")
# {'is_excluded': True, 'match_count': 3, 'risk': 'HIGH — HHS-OIG LEIE ...', 'matches': [...]}
# the mandatory pre-billing check for Medicare/Medicaid providers
c.screen_fuzzy_name("Vladimir Putin")
# {'is_potential_match': True, 'top_score': 83, 'matches': [{'name': 'PUTIN, Vladimir ...', ...}]}
# catches alias / transliteration / reordered-name SDN hits a strict match misses
c.lookup_gleif_entity("Apple Inc") # company NAME -> LEI(s) (ranked matches)
c.lookup_gleif_ownership("5493006MHB84DD0ZWV18") # LEI -> corporate-ownership tree (UBO)
c.lookup_sec_filings("AAPL") # SEC EDGAR recent-filings feed (free demo too)
c.lookup_fda_ndc("Trulicity") # FDA National Drug Code directory lookup
KYB identity / tax-ID validation (paid)
Reject malformed business identifiers before an expensive registry call — deterministic check-digit + reference-data validators for onboarding and vendor due diligence:
c = Client(api_key="gck_...")
c.verify_lei("529900T8BM49AURSDO55")
# {'verdict': 'VALID_ACTIVE', 'checksum_valid': True,
# 'entity': {'legal_name': 'Ubisecure Oy', 'legal_jurisdiction': 'FI', 'entity_status': 'ACTIVE', ...},
# 'registration': {'lei_status': 'ISSUED', ...}} # ← live GLEIF Level-1 record
c.verify_ein("12-3456789") # {'verdict': 'VALID_FORMAT', 'issuing_campus': 'Andover', ...}
c.verify_abn("51824753556") # {'verdict': 'VALID', 'abn_formatted': '51 824 753 556', ...}
c.verify_latam_taxid("MX", "GODE561231GR8")
# {'verdict': 'VALID', 'country': 'MX', 'tax_id_scheme': 'RFC (Registro Federal de Contribuyentes)', ...}
# also handles AR CUIT, PE RUC, CO NIT, CL RUT
c.verify_bic("DEUTDEFF")
# {'verdict': 'VALID', 'structure': {'institution_code': 'DEUT', 'country_code': 'DE', ...},
# 'entity': {'legal_name': 'DEUTSCHE BANK AKTIENGESELLSCHAFT', 'lei': '7LTWFZYICNSX8D621K86', ...}} # ← GLEIF BIC-to-LEI
c.verify_gstin("27AAPFU0939F1ZV") # India GSTIN — mod-36 checksum + state + embedded PAN
c.verify_pan("AAPFU0939F") # India PAN — structure + holder type
c.verify_gtin("4006381333931") # GTIN/UPC/EAN — GS1 mod-10 check digit + region
c.verify_uk_vat("GB434031494") # UK VAT — HMRC modulus-97 (9755)
# Or use the dispatcher for any validator:
c.verify("lei", "5493001KJTIIGC8Y1R12")
c.verify("latam-taxid", "GODE561231GR8", country="MX")
Reference-data / identifier validators (paid)
Deterministic check-digit + structural validators for finance, trade, securities and telecom identifiers — same keyless-algorithm pattern, one line each:
c = Client(api_key="gck_...")
# Finance / banking
c.verify_aba("021000021") # US bank routing / ABA / MICR (Fed mod-10) + district
c.verify_cnpj("11222333000181") # Brazil CNPJ checksum + Receita Federal company lookup
c.verify_cnpj_alpha("12ABC34501DE35") # Brazil CNPJ incl. new 2026 alphanumeric format
# Securities
c.verify_isin("US0378331005") # ISIN (ISO 6166) + security resolve
c.verify_cusip("037833100") # CUSIP (North-American securities, mod-10)
c.verify_sedol("2046251") # SEDOL (UK/Ireland, LSE weighted mod-10)
# Trade / supply chain / government
c.verify_duns("150483782") # D&B D-U-N-S number format
c.verify_cage("1U2A3") # US CAGE / NATO NCAGE (defense-supplier onboarding)
c.verify_eori("GB123456789000") # EU/UK EORI (customs / trade compliance)
c.verify_gln("0614141000012") # GS1 GLN (mod-10) + region
# Telecom / media
c.verify_phone("+14155552671") # phone number (ITU-T E.164) + country decode
c.verify_imei("490154203237518") # IMEI (GSMA Luhn) + TAC (manufacturer/model) decode
c.verify_issn("2049-3630") # ISSN (ISO 3297, mod-11)
c.verify_media_type("application/json") # IANA media type / MIME (RFC 6838)
Methods
| Method | Free demo | Paid endpoint | Returns |
|---|---|---|---|
screen(name) |
✅ | /v1/verdict/screen |
sanctions & PEP matches across OFAC/EU/UK/UN + 100+ lists |
screen_wallet(address) |
✅ | /v1/verdict/wallet |
OFAC SDN crypto-wallet match |
kyb(name) |
✅ | /v1/verdict/kyb |
KYB-360 dossier |
verdict(name) |
— | /v1/verdict/check |
PASS / WARN / BLOCK |
risk(name) |
— | /v1/risk/entity-score |
risk score 0-100 |
screen_oig_exclusion(name) |
— | /v1/screen/oig-exclusion |
HHS-OIG LEIE healthcare-exclusion screen |
screen_fuzzy_name(name) |
— | /v1/screen/fuzzy-name |
fuzzy OFAC SDN match (alias/transliteration) |
lookup_gleif_ownership(lei) |
— | /v1/lookup/gleif-ownership |
GLEIF corporate-ownership tree (UBO) |
lookup_gleif_entity(name) |
— | /v1/lookup/gleif-entity |
company name → LEI resolver |
lookup_sec_filings(ticker_or_cik) |
✅ | /v1/lookup/sec-filings |
SEC EDGAR recent-filings feed |
lookup_fda_ndc(ndc_or_name) |
— | /v1/lookup/fda-ndc |
FDA NDC drug-directory lookup |
verify_lei(lei) |
— | /v1/verify/lei |
ISO 17442 checksum + GLEIF legal-entity record |
verify_ein(ein) |
— | /v1/verify/ein |
US EIN format + IRS issuing campus |
verify_abn(abn) |
— | /v1/verify/abn |
Australian ABN (ATO modulus-89) |
verify_latam_taxid(country, tax_id) |
— | /v1/verify/latam-taxid |
MX RFC / AR CUIT / PE RUC / CO NIT / CL RUT |
verify_bic(bic) |
— | /v1/verify/bic |
SWIFT/BIC (ISO 9362) + GLEIF legal entity |
verify_gstin(gstin) |
— | /v1/verify/gstin |
India GSTIN (mod-36) + state / embedded PAN |
verify_pan(pan) |
— | /v1/verify/pan |
India PAN structure + holder type |
verify_gtin(gtin) |
— | /v1/verify/gtin |
GTIN/UPC/EAN (GS1 mod-10) + region |
verify_uk_vat(vat) |
— | /v1/verify/uk-vat |
UK VAT (HMRC modulus-97) |
verify_aba(routing_number) |
— | /v1/verify/aba |
US bank routing / ABA / MICR (Fed mod-10) + district |
verify_cnpj(cnpj) |
— | /v1/verify/cnpj |
Brazil CNPJ checksum + Receita Federal lookup |
verify_cnpj_alpha(cnpj) |
— | /v1/verify/cnpj-alpha |
Brazil CNPJ incl. 2026 alphanumeric format |
verify_isin(isin) |
— | /v1/verify/isin |
ISIN (ISO 6166) + security resolve |
verify_cusip(cusip) |
— | /v1/verify/cusip |
CUSIP (North-American securities) |
verify_sedol(sedol) |
— | /v1/verify/sedol |
SEDOL (UK/Ireland securities) |
verify_duns(duns) |
— | /v1/verify/duns |
D&B D-U-N-S number format |
verify_cage(code) |
— | /v1/verify/cage |
US CAGE / NATO NCAGE code |
verify_eori(eori) |
— | /v1/verify/eori |
EU/UK EORI (customs / trade) |
verify_gln(gln) |
— | /v1/verify/gln |
GS1 GLN (mod-10) + region |
verify_phone(phone) |
— | /v1/verify/phone |
phone number (ITU-T E.164) |
verify_imei(imei) |
— | /v1/verify/imei |
IMEI (GSMA Luhn) + TAC decode |
verify_issn(issn) |
— | /v1/verify/issn |
ISSN (ISO 3297, mod-11) |
verify_media_type(media_type) |
— | /v1/verify/media-type |
IANA media type / MIME (RFC 6838) |
verify(kind, value, country=…) |
— | dispatcher | any of the 23 validators by kind |
All methods return parsed JSON (dict). Errors raise ComplianceError with a clear message (402 → how to get a key, 429 → demo quota reached).
Get a free key (2 minutes)
The screen, screen_wallet, kyb, screening_report, wallet_report and batch_screen
methods work with no key (rate-limited demo). To unlock full coverage and all 23
validators, grab a gck_ key:
- Go to https://api.gocreativeai.com/start — the guided key wizard.
- Buy credits with a card (instant) at https://api.gocreativeai.com/credits/buy, or pay per call in USDC via x402 with no key at all.
Client(api_key="gck_...")— done.
Why this vs the incumbents
Same OpenSanctions data the serious vendors use, but keyless and pay-per-call — a fraction of the cost of Dataspike, ComplyAdvantage, or enterprise contracts, and it adds crypto-wallet OFAC screening most don't. See the comparisons: vs Dataspike · vs sanctions.io · vs ComplyAdvantage.
Disclaimer
Screening results draw on public watchlist + sanctions data and are provided for compliance-screening support. Verify matches before acting; absence of a match is not a guarantee of clearance. Not legal advice.
License
MIT © GoCreative · Product page · Docs
Metadata
Release files for ofac-sanctions-screening 0.7.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| ofac_sanctions_screening-0.7.1.tar.gz | 19.9 kB | Without provenance | Details for ofac_sanctions_screening-0.7.1.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| ofac_sanctions_screening-0.7.1-py3-none-any.whl | Python 3 | none | any | Details for ofac_sanctions_screening-0.7.1-py3-none-any.whl |
Total release size: 36.7 kB
Release files / ofac_sanctions_screening-0.7.1.tar.gz
| Download URL | ofac_sanctions_screening-0.7.1.tar.gz |
|---|---|
| Size | 19.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
07cd251836fe411c6fa0edb6299093829bad6981de3628f338b0d59a6f81bff2
|
|
BLAKE2b-256 checksum How to use checksums |
b135fdeec7ed1c306a3b7fcd714c31ace1479be0e3e5e01201b6fd7ffc4b5cb5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.9.6
|
Release files / ofac_sanctions_screening-0.7.1-py3-none-any.whl
| Download URL | ofac_sanctions_screening-0.7.1-py3-none-any.whl |
|---|---|
| Size | 16.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
c0c4901774c23bcb107e363bda3f408f34457a439dae20edad3edf733304f003
|
|
BLAKE2b-256 checksum How to use checksums |
c1187fd8e03e9493bb2ff5ab54f4a108f2687c594b8047558d276adc831fd427
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.9.6
|
Security for ofac-sanctions-screening 0.7.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.