Crypto Portfolio Valuator

Value a wallet's native and token holdings in USD. $0.02 per request.

What it does

Send a wallet address, an optional chain, and an optional list of ERC-20 token contract addresses to check. Get back the native balance plus each requested token's balance, live USD price, and USD value, with a running total.

Endpoint

MethodPOST
Path/valuate
Content-Typeapplication/json

Fields

fieldrequireddescription
addressyesThe wallet address to value
chainnoOne of ethereum (default), base, polygon, arbitrum, optimism, bnb
tokensnoArray of ERC-20 contract addresses to include, max 10

Example

curl -X POST https://crypto-portfolio-valuator.pdfextractapi.workers.dev/valuate \
  -H "Content-Type: application/json" \
  -d '{"address": "0x...", "tokens": ["0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"]}'

Example response

{
  "address": "0x...",
  "chain": "ethereum",
  "holdings": [
    { "type": "native", "symbol": "ETH", "token_address": null, "balance": "1.5", "usd_price": 3200, "usd_value": 4800 },
    { "type": "token", "symbol": "USDC", "token_address": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", "balance": "500", "usd_price": 1, "usd_value": 500 }
  ],
  "total_usd_value": 5300,
  "unpriced_holdings": 0
}

Errors

Errors return a non-200 status with { "error": { "code": "...", "message": "..." } }. Common codes: invalid_address, unknown_chain, invalid_tokens, too_many_tokens. A holding with no available live price returns usd_price: null and is excluded from the total, reflected in unpriced_holdings.

Payment

This endpoint is paid per-request via the x402 protocol (HTTP 402 + USDC). Unpaid requests receive a 402 response with payment instructions.

Try it in your browser