Get screening in 5 minutes
Screen a crypto wallet address against OFAC, EU, UN, and UK sanctions lists with a single API call.
1Sign up and create an API key
- 1. Create an account — free, no credit card required.
- 2. Subscribe to a paid plan (Starter+) from the pricing page — API access requires a paid plan.
- 3. Go to Dashboard → API Keys and click Create key.
- 4. Copy the key. It is shown once — save it somewhere safe.
Keys starting with
sk_test_ are test keys. Keys starting with sk_live_ are live keys. Both work against the same data; test keys are flagged separately in usage logs.2Make your first request
Choose your preferred method — cURL, the Python SDK, or the Node.js SDK:
export SCREENING_API_KEY=sk_live_...cURL
curl https://screeningapi.io/api/v1/screen \
-H "Authorization: Bearer $SCREENING_API_KEY" \
-H "Content-Type: application/json" \
-d '{"address":"0x8589427373D6D84E98730D7795D8f6f8731FDA16","chain":"ethereum"}'Python SDK
pip install chainscreen
from chainscreen import Client
client = Client(api_key="sk_live_...")
result = client.screen("0x8589427373d6d84e98730d7795d8f6f8731fda16", "ethereum")
print(result.level, result.score) # CRITICAL 100Node.js SDK
npm install @chainscreen/sdk
import { Client } from '@chainscreen/sdk'
const client = new Client({ apiKey: 'sk_live_...' })
const result = await client.screen('0x8589427373d6d84e98730d7795d8f6f8731fda16', 'ethereum')
console.log(result.level, result.score) // CRITICAL 100The address above is the Tornado Cash router — an OFAC-sanctioned address, useful for testing. See Python SDK docs and Node.js SDK docs for full API.
3Read the response
{
"address": "0x8589427373d6d84e98730d7795d8f6f8731fda16",
"chain": "ethereum",
"score": 100,
"level": "CRITICAL",
"labels": [
{
"label": "sanctions",
"source": "OFAC_SDN",
"source_ref": "TORNADO_CASH",
"added_at": "2022-08-08T00:00:00.000Z"
}
],
"data_freshness": {
"OFAC_SDN": {
"last_updated": "2026-05-26T04:07:00.000Z",
"age_seconds": 127
}
},
"scoring_version": "v1.0",
"_disclaimer": "Screening results are informational only..."
}| Field | Meaning |
|---|---|
| level | CLEAN_NO_MATCH LOW MEDIUM HIGH CRITICAL — take action if HIGH or CRITICAL |
| score | 0–100 numeric risk score. Higher is riskier. |
| labels | Risk signals from each data source. Empty array means no match. |
| data_freshness | When each source was last successfully ingested. |
4Next steps
Full API reference →
Request/response schema, all fields
Authentication →
Key types, rotation, best practices
Rate limits →
Per-plan limits and backoff strategy
Risk scoring →
How scores are calculated
Onboarding guide →
Screen users at signup
Withdrawal guide →
Screen before processing
Python SDK →
pip install chainscreen
Node.js SDK →
npm install @chainscreen/sdk