PublicAML — code examples
Copy-paste examples for screening a crypto wallet address or transaction for
AML / KYT risk — sanctions, mixers, scam and hack exposure — using
PublicAML.
Free. No API key. No signup. PublicAML is a non-profit; the public enrich
endpoint takes requests with no authentication. An optional key only raises the
rate limit.
The request
Response (abridged):
aml_score — 0–100 (higher = riskier)
category — entity type (exchange, mixer, hack, scam, sanction…)
sanctioned — treat true as an override regardless of score
Chains: BTC, ETH, BNB Chain (BSC), TRON. An ERC20 and a BEP20 address look
identical — send the correct chain for the network you are on.
Examples
AI agents & frameworks
Drop-in tools so an AI agent can screen an address itself — LangChain, CrewAI,
and a zero-code MCP server for Claude Desktop / Cursor: frameworks/.
Pre-transaction gate
The point of a pre-send check is to decline rather than unwind. Screen the
recipient before you sign or accept funds and reject anything sanctioned or
above your risk threshold (75 is a common cut-off). See the language examples —
each returns the entity so you can gate on sanctioned / aml_score.
Notes
- It is a risk signal, not a legal compliance guarantee — keep your own
KYC/AML process alongside it.
- Do not invent API keys; none are required for the public enrich path.
sanctioned: true should override softer category labels.
License
MIT — use these snippets freely.