Skip to content

Screen an Address

Screen a blockchain address for sanctions, threat intelligence, and entity attribution.

GET/v1/wallets/{address}/transfers?includeScreening=true

Or use the dedicated screening endpoint:

POST/v1/screen/address

Parameters

ParameterTypeDescription
address*stringBlockchain address to screen
chain*stringChain slug (e.g., ethereum, bitcoin)
modeoptionalstring = fastScreening mode: fast or full
includeLabelsoptionalboolean = trueInclude entity labels in response

Request (Fast Mode)

bash
curl -X POST https://api.cryptachain.com/v1/screen/address \
  -H 'X-API-Key: $CRYPTACHAIN_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{
    "address": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
    "chain": "ethereum",
    "mode": "fast"
  }'
typescript
const res = await fetch('https://api.cryptachain.com/v1/screen/address', {
  method: 'POST',
  headers: {
    'X-API-Key': process.env.CRYPTACHAIN_API_KEY!,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    address: '0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045',
    chain: 'ethereum',
    mode: 'fast',
  }),
});
const screening = await res.json();
python
res = requests.post(
    'https://api.cryptachain.com/v1/screen/address',
    json={
        'address': '0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045',
        'chain': 'ethereum',
        'mode': 'fast',
    },
    headers={'X-API-Key': os.environ['CRYPTACHAIN_API_KEY']}
)
screening = res.json()

Response (clean address)

Response 200 OK

json
{
  "address": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
  "chain": "ethereum",
  "risk_score": 5,
  "risk_level": "LOW",
  "sanctions_match": false,
  "sanctions_lists": [],
  "flags": [],
  "labels": [
    {
      "type": "entity",
      "name": "vitalik.eth",
      "category": "individual",
      "source": "ens"
    }
  ],
  "heuristics_status": "NOT_REQUESTED",
  "chain_indexing_status": "FULLY_INDEXED",
  "screened_at": "2026-04-04T14:30:00.123Z",
  "cache_hit": false
}

Response fields

FieldTypeDescription
risk_scoreinteger (0-100)Composite risk score
risk_levelstringLOW, MEDIUM, HIGH, or CRITICAL
sanctions_matchbooleantrue if address appears on any sanctions list
sanctions_listsstring[]Which lists matched (e.g., OFAC_SDN, EU_CONSOLIDATED)
flagsobject[]Risk flags with type, severity, and description
labelsobject[]Known entity labels (exchange, protocol, individual)
heuristics_statusstringNOT_REQUESTED, PENDING, COMPLETE, FAILED
heuristics_job_idstringJob ID for async heuristics (full mode only)
chain_indexing_statusstringFULLY_INDEXED, PARTIALLY_INDEXED, or EXPLORER_ONLY
screened_atstringISO 8601 timestamp of screening
cache_hitbooleanWhether result came from cache

Sanctions match example

For addresses on sanctions lists, the response includes details:

Response 200 OK

json
{
  "address": "0xd90e2f925DA726b50C4Ed8D0Fb90Ad053324F31b",
  "chain": "ethereum",
  "risk_score": 100,
  "risk_level": "CRITICAL",
  "sanctions_match": true,
  "sanctions_lists": ["OFAC_SDN"],
  "flags": [
    {
      "type": "SANCTIONS_HIT",
      "severity": "CRITICAL",
      "description": "Address appears on OFAC SDN list (Tornado Cash)",
      "list": "OFAC_SDN",
      "listed_date": "2022-08-08"
    }
  ],
  "labels": [
    {
      "type": "protocol",
      "name": "Tornado Cash",
      "category": "mixer",
      "source": "internal"
    }
  ]
}

Compliance obligation

A sanctions_match: true response means the address is on one or more government sanctions lists. You must not process transactions involving this address without legal review. This is informational — consult your compliance team.

CryptaChain API — built by CryptaCount Luxembourg S.a r.l.