check-crypto-address-balance
Check cryptocurrency wallet balances across multiple blockchains using free public APIs.
git clone --depth 1 https://github.com/besoeasy/open-skills /tmp/check-crypto-address-balance && cp -r /tmp/check-crypto-address-balance/skills/check-crypto-address-balance ~/.claude/skills/check-crypto-address-balanceSKILL.md
# Check Crypto Address Balance Skill
Query cryptocurrency address balances across multiple blockchains using free public APIs. Supports Bitcoin, Ethereum, BSC, Solana, Litecoin, and other major chains without requiring API keys for basic queries.
## Supported chains & best free APIs
| Chain | API | Base URL | Rate limit | Notes |
|-------|-----|----------|------------|-------|
| **Bitcoin (BTC)** | Blockchain.info | `https://blockchain.info` | ~1 req/10s | Most reliable, no key needed |
| **Bitcoin (BTC)** | Blockstream | `https://blockstream.info/api` | Generous | Esplora API, open-source |
| **Ethereum (ETH)** | Etherscan | `https://api.etherscan.io/api` | 5 req/sec (free) | Optional key for higher limits |
| **Ethereum (ETH)** | Blockchair | `https://api.blockchair.com` | 30 req/min | Multi-chain support |
| **BSC (BNB)** | BscScan | `https://api.bscscan.com/api` | 5 req/sec (free) | Same API as Etherscan |
| **Solana (SOL)** | Public RPC | `https://api.mainnet-beta.solana.com` | Varies by node | Free public nodes |
| **Solana (SOL)** | Solscan API | `https://public-api.solscan.io` | 10 req/sec | No key for basic queries |
| **Litecoin (LTC)** | BlockCypher | `https://api.blockcypher.com/v1/ltc/main` | 200 req/hr | Multi-chain API |
| **Litecoin (LTC)** | Chain.so | `https://chain.so/api/v2` | Generous | Simple JSON responses |
| **Multi-chain** | Blockchair | `https://api.blockchair.com` | 30 req/min | BTC, ETH, LTC, DOGE, BCH |
## Skills
### Bitcoin (BTC) balance
```bash
# Using Blockchain.info (satoshis, convert to BTC by dividing by 100000000)
curl -s "https://blockchain.info/q/addressbalance/1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa"
# Using Blockstream (satoshis)
curl -s "https://blockstream.info/api/address/1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa" | jq '.chain_stats.funded_txo_sum - .chain_stats.spent_txo_sum'
```
**Node.js:**
```javascript
async function getBTCBalance(address) {
const res = await fetch(`https://blockchain.info/q/addressbalance/${address}`);
const satoshis = await res.text();
return parseFloat(satoshis) / 1e8; // convert satoshis to BTC
}
```
### Ethereum (ETH) balance
```bash
# Using Etherscan (no API key required for single queries, returns wei)
curl -s "https://api.etherscan.io/api?module=account&action=balance&address=0xde0b295669a9fd93d5f28d9ec85e40f4cb697bae&tag=latest" | jq -r '.result'
# Using Blockchair (returns balance in wei with additional metadata)
curl -s "https://api.blockchair.com/ethereum/dashboards/address/0xde0b295669a9fd93d5f28d9ec85e40f4cb697bae" | jq '.data[].address.balance'
```
**Node.js:**
```javascript
async function getETHBalance(address) {
const url = `https://api.etherscan.io/api?module=account&action=balance&address=${address}&tag=latest`;
const res = await fetch(url);
const data = await res.json();
return parseFloat(data.result) / 1e18; // convert wei to ETH
}
```
### BSC (BNB Smart Chain) balance
```bash
# Using BscScan (same API as Etherscan)
curl -s "https://api.bscscan.com/api?module=account&action=balance&address=0x8894E0a0c962CB723c1976a4421c95949bE2D4E3&tag=latest" | jq -r '.result'
```
**Node.js:**
```javascript
async function getBSCBalance(address) {
const url = `https://api.bscscan.com/api?module=account&action=balance&address=${address}&tag=latest`;
const res = await fetch(url);
const data = await res.json();
return parseFloat(data.result) / 1e18; // convert wei to BNB
}
```
### Solana (SOL) balance
```bash
# Using public RPC (balance in lamports, 1 SOL = 1e9 lamports)
curl -s https://api.mainnet-beta.solana.com -X POST -H "Content-Type: application/json" -d '
{
"jsonrpc": "2.0",
"id": 1,
"method": "getBalance",
"params": ["vines1vzrYbzLMRdu58ou5XTby4qAqVRLmqo36NKPTg"]
}' | jq '.result.value'
# Using Solscan API (returns SOL directly)
curl -s "https://public-api.solscan.io/account/vines1vzrYbzLMRdu58ou5XTby4qAqVRLmqo36NKPTg" | jq '.lamports'
```
**Node.js:**
```javascript
async function getSOLBalance(address) {
const res = await fetch('https://api.mainnet-beta.solana.com', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
jsonrpc: '2.0',
id: 1,
method: 'getBalance',
params: [address]
})
});
const data = await res.json();
return data.result.value / 1e9; // convert lamports to SOL
}
```
### Litecoin (LTC) balance
```bash
# Using Chain.so (returns LTC directly)
curl -s "https://chain.so/api/v2/get_address_balance/LTC/LTC_ADDRESS/6" | jq -r '.data.confirmed_balance'
# Using BlockCypher (returns satoshis)
curl -s "https://api.blockcypher.com/v1/ltc/main/addrs/LTC_ADDRESS/balance" | jq '.balance'
```
**Node.js:**
```javascript
async function getLTCBalance(address) {
const res = await fetch(`https://chain.so/api/v2/get_address_balance/LTC/${address}/6`);
const data = await res.json();
return parseFloat(data.data.confirmed_balance);
}
```
### Multi-chain helper (Node.js)
```javascript
const APIS = {
BTC: (addr) => `https://blockchain.info/q/addressbalance/${addr}`,
ETH: (addr) => `https://api.etherscan.io/api?module=account&action=balance&address=${addr}&tag=latest`,
BSC: (addr) => `https://api.bscscan.com/api?module=account&action=balance&address=${addr}&tag=latest`,
LTC: (addr) => `https://chain.so/api/v2/get_address_balance/LTC/${addr}/6`
};
const DIVISORS = { BTC: 1e8, ETH: 1e18, BSC: 1e18, LTC: 1 };
async function getBalance(chain, address) {
if (chain === 'SOL') {
const res = await fetch('https://api.mainnet-beta.solana.com', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
jsonrpc: '2.0', id: 1, method: 'getBalance', params: [address]
})
});
const data = await res.json();
return data.result.value / 1e9;
}
const url = APIS[chain](address);
const res = await fetch(url);
if (chain === 'BTC') {
const satoshis = await res.text();
return parseFloat(satoshis) / DIVISORS[chain];Encrypt and decrypt files or streams using age — a simple, modern, and secure encryption tool with small explicit keys, passphrase support, SSH key support, post-quantum hybrid keys, and UNIX-style composability. No config options, no footguns.
Upload and host files anonymously using decentralized storage with Originless and IPFS.
Automate web browsers for AI agents using agent-browser CLI with deterministic element selection.
Star all repositories from a GitHub user automatically. Use when: (1) Supporting open source creators, (2) Bulk discovery of useful projects, or (3) Automating GitHub engagement.
Automatically creates user-facing changelogs from git commits by analyzing commit history, categorizing changes, and transforming technical commits into clear, customer-friendly release notes. Turns hours of manual changelog writing into minutes of automated generation.
Log all chat messages to a SQLite database for searchable history and audit. Use when: (1) Building chat history, (2) Auditing conversations, (3) Searching past messages, or (4) User asks to log chats.
Calculate line-of-sight and road distances between two cities using free OpenStreetMap services.
Research and create modern, animated tourism websites for cities with historical facts, places to visit, and colorful designs.