- DeFi positions and PnL: GoldRush returns token balances and raw transactions but no DeFi protocol positions (staking, lending, LPs) and no wallet PnL. Zerion returns both, from
/positions/and/pnl. - One address, all chains: GoldRush’s core endpoints take a
chainNamein the path, one chain per call. Zerion returns every supported chain for an address in one call, filterable withfilter[chain_ids]. - Decoded, not raw: GoldRush transactions return
log_events[]you interpret yourself. Zerion returns a decodedoperation_typeand a unifiedtransfers[]array with token metadata and USD values inlined. - Decimal-adjusted amounts: GoldRush balances are raw integer strings you divide by
10^contract_decimals. Zerion returnsquantity.floatalongside the raw value.
Endpoint parity
A note on chains
The biggest structural change is how you address chains:- GoldRush: the chain is a path segment (
eth-mainnet,matic-mainnet,base-mainnet), one chain per call, with separateallchainsendpoints for cross-chain reads. - Zerion:
GET /v1/wallets/{address}/...returns every supported chain for the address by default, narrowed withfilter[chain_ids]=ethereum,base. Chain IDs are plain lowercase names without the-mainnetsuffix (ethereum,polygon,base,solana); see the full list.
eth-mainnet, matic-mainnet, base-mainnet becomes a single Zerion call, with the chain of each row in relationships.chain.data.id.
Token balances
GoldRush’sbalances_v2 returns one item per token with balance (a raw integer string you divide by 10^contract_decimals) and precomputed quote_rate / quote. Zerion returns a JSON:API collection covering all chains at once, with attributes.fungible_info for metadata, attributes.quantity.float for the decimal-adjusted amount, and attributes.value for the USD value. The same endpoint accepts both EVM and Solana addresses.
Field mapping
price and value are null for tokens without a reliable price. Guard for null before summing or formatting.Net worth
GoldRush has no net-worth endpoint; you sumquote across balance items, chain by chain. Zerion’s /portfolio returns the total, the 24h change, a breakdown by chain, and a breakdown by position type (wallet, deposited, borrowed, locked, staked) in one response.
/v1/address/{address}/activity/) for the common “which chains does this wallet use” case: any chain with a non-zero entry in positions_distribution_by_chain is in use.
Net worth over time
GoldRush’sportfolio_v2 returns per-token holdings over time, one chain per call, with OHLC buckets per day. Zerion’s /charts/{period} returns the wallet’s total value timeseries across all chains in one call, for periods from hour to max (full history).
cURL
GoldRush’s series is per token; Zerion’s is the wallet total (scopeable by chain and by fungible via filters). For a single asset’s price history, use the fungible chart.
Transactions
GoldRush’stransactions_v3 returns raw transactions with log_events[] (decoded event logs you interpret yourself) and native-value fields. Zerion’s /transactions/ returns enriched, human-readable transactions with a single decoded operation_type, a unified transfers[] array with token metadata and USD values inlined, fees, and the dApp when Zerion recognizes it. The same endpoint accepts both EVM and Solana addresses.
Field mapping
Filter mapping
DeFi positions
GoldRush has no DeFi positions product; reconstructing staking, lending, or LP exposure means decoding protocol events yourself. On Zerion, they’re one call: each position is a row under/positions/?filter[positions]=only_complex, tagged with protocol, protocol_module (lending, staked, liquidity_pool, locked, rewards, vesting, and so on), and position_type (including loan for borrowed assets).
relationships.dapp.data.id to reconstruct protocols, and by group_id to reconstruct LP pairs. Wallet-level totals per type (deposited, borrowed, staked, locked) are in /portfolio → positions_distribution_by_type.
Wallet PnL
GoldRush has no wallet PnL endpoint. Zerion’s/pnl returns wallet-level PnL computed with FIFO: realized and unrealized gain, net invested, total fees, and external in/out flows. Scope it per token with filter[fungible_ids], per chain with filter[chain_ids], or per time window with since / till.
Token prices
GoldRush’s pricing endpoint returns a daily price series per contract address, with the quote currency in the path. Zerion splits this into two calls:/fungibles/by-implementation for the live price with full asset metadata, and the fungible chart for a timeseries.
Field mapping
NFTs
GoldRush’sbalances_nft returns NFT holdings with tokenURI-derived external_data, one chain per call. The Zerion equivalent is /v1/wallets/{address}/nft-positions/, which returns each holding with collection metadata and floor-price-based valuation across chains.
cURL
Pagination
Replace GoldRush’s page-number paths andbefore/after cursors with Zerion’s links.next URL. Each Zerion response includes a fully-formed next-page link you can fetch as-is.
Realtime updates
GoldRush’s realtime offering centers on pipeline delivery of decoded chain data into your own infrastructure. If what you actually need is “tell me when this wallet transacts”, Zerion offers transaction webhooks: subscribe a callback URL to one or more wallets and receive a POST when any of them transact. See the wallet activity alerts recipe for a working example.Differences from GoldRush
Most GoldRush wallet use cases have a direct Zerion equivalent, and DeFi positions and PnL are additions. A few things aren’t covered, and others behave differently. Worth a scan before you cut over. Not supported today:- Historical balance snapshots: GoldRush returns balances at any block height (
block-height,cutoff-timestamp) and per-token holdings over time (portfolio_v2). Zerion exposes wallet value over time via/charts/{period}and asset price history via the fungible chart, but not balance-at-block. - Token holders: GoldRush’s
token_holders_v2lists a token’s holders at any height. Zerion is wallet-centric and does not return holder lists. - Token approvals state: GoldRush’s approvals endpoint returns current allowances with value-at-risk scoring. Zerion surfaces
approve/revoketransactions in wallet history, but has no current-allowance endpoint. - Raw log events: GoldRush returns decoded event logs (
log_events[].decoded) for arbitrary contracts. Zerion returns enriched transfers and approvals, not raw logs. - Gas analytics:
transactions_summaryaggregates (total fees paid, average gas per transaction) have no Zerion equivalent. - Bitcoin and long-tail chains: GoldRush covers 100+ chains including
btc-mainnetand appchains. Zerion covers EVM chains and Solana; check the supported chains list for the ones you rely on.
- Authentication: GoldRush uses
Authorization: Bearer <key>. Zerion uses HTTP Basic Auth with the API key as username and an empty password. Get a key at dashboard.zerion.io. - Chains: GoldRush puts a
chainNameslug in the path (eth-mainnet), one chain per call. Zerion returns all supported chains by default and filters with plain names:filter[chain_ids]=ethereum,base. See the note above. - Address input: GoldRush resolves ENS and other name services in the path. Zerion expects the wallet address itself; resolve names before calling.
- Response shape: GoldRush wraps everything in
{data, error, error_message, error_code}withitems[]inside. Zerion uses JSON:API: payloads live underdata[].attributeswith related entities underdata[].relationships, and errors use HTTP status codes (see error handling). - Amounts decimal-adjusted: GoldRush balances are raw integer strings. Zerion returns
quantity.float(decimal),quantity.int(raw), andquantity.numeric(decimal string) on every position and transfer. - No pretty-formatted strings: GoldRush pairs each value with a
pretty_*display string. Zerion returns numbers; format client-side. - One endpoint for tokens and DeFi: Zerion serves both wallet tokens and DeFi positions from
/positions/. Switch viafilter[positions]=only_simple(wallet only),only_complex(DeFi only), orno_filter(both). - Decoded transactions: GoldRush gives you raw
log_eventsto interpret. Zerion always sets a decodedoperation_typeand inlines transfer metadata, so most client-side decoding code goes away. - Multiple wallets: GoldRush’s
allchains/transactionsaccepts multiple addresses per call. Zerion reads one address per/wallets/call; for batches use the wallet sets endpoints. - Spam filtering: GoldRush flags
is_spamand gates withno-spam. Zerion usesfilter[trash]=only_non_trash. See spam filtering for the full taxonomy. - Pagination: GoldRush pages by page number in the path (with
links.prev/links.next) or cursors onallchainsendpoints. Zerion returns a fully-formedlinks.nextURL you can fetch as-is. See pagination.