OFAC sanctions screening API for crypto addresses and names

One call screens a crypto address on any chain, and/or a person or company name, against the official US Treasury OFAC SDN and Consolidated lists. Returns clear, match or possible_match with the matched entries and the list date.

An agent that sends USDC, lists a token or onboards a counterparty should check first that the other side is not on a US sanctions list. GET /compliance/sanctions-screen does that in one call for $0.01. You can send a crypto address, a name, or both.

What it checks

Example

GET /compliance/sanctions-screen?address=0xdcbEfFBECcE100cCE9E4b153C4e15cB885643193

Trimmed real response on Nov 11, 2026 (this address is listed on Roman Semenov's SDN entry):

{
  "result": "match",
  "summary": "Address is on the OFAC list: Roman SEMENOV (SDN; DPRK3)",
  "addressScreen": { "matched": true, "assets": ["ETH"],
    "matches": [{ "list": "SDN", "uid": 44718, "name": "Roman SEMENOV",
      "type": "Individual", "programs": ["DPRK3"] }] },
  "lists": { "sdnPublishDate": "2026-11-09", "digitalCurrencyAddresses": 1064 },
  "disclaimer": "Informational screen of OFAC's public SDN and Consolidated lists only. Not legal or compliance advice..."
}

A name check works the same way: ?name=Lazarus%20Group. Send both address and name to screen a counterparty in one call.

Pay per call on Base or Solana

An unpaid request returns HTTP 402 offering USDC on Base and on Solana. If the input is bad (no address or name, or a malformed address), you get a 400 before any payment, so you are never charged for it. The route is also a tool called sanctions_screen on the remote MCP server.

What it does not do

This is an informational screen of OFAC's public lists. It is not legal or compliance advice, and it is not a certified BSA/AML or KYC product. It is not endorsed by OFAC or the US Treasury. A clear result does not give you legal clearance. It does not cover entities that sanctioned parties own or control, other countries' lists, or funds that passed through other wallets. A name match may be a different person with the same name. Confirm any hit at ofac.treasury.gov before you act.

Try it free

Get a free API key (100 calls a month, no card), then pass it in the x-api-key header. This route uses 1 call of the monthly quota.

curl -X POST https://signals.incomefather.com/billing/free \
  -H 'content-type: application/json' -d '{"email":"you@example.com"}'

curl -H "x-api-key: $TRADING_SIGNALS_API_KEY" \
  "https://signals.incomefather.com/compliance/sanctions-screen?address=0xdcbEfFBECcE100cCE9E4b153C4e15cB885643193"

Agents that hold a wallet can skip the key entirely and pay per call over x402 (see x402 pay-per-call market data). Copy-paste code for curl, JavaScript, Python, MCP (Claude Desktop, Cursor, Cline), LangChain and the OpenAI Agents SDK is in gdietsch/trading-signals-examples.

More guides