Screen an Address
Screen a blockchain address for sanctions, threat intelligence, and entity attribution.
GET
/v1/wallets/{address}/transfers?includeScreening=trueOr use the dedicated screening endpoint:
POST
/v1/screen/addressParameters
| Parameter | Type | Description |
|---|---|---|
| address* | string | Blockchain address to screen |
| chain* | string | Chain slug (e.g., ethereum, bitcoin) |
| modeoptional | string = fast | Screening mode: fast or full |
| includeLabelsoptional | boolean = true | Include 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
| Field | Type | Description |
|---|---|---|
risk_score | integer (0-100) | Composite risk score |
risk_level | string | LOW, MEDIUM, HIGH, or CRITICAL |
sanctions_match | boolean | true if address appears on any sanctions list |
sanctions_lists | string[] | Which lists matched (e.g., OFAC_SDN, EU_CONSOLIDATED) |
flags | object[] | Risk flags with type, severity, and description |
labels | object[] | Known entity labels (exchange, protocol, individual) |
heuristics_status | string | NOT_REQUESTED, PENDING, COMPLETE, FAILED |
heuristics_job_id | string | Job ID for async heuristics (full mode only) |
chain_indexing_status | string | FULLY_INDEXED, PARTIALLY_INDEXED, or EXPLORER_ONLY |
screened_at | string | ISO 8601 timestamp of screening |
cache_hit | boolean | Whether 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.