Which issuer contracts list one address
Check this address in TraceFast →
Some token contracts keep an on-chain blacklist: an admin function adds an address, after which it can no longer move that token. This method answers, for one address, which of those contracts have ever listed it — whether each still does, when it happened and how often — and, separately, which ones have gone further and destroyed or frozen its funds.
GET https://tracefast.xyz/api/v1/chains/1/risk/blacklists/{address}
| Parameter | In | Type | Notes |
|---|---|---|---|
address | path | string | 0x-prefixed, 40 hex characters, any case |
Access — an API key on the Investigation plan or higher (plans), or no key at all: pay per call with x402 at the same path on https://mpp.tracefast.xyz/api/v1, at the price its 402 states. As a tool for AI agents: get_blacklist_status on the MCP server. Stable — see stability.
chains/1 is a literal: the method serves Ethereum mainnet data. Other chain
ids answer 404 chain_not_supported. The method takes no query parameters — an
unknown one, limit included, is refused rather than ignored.
What it covers, and what it does not
- On-chain facts only. Every row is built from events the issuer contracts themselves emitted — list, unlist, destroy or freeze. No external sanctions list is consulted, and the answer is not a legal or sanctions determination.
- No single verdict. There is deliberately no
blacklisted: true. A listing is one issuer's decision about its own token;authorityTiersays how much weight that issuer carries, and you decide what the combination means. - Most blacklisting contracts are not recognized issuers. Any token can ship
a blacklist function. A listing by an
arbitrary_tokenis that token's own decision and says nothing beyond it. - Membership and enforcement are separate facts. An enforcement neither lists nor unlists; an address can be listed without ever being enforced against, and the two lists are answered independently.
- Identity-blind. Issuers are named by contract address and, where the contract declares one, its token symbol — never by an organisation name.
meta.asOfBlockis the reach of the blacklist history — the last block the blacklist history covers. It trails the chain tip by design, so an event after that block is not in the answer yet. The method carries nometa.coverage.- Empty lists are an answer — no issuer recorded anything about the address
up to
meta.asOfBlock.
Response
200 application/json:
{
"data": {
"chainId": 1,
"address": "0x8f882eb5e9a17220a21ec14e09b2fcf7b75d204d",
"listedBy": [
{
"issuerContract": "0xdac17f958d2ee523a2206206994597c13d831ec7",
"tokenSymbol": "USDT",
"authorityTier": "recognized_issuer",
"listed": true,
"firstListedBlock": 24184326,
"lastAction": "add",
"lastEventBlock": 25890354,
"lastEventTimestamp": 1788361103,
"lastEventTxHash": "0xb6dd8173fc2a6bd34ca35752e8ec5431f6fc67c3724868cfef362b2bc5e07733",
"lastEventName": "DestroyedBlackFunds",
"lastEventKind": "enforcement",
"listCount": 1,
"unlistCount": 0
}
],
"enforcement": [
{
"issuerContract": "0xdac17f958d2ee523a2206206994597c13d831ec7",
"tokenSymbol": "USDT",
"authorityTier": "recognized_issuer",
"count": 1,
"last": {
"blockNumber": 25890354,
"timestamp": 1788361103,
"txHash": "0xb6dd8173fc2a6bd34ca35752e8ec5431f6fc67c3724868cfef362b2bc5e07733",
"eventName": "DestroyedBlackFunds"
}
}
]
},
"meta": {
"chain": "ethereum",
"timestamp": 1789063641420,
"cached": true,
"asOfBlock": 25924174,
"docs": "https://docs.tracefast.xyz/api/risk-blacklist-status"
}
}Here USDT listed the address at block 24184326 and, later, destroyed its funds
— so the listing row's latest event is the enforcement, while lastAction
still reports the last membership change.
data
| Field | Meaning |
|---|---|
chainId | 1 |
address | the address asked about, lowercase |
listedBy[] | every issuer contract that ever listed the address, one row each, currently listed or not. Empty when none ever did |
enforcement[] | every issuer that destroyed or froze the address's funds, one row each. Empty when none did |
A listedBy row
| Field | Meaning |
|---|---|
issuerContract | the contract that keeps the list, lowercase — usually a token contract with a freeze or blacklist function |
tokenSymbol | the issuer's token symbol, when it is a token contract that declares one; absent otherwise. Declared by the contract, not verified |
authorityTier | recognized_issuer — a curated stablecoin or asset issuer; arbitrary_token — any other token contract that emits blacklist events; unknown — a contract nothing further is known about |
listed | true while the issuer's list holds the address now; false after the issuer removed it |
firstListedBlock | the block the issuer first listed the address; absent when it cannot be stated |
lastAction | the issuer's latest membership change: add or remove |
lastEventBlock, lastEventTimestamp, lastEventTxHash | the issuer's most recent event about the address of any kind — block, Unix seconds, transaction |
lastEventName | that event's name as the contract declares it: AddedBlackList, Blacklisted, DestroyedBlackFunds, … Issuers name the same action differently |
lastEventKind | membership or enforcement — what that latest event was |
listCount, unlistCount | how many times the issuer listed the address, and removed it again |
An enforcement row
| Field | Meaning |
|---|---|
issuerContract, tokenSymbol, authorityTier | as on listedBy |
count | how many enforcement events the issuer recorded against the address |
last | the most recent enforcement — blockNumber, timestamp, txHash, eventName (DestroyedBlackFunds, FundsFrozen, …). Present only when it is also the issuer's most recent event about the address of any kind; every enforcement is listed by blacklist events |
Errors
| Status | code | When | details |
|---|---|---|---|
| 400 | bad_request | a malformed address, or any query parameter — the method takes none | reason: address_invalid or unknown_parameter |
| 503 | service_unavailable | the reach of the blacklist history could not be read, so an empty answer could not be told from a gap. Retry with backoff | — |
Malformed input, unknown parameters and the key check's 401/403/429 are the same for every method — see conventions and API keys.
Related pages
- Blacklist events about one address — every listing, removal and enforcement, one by one
- Blacklisted — the same facts across all issuers, read in the app
- One address — the address as the chain sees it
- Attributes of an address — what the address is
Last updated 22 Oct 2026, 08:06 UTC · verified against TraceFast v1.0.261 · Markdown