NEW: Helius acquires Light Protocol
Wallet API (Beta)

Solana wallet data made easy

One REST API for getting Solana wallet balances, history, identity, and funding sources. No Solana JSON-RPC methods to memorize or lamport math required.

Hero Image
IDENTITY

Know who a wallet is

Resolve a Solana address or domain name to an identity. Supports 32,500+ labels and 21.5M+ tags.

GET /v1/wallet/{wallet}/identity
          
{ "address": "HXsKP7wrBWaQ8T2Vtjry3Nj3oUgwYcqq9vrHDM12G664", "type": "exchange", "name": "Binance 1", "category": "Centralized Exchange", "tags": ["Centralized Exchange"] }
  • Single lookup or batch up to 100 addresses
  • SNS and ANS custom TLDs resolve on mainnet
  • Supports labels for exchange addresses, protocol wallets, institutions, and flagged addresses
FUNDED BY

Trace who funded a wallet

The original funding source of a wallet: who sent the first SOL, how much, and when. Funder name and type come from the same identity system.

GET /v1/wallet/{wallet}/funded-by
          
{ "funder": "26MAyPNpK4At8LgRECMMbgiKQuJyg3oACtw1Q9FRyuba", "funderName": null, "funderType": null, "mint": "So11111111111111111111111111111111111111111", "symbol": "SOL", "amount": 0.09811972, "amountRaw": "98119720", "decimals": 9, "date": "2022-01-19T20:46:34.000Z", "signature": "5WX9C5kCQNULGGrSHJBR1WDFyetVyekbUpe1KQ45p3zEBe6jVgSsJuMqLWijjTDcnaAK2518ZriktRMCNycnsNAG", "timestamp": 1642625194, "slot": 116984883, "explorerUrl": "https://orbmarkets.io/tx/5WX9C5kCQNULGGrSHJBR1WDFyetVyekbUpe1KQ45p3zEBe6jVgSsJuMqLWijjTDcnaAK2518ZriktRMCNycnsNAG?tab=summary" }
  • Immediate funder address, amount, slot, and signature
  • Exchange, protocol, or unknown, labeled if we know it
  • Cache forever. A wallet's first funder never changes
HISTORY

Wallet activity, fully parsed

Transaction history with per-transaction balance changes in human-readable language.

GET /v1/wallet/{wallet}/history
          
{ "data": [ { "signature": "5wHu1qwD7Jsj3xqWjdSEJmYr3Q5f5RjXqjqQJ7jqEj7jqEj7jqEj7jqEj7jqEj7jqE", "timestamp": 1704067200, "slot": 250000000, "fee": 0.000005, "feePayer": "86xCnPeV69n6t3DnyGvkKobf9FdN2H9oiVDdaMpo2MMY", "error": null, "balanceChanges": [ { "mint": "So11111111111111111111111111111111111111111", "amount": -0.05, "decimals": 9 } ] } ], "pagination": { "hasMore": true, "nextCursor": "5wHu1qwD7Jsj3xqWjdSEJmYr3Q5f5RjXqjqQJ7jqEj7jqEj7jqEj7jqEj7jqEj7jqE" } }
  • Newest first, up to 100 transactions per page
  • tokenAccounts=balanceChanged for updates only
  • amount is already decimal-adjusted; no lamport math
HELIUS WALLETS-AS-A-SERVICE

Ship the wallet and data layer together

Add non-custodial embedded wallets to your app with sign in option support for passkeys, email, and existing wallets via helius-wallet-kit

Wallet API use cases

Wallet dashboards

Balances, USD values, and metadata in one REST call. No DAS stitching or lamport math

Portfolio trackers

Use history and balance-at to reconstruct holdings and compute PnLs over time

Payment processors

Log transactions and transfers with counterparty, amount, mint, and direction

Tax and accounting

Get human-readable history with per-transaction balance holdings and changes

Compliance and AML

Look up known exchanges, treasury wallets, see how wallets were funded

Explorers and analytics

Get tags for over 21 million wallets to add account labels in your app

HOW IT WORKS

One REST API, all Solana wallet data

getWalletBalances
const getWalletBalances = async (address) => {
  const url = `https://api.helius.xyz/v1/wallet/${address}/balances?api-key=YOUR_API_KEY`;

  const response = await fetch(url);
  if (!response.ok) {
    throw new Error(`HTTP error! status: ${response.status}`);
  }

  const data = await response.json();

  const solBalance = data.balances[0]; // SOL is always first when showNative=true
  console.log(`SOL Balance: ${solBalance.balance} SOL ($${solBalance.usdValue})`);
  console.log(`Page ${data.pagination.page} Total Value: $${data.totalUsdValue}`);
  console.log(`Token Count (this page): ${data.balances.length}`);

  // Display top holdings
  data.balances.slice(0, 5).forEach(token => {
    console.log(`${token.symbol}: ${token.balance} ($${token.usdValue || 'N/A'})`);
  });

  return data;
};

getWalletBalances("86xCnPeV69n6t3DnyGvkKobf9FdN2H9oiVDdaMpo2MMY");

1. Get an API key

Sign up, get your Helius API key, and pass the api-key on the query string or as an X-Api-Key header

2. Hit one REST path

GET /v1/wallet/{wallet}/balances, identity, history, or any other Wallet API endpoint

3. Drop it into your app

Amounts are decimal-adjusted, identities are labeled, and data is correctly formatted; no extra steps required

FAQs

Get answers to common questions. Need help or a custom plan? Contact our team.

experience the difference

Wallet data without the complexity

Skip raw Solana JSON-RPC methods, and start querying onchain wallet data in minutes