WalletOrigin Lookup API
Query any blockchain address to see whether it has been cryptographically bound to a verified company domain. Supports Ethereum, Solana, Bitcoin, Cosmos, Sui, and Aptos addresses. Perfect for wallets, explorers, exchanges, and compliance tools.
Only checking an address? Use the public checker without an account or API key, then open the domain proof page for DNS records and signatures.
Authentication
Every request needs an API key. Create one in your dashboard. Pass it in the Authorization header as a bearer token, or in the x-api-key header.
API quotas
Free: 100 lookups/day. Pro: 10,000/month. Business: 100,000/month. Quotas are shared across your account’s keys and reset by UTC calendar day or month. Public browser checks are free and separate. Only active public proofs are returned; your own key may also see your active unlisted domains. Compare plans.
/api/public/lookupLook up all verified domain bindings for a blockchain address across supported chains.
Query parameters
addressrequired · string · any supported chain formatThe blockchain address to look up. Accepts Ethereum, Solana, Bitcoin, Cosmos, Sui, and Aptos addresses. EVM addresses are case-insensitive; other address formats are case-sensitive in this keyed API.
chainoptional · string · enumOne of ethereum, solana, bitcoin, cosmos, sui, aptos. When provided, the address is validated against that chain and only proofs for that chain are returned — recommended, since some address formats (Sui/Aptos/EVM) look alike. When omitted, the chain is inferred from the address format. Always pass a chain for ambiguous formats. The top-level chain is inferred; each proof has its own chain.
Example request
curl "https://walletorigin.com/api/public/lookup?address=0xAbC1234567890abcdef1234567890abcdef123456&chain=ethereum" \
-H "Authorization: Bearer walletorigin_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"Response — verified
{
"address": "0xabc1234567890abcdef1234567890abcdef123456",
"chain": "ethereum",
"verified": true,
"proofs": [
{
"domain": "company.com",
"chain": "ethereum",
"verified_at": "2026-07-05T10:20:30.000Z"
}
]
}Response — no proof
{
"address": "0x0000000000000000000000000000000000000000",
"chain": "ethereum",
"verified": false,
"proofs": []
}Errors
| Status | Meaning |
|---|---|
| 400 | Invalid or missing address, unsupported chain, or address that doesn't match the given chain |
| 401 | Missing or invalid API key |
| 403 | API key scope does not permit lookups |
| 429 | Account lookup quota or request rate limit reached |
Supported blockchains & wallets
WalletOrigin verifies ownership by asking the user to sign a challenge with one of the supported wallets for each chain.
| Chain | Address format | Supported wallets / extensions |
|---|---|---|
| Ethereum / EVM | 0x + 40 hex chars | MetaMask, Rabby, Coinbase, Trust, Frame, Taho |
| Solana | Base58 | Phantom, Solflare, Backpack |
| Bitcoin | bc1… / 1… / 3… | Xverse, Unisat, Leather |
| Cosmos | bech32 (e.g. cosmos1…) | Keplr, Leap |
| Sui | 0x + 64 hex chars | Suiet, Sui Wallet |
| Aptos | 0x + 64 hex chars | Petra, Martian |