You're building a wallet and need to display user balances on Ethereum, Polygon, Arbitrum, and Base in real time. Without a unified interface, you'd have to spin up four archive nodes, write ABI parsers for each protocol, and aggregate responses manually — weeks of work and ongoing infrastructure costs. We solve this with a single request via Covalent API: 200+ networks, normalized data with prices and decoded logs. Using our experience with GoldRush SDK cuts development time by 40%.
Why Covalent API beats direct RPC
Directly connecting to each network's RPC nodes requires separate infrastructure and maintenance. Covalent API accelerates integration 10x: a typical wallet on five networks takes 2–3 days to integrate instead of 2–3 weeks. Infrastructure costs drop to zero — no archive nodes needed, everything works through one API key. Development savings reach 40%, and infrastructure savings up to 100%.
How we integrate Covalent API in 3 days
A typical scenario: displaying token portfolios, transaction history, and NFTs. With Covalent, one SDK and a few requests do the job:
# Balances of all ERC-20 tokens at an address GET /v1/{chainId}/address/{walletAddress}/balances_v2/ # Transaction history GET /v1/{chainId}/address/{walletAddress}/transactions_v3/ # NFTs at an address GET /v1/{chainId}/address/{walletAddress}/balances_nft/ Each response already includes USD value, decimals-adjusted balances, token metadata, and human-readable decoded data for 50+ popular protocols (Uniswap, OpenSea, Aave, etc.).
Authentication and rate limits
The API key is passed via a Basic Auth header. Free tier: 4 requests per second, 100,000 requests per month. For production, use paid tiers with higher limits.
const client = new CovalentClient(process.env.COVALENT_API_KEY); const response = await client.BalanceService.getTokenBalancesForWalletAddress( "eth-mainnet", walletAddress, { nft: false, noNftFetch: true } ); GoldRush SDK is typed, handles pagination and retry logic automatically. We use it in 90% of our projects and guarantee stable operation even under high load. Our engineers have prepared reference implementations for typical scenarios — saving up to 30 hours per project.
Main endpoint groups
| Endpoint | What it returns | When to use |
|---|---|---|
| Balances API | Current and historical ERC-20, ERC-721, ERC-1155 balances with USD value | Portfolios, dashboards, wallet history |
| Transactions API | Full transaction history with decoded event logs | Analytics, reports, CRM integration |
| NFT API | Metadata, ownership history, floor price | Marketplaces, galleries, auctions |
| Cross-Chain Activity API | Activity summary across all networks in one request | Multi-chain scanner, risk scoring |
Balances API — current and historical ERC-20, ERC-721, ERC-1155 balances. Includes USD value at current or historical price. The historic_balance_interval parameter lets you get a balance time series without querying thousands of blocks yourself.
Transactions API — full transaction history with decoded event logs. The decode parameter enables human-readable decoding for Uniswap, Aave, OpenSea, and 50+ other protocols. Pagination is cursor-based, not offset-based — important for wallets with thousands of transactions.
NFT API — metadata, ownership history, floor price from Opensea/Blur. The getNftsForAddress endpoint returns corrected IPFS URLs with HTTP gateway fallback.
Cross-Chain Activity API — activity summary for an address across all networks in one request. Useful for multi-chain wallet scanner scenarios.
Practical integration nuances
Caching is mandatory: balance data changes at most once per block (~12 seconds for Ethereum). Cache responses in Redis with a 15–30 second TTL. Without caching, 100 concurrent users will quickly hit the rate limit.
Pagination: transaction history for long-lived wallets can contain thousands of pages. Implement lazy loading, don't load everything at once:
async function* getAllTransactions(chain: string, address: string) { let pageNumber = 0; while (true) { const resp = await client.TransactionService .getTransactionsForAddressV3(chain, address, pageNumber); yield resp.data.items; if (!resp.data.links?.next) break; pageNumber++; } } Error handling: Covalent returns HTTP 200 even on errors — check the error field in the response body. The error_message field is sometimes informative, sometimes not; log the full response on unexpected results.
Chain IDs: Covalent uses both numeric chain IDs (1 for Ethereum) and string identifiers ("eth-mainnet"). In the SDK, use the string format — less confusion when working with testnets.
Direct RPC vs Covalent API
| Criteria | Direct RPC | Covalent API |
|---|---|---|
| Number of supported networks | one at a time | 200+ |
| Integration time for a typical wallet | 2–3 weeks | 2–3 days (10x faster) |
| Infrastructure costs | archive node + maintenance | API key only |
| Event decoding | requires ABI | built-in for 50+ protocols |
| Asset prices | need external service | included |
Limitations to know
Covalent indexes historical data with a delay for new networks — don't expect real-time with sub-block latency. For real-time data (pending transactions, current DEX price), you need direct RPC.
Decoded data works only for whitelisted protocols. Custom or obscure contracts return raw logs — you'll need to do ABI decoding yourself with ethers.Interface.
Why use GoldRush SDK?
GoldRush SDK is the official TypeScript client from Covalent that handles typing, pagination, and retries. We use it in 90% of our projects and guarantee stable operation even under high load. Our engineers have prepared reference implementations for typical scenarios — saving up to 30 hours per project.
What's included in our work
- Integration documentation with endpoint descriptions and code examples.
- GoldRush SDK setup and service layer with caching and error handling.
- Testing on testnets and preparation for production.
- Post-deployment support: query optimization and edge case resolution.
Our process
- Requirement analysis: determine what data you need (balances, transactions, NFTs), select endpoints.
- Architecture design: integration schema, caching, pagination and error handling.
- Implementation: configure GoldRush SDK, write service layer, test on testnet.
- Deployment and monitoring: deploy, set up alerts, optimize queries.
Timelines: 1 to 3 weeks depending on complexity. Cost is calculated individually for your project.
Contact us for a consultation on your integration. Order a ready-made solution for multi-chain analytics and get post-launch support.
Source: Covalent Documentation







