Every Zerion v1 wallet endpoint, mapped to its GoldRush equivalent.
Zerion API is a wallet and portfolio API across 40+ EVM chains and Solana, returning JSON:API payloads. GoldRush is a decoded multichain data API across 100+ chains including Bitcoin, returning a flat data.items[] envelope. Most Zerion wallet reads have a direct GoldRush equivalent; DeFi protocol positions, one-call PnL, and transaction webhooks do not. This page maps all of it, including the parts where you should stay on Zerion.
Reviewed 2026-09-11. Endpoint paths read from developers.zerion.io, goldrush.dev. Verify against Zerion API docs before relying on a row.
These are the cross-cutting differences. Miss one and every call fails the same way, so fix them first.
| Zerion API | GoldRush | |
|---|---|---|
| Base URL | https://api.zerion.io | https://api.covalenthq.com |
| Auth | HTTP Basic — API key as username, empty password: Authorization: Basic base64(KEY + ':') | Authorization: Bearer <GOLDRUSH_API_KEY> |
| Chain addressing | All chains by default; narrow with filter[chain_ids]=ethereum,base. Chain per row under relationships.chain.data.id. | Chain is a path segment: eth-mainnet, base-mainnet, matic-mainnet. Use the /v1/allchains/* endpoints for cross-chain reads in one call. |
| Response envelope | JSON:API — payload under data[].attributes, related entities under data[].relationships. Errors via HTTP status. | Flat envelope — { data: { items: [...] }, error, error_message, error_code }. Errors carry an HTTP status AND the error fields. |
| Token amounts | quantity.float (decimal), quantity.int (raw), quantity.numeric (decimal string) | balance is the raw integer string; contract_decimals is a sibling field. Divide yourself, or read the pre-computed quote for fiat value. |
| Pagination | Fully-formed next-page URL at links.next — fetch as-is. | Page number in the path: .../transactions_v3/page/{page}/. Page 0 is the OLDEST page, not the newest. |
Every Zerion API endpoint we could source, with its GoldRush equivalent. Rows marked No equivalent are gaps we are not going to paper over — read those first.
| Use case | Zerion API | GoldRush | Parity |
|---|---|---|---|
| Token balances GoldRush returns spot quote per token in the same response, so no second pricing call. | GET /v1/wallets/{address}/positions/?filter[positions]=only_simple | GET /v1/{chainName}/address/{walletAddress}/balances_v2/ | Direct equivalent |
| Multichain balances in one call Pass a comma-separated chains list to narrow, the same way filter[chain_ids] narrows Zerion. | GET /v1/wallets/{address}/positions/ (all chains by default) | GET /v1/allchains/address/{walletAddress}/balances/ | Direct equivalent |
| DeFi protocol positions No GoldRush equivalent. LP and receipt tokens appear in balances_v2 as tokens, but not decoded per protocol. Keep Zerion if this is load-bearing. | GET /v1/wallets/{address}/positions/?filter[positions]=only_complex | — | No equivalent |
| Net worth + 24h change Sum the quote field across items. Zerion returns the total pre-computed; GoldRush makes you add it up. | GET /v1/wallets/{address}/portfolio | GET /v1/allchains/address/{walletAddress}/balances/ | Needs work |
| Net worth over time GoldRush is per-chain; call per chain and sum for a multichain curve. | GET /v1/wallets/{address}/charts/{chart_period} | GET /v1/{chainName}/address/{walletAddress}/portfolio_v2/ | Needs work |
| Historical token balances GoldRush returns per-token balances as of a date, not just a portfolio total. | Derived from the wallet chart endpoint | GET /v1/{chainName}/address/{walletAddress}/historical_balances/ | GoldRush advantage |
| Transaction history Zerion gives a unified transfers[] with operation_type. GoldRush gives decoded log_events per transaction — lower level, more of it. | GET /v1/wallets/{address}/transactions/ | GET /v1/{chainName}/address/{walletAddress}/transactions_v3/page/{page}/ | Direct equivalent |
| Multichain transactions | GET /v1/wallets/{address}/transactions/ (all chains by default) | GET /v1/allchains/transactions/ | Direct equivalent |
| Single transaction by hash GoldRush looks a hash up directly. Zerion requires a wallet context plus a search filter. | GET /v1/wallets/{address}/transactions/?filter[search_query]=<hash> | GET /v1/{chainName}/transaction_v2/{txHash}/ | GoldRush advantage |
| Wallet PnL No single-call equivalent. Computable from transactions_v3 plus historical pricing, but that is your code. | GET /v1/wallets/{address}/pnl | — | No equivalent |
| NFTs held | GET /v1/wallets/{address}/nft-positions/ | GET /v1/{chainName}/address/{walletAddress}/balances_nft/ | Direct equivalent |
| NFTs by collection | GET /v1/wallets/{address}/nft-collections/ | GET /v1/{chainName}/address/{walletAddress}/collection/{collectionContract}/ | Direct equivalent |
| Token price by contract Same endpoint serves live and historical — pass from/to for a range. | GET /v1/fungibles/by-implementation?implementation={chain}:{address} | GET /v1/pricing/historical_by_addresses_v2/{chainName}/{quoteCurrency}/{contractAddress}/ | Direct equivalent |
| Token price chart Date range instead of a named period. | GET /v1/fungibles/{fungible_id}/charts/{chart_period} | GET /v1/pricing/historical_by_addresses_v2/{chainName}/{quoteCurrency}/{contractAddress}/ | Direct equivalent |
| Pool / DEX spot price | Not available | GET /v1/pricing/spot_prices/{chainName}/pools/{contractAddress}/ | GoldRush advantage |
| Chains a wallet has used One call, returns the chain list directly rather than deriving it from a portfolio breakdown. | Derive from positions_distribution_by_chain on /portfolio | GET /v1/address/{walletAddress}/activity/ | GoldRush advantage |
| Supported chain list Identical path. GoldRush adds /v1/chains/status/ for per-chain sync height and freshness. | GET /v1/chains/ | GET /v1/chains/ | Direct equivalent |
| Token approvals / risk | Not available | GET /v1/{chainName}/approvals/{walletAddress}/ | GoldRush advantage |
| Real-time updates No webhook product. You poll transactions_v3 or allchains/transactions. | GET/POST /v1/tx-subscriptions/ (webhooks) | — | No equivalent |
| Swap / bridge quotes GoldRush is a data API and does not quote swaps. | GET /v1/swap/quotes/ | — | No equivalent |
| Bitcoin balances Plus /hd_wallets/ for xpub-derived addresses and /historical_balances/. | Not available (EVM + Solana only) | GET /v1/btc-mainnet/address/{walletAddress}/balances_v2/ | GoldRush advantage |
| Contract log events Also by topic hash at /v1/{chainName}/events/topics/{topicHash}/. | Not available | GET /v1/{chainName}/events/address/{contractAddress}/ | GoldRush advantage |
| Token holders at a block | Not available | GET /v1/{chainName}/tokens/{tokenAddress}/token_holders_v2/ | GoldRush advantage |
Copy-pasteable. Left is what you have on Zerion API; right is the GoldRush replacement.
Replace HTTP Basic (key as username, empty password) with Authorization: Bearer <GOLDRUSH_API_KEY>. This is the change that breaks every call at once if you miss it.
Zerion uses plain lowercase names (ethereum, base). GoldRush uses suffixed slugs in the path (eth-mainnet, base-mainnet). Pull the authoritative list from GET /v1/chains/ rather than hardcoding a map.
Zerion returns all chains by default and narrows with filter[chain_ids]. In GoldRush, single-chain calls put the chain in the path; cross-chain calls use /v1/allchains/*. Decide per call site which one you want.
Replace JSON:API traversal (data[].attributes, data[].relationships) with the flat data.items[] envelope, and check the error and error_message fields in addition to the HTTP status.
Zerion's quantity.float is already decimal-adjusted. GoldRush returns balance as a raw integer string with contract_decimals alongside — divide before displaying, or read quote for the fiat value.
Swap links.next URL-following for page numbers in the path. Remember that page 0 is the oldest page on transactions_v3.
DeFi protocol positions, one-call PnL, and transaction webhooks have no GoldRush equivalent. Either drop the feature, compute it from primitives, or keep Zerion alongside GoldRush for those specific reads.
Run both APIs against the same address and diff token counts and USD totals before cutting traffic over. Expect small differences from spam-token filtering policy.
If any of these is load-bearing for your product, do not migrate that surface. Running both providers is a legitimate answer.
There is no GoldRush endpoint that returns staking, lending, or LP positions decoded per protocol. balances_v2 returns LP and receipt tokens as token balances, so the value is visible, but the protocol-level breakdown is not. This is a real gap, not a naming difference.
GoldRush has no one-shot realized/unrealized PnL endpoint. You can compute it from transactions_v3 plus historical pricing, but that is your code to write, not a field to read. If PnL is the product, budget for it.
GoldRush is request/response. There is no subscription endpoint that pushes transactions to a callback URL, so any real-time path becomes polling on your side.
Live chain list at /v1/chains/ and per-chain sync state at /v1/chains/status/. Bitcoin is first-class with its own balances, historical balances, and HD-wallet endpoints — most wallet APIs are EVM-only or EVM+Solana.
An autonomous agent can pay per request from an onchain wallet without registering an account or holding a key. If you are building agents rather than a dashboard, this removes the credential provisioning step entirely.
GoldRush serves JSON-RPC across 30+ EVM chains, so a decoded-data provider and a node provider can collapse into one vendor and one bill.
Raw and decoded log events by contract or topic, token holder lists at a block height, and pool-level pricing. Wallet-portfolio APIs generally stop at the wallet boundary and cannot answer contract-level questions.
Free API key with 25,000 credits and no card, or skip signup entirely and pay per request with x402.
This page assumes you have decided to move. If you are still evaluating, the comparison covers pricing, coverage, and feature parity side by side.
GoldRush vs Zerion API