Ask ChatGPT Ask Claude

Crypto wallet scam check API

Bewary's wallet API tells you whether a crypto address is on our scam list, built from reported scams, or on a US sanctions list, before anyone sends money to it. It reads Bitcoin, Ethereum and any EVM address, Tron, Litecoin, Solana, Monero and Dash addresses. It is a list check, not blockchain analytics: it does not follow funds on chain. A call costs 1 credit, a free key gets 1,000 credits a month, no card, and it answers in median 127 ms.

Endpoint
GEThttps://api.bewary.app/v1/wallet/{chain}/{address}
Price
1 credit
Free key
1,000 credits a month, no card
Speed
Median 127 ms, measured
Returns
verdict, p_scam, entities with typed facts, reason codes
MCP tool
lookup_wallet

Try it

Free from this page: 10 lookups a day
GET/v1/wallet/{chain}/{address}
Recorded answer, October 31, 2026
Unknownp_scam0.2000
Entities
wallet0xde0b295669a9fd93d5f28d9ec85e40f4cb697baeUnknown

Call it

curl "https://api.bewary.app/v1/wallet/eth/0xde0B295669a9FD93d5F28D9Ec85E40f4cb697BAe"

Act on the result

Copy-paste code that turns the answer into a decision. It runs with or without BEWARY_API_KEY. TypeScript uses bewary.d.ts.

import os, requests

def wallet_listed(chain, address):
    key = os.environ["BEWARY_API_KEY"]          # a free key: bewary.app/account
    headers = {"Authorization": f"Bearer {key}"}
    r = requests.get(f"https://api.bewary.app/v1/wallet/{chain}/{address}", headers=headers, timeout=10)
    r.raise_for_status()
    return r.json()["entities"][0]["facts"]["listed"]

if wallet_listed("eth", "0xde0B295669a9FD93d5F28D9Ec85E40f4cb697BAe"):
    print("Do not send: this wallet is reported in scams")

Response

The fields you will use

entities[0].facts.listed
On Bewary's scam list.
entities[0].facts.sanctioned
On a US sanctions list (WALLET_SANCTIONED).
entities[0].facts.chain
btc, eth (any EVM address), trx, ltc, sol, xmr or dash, read from the address.
verdict
scam when listed, suspicious when only sanctioned, otherwise unknown.
{  "schema_version": "1.7.0",  "request_id": "req_01M69WJ0M1XHQ3CJBJ1QQ1WC78",  "checked_at": "2026-10-31T21:06:26Z",  "engine": "bewary-engine/3.0.0",  "models": {    "calibration": "interim-band-v0"  },  "input": {    "kind": "lookup",    "channel": "unknown",    "language": null,    "region": null  },  "verdict": "unknown",  "p_scam": 0.2,  "risk_score": 20,  "confidence": 0,  "classification": null,  "reason_codes": [],  "entities": [    {      "id": "e1",      "type": "wallet",      "value": "0xde0b295669a9fd93d5f28d9ec85e40f4cb697bae",      "normalized": "0xde0b295669a9fd93d5f28d9ec85e40f4cb697bae",      "role": "payee",      "verdict": "unknown",      "p_scam": 0.2,      "risk_score": 20,      "reason_codes": [],      "facts": {        "chain": "eth",        "caip2": null,        "listed": false,        "sanctioned": false,        "reports": null,        "list_count": null      },      "related": [],      "datasets": [        {          "dataset": "wallet_reports",          "coverage": "WW",          "in_coverage": true        },        {          "dataset": "sanctions",          "coverage": "WW",          "in_coverage": true        },        {          "dataset": "community_reports",          "coverage": "WW",          "in_coverage": true        }      ]    }  ],  "signals": [],  "degraded": false,  "degraded_reasons": [],  "cached": false,  "explanation": null}

Real responses, captured from the live API on 2026-10-31. Every response has this shape: see Response format.

Crypto wallet facts

Every key is in every response, null when unknown. A key marked Coming stays null until its source ships, so you can code against it now.

KeyTypeMeaning
chain btc | eth | trx | ltc | sol | xmr | dash or null The chain, read from the address format. eth is any EVM address.
listed boolean or null On Bewary's scam list.
sanctioned boolean or null On a US sanctions list.
caip2 string or null The CAIP-2 chain id where the chain is fixed.
list_count integer or null How many lists name it, ours and others'.
reportsComing integer or null How many reports name it.

Parameters

NameTypeDescription
chainpath, required string btc, eth (any EVM address), trx, ltc, sol, xmr or dash.
addresspath, required string The wallet address.

Questions

How do I check if a crypto address is linked to a scam?

GET /v1/wallet/{chain}/{address} with btc, eth (any EVM address), trx, ltc, sol, xmr or dash. facts.listed is true when the address is on Bewary's scam list.

Does it trace transactions or screen sanctions?

It screens the US sanctions list: facts.sanctioned is true and the answer carries WALLET_SANCTIONED for an address on it. It does not follow funds on chain.

Is an unlisted wallet safe?

No. Not listed means nobody reported it to us yet, so the verdict is unknown.

Used for

Reason codes it can return

CodeMeaningSeverity
LISTED_BLOCKLISTOn scam blocklistCritical
WALLET_LISTEDA wallet on a confirmed scam listCritical
WALLET_SANCTIONEDA wallet on a US sanctions listHigh
LISTED_CAUTIONOn a broad threat list that also holds spam and malware hostsMedium
PLATFORM_TAKEDOWNThe hosting platform took it downHigh
PLATFORM_WARNINGThe platform shows a phishing or malware warning in front of itHigh

Reserved codes are in the contract, not emitted yet. All reason codes

Updated · This page as Markdown · Changelog