Swap POST-with-key-in-URL Data APIs for flat GET endpoints.
Alchemy splits wallet data across three surfaces: Data APIs (POST, API key in the URL path), enhanced JSON-RPC methods (alchemy_getAssetTransfers and friends), and standard node RPC. GoldRush serves the same reads as flat authenticated GETs, and serves JSON-RPC on the same key. Alchemy remains stronger on node infrastructure breadth, webhooks, and account abstraction — this guide says where.
Reviewed 2026-09-11. Endpoint paths read from www.alchemy.com, goldrush.dev. Verify against Alchemy 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.
| Alchemy | GoldRush | |
|---|---|---|
| Base URL | https://api.g.alchemy.com/data/v1/{apiKey}/... and https://{network}.g.alchemy.com/v2/{apiKey} for RPC | https://api.covalenthq.com |
| Auth | API key embedded in the URL path — leaks into logs, referrers, and traces. | Authorization: Bearer <GOLDRUSH_API_KEY> — key stays in the header. |
| Request style | POST with a JSON body for Data APIs; JSON-RPC POST envelopes for alchemy_* methods. | GET with path and query params. Cacheable and curl-able. |
| Chain addressing | Network slug per subdomain for RPC (eth-mainnet.g.alchemy.com); networks[] array in the body for Data APIs. | Chain slug in the path, or /v1/allchains/* for cross-chain reads. |
| Pagination | Cursor tokens whose parameter name varies by endpoint. | Page number in the path, uniform across endpoints. Page 0 is the OLDEST page. |
Every Alchemy 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 | Alchemy | GoldRush | Parity |
|---|---|---|---|
| Token balances with prices | POST /data/v1/{apiKey}/assets/tokens/by-address | GET /v1/{chainName}/address/{walletAddress}/balances_v2/ | Direct equivalent |
| Multichain balances | POST /data/v1/{apiKey}/assets/tokens/by-address (networks[] in body) | GET /v1/allchains/address/{walletAddress}/balances/ | Direct equivalent |
| NFTs held | POST /data/v1/{apiKey}/assets/nfts/by-address | GET /v1/{chainName}/address/{walletAddress}/balances_nft/ | Direct equivalent |
| Transfer history | alchemy_getAssetTransfers (JSON-RPC) | GET /v1/{chainName}/address/{walletAddress}/transfers_v2/ | Direct equivalent |
| Full transaction history One call instead of two. Decoded log_events are already attached to each transaction. | alchemy_getAssetTransfers + alchemy_getTransactionReceipts | GET /v1/{chainName}/address/{walletAddress}/transactions_v3/page/{page}/ | GoldRush advantage |
| Token metadata Metadata rides along with balances. For a standalone lookup use the pricing endpoint, which returns ticker, decimals, and logo with the price. | alchemy_getTokenMetadata (JSON-RPC) | GET /v1/{chainName}/address/{walletAddress}/balances_v2/ | Needs work |
| Token prices by address Same endpoint serves live and historical. Alchemy needs a separate historical call. | POST /prices/v1/{apiKey}/tokens/by-address | GET /v1/pricing/historical_by_addresses_v2/{chainName}/{quoteCurrency}/{contractAddress}/ | GoldRush advantage |
| Token approvals | Not available | GET /v1/{chainName}/approvals/{walletAddress}/ | GoldRush advantage |
| Historical balances by date | Not available | GET /v1/{chainName}/address/{walletAddress}/historical_balances/ | GoldRush advantage |
| Portfolio value over time | Not available | GET /v1/{chainName}/address/{walletAddress}/portfolio_v2/ | GoldRush advantage |
| Token holders at a block | Not available | GET /v1/{chainName}/tokens/{tokenAddress}/token_holders_v2/ | GoldRush advantage |
| Log events by contract or topic GoldRush decodes against the ABI. eth_getLogs returns raw topics and data for you to decode. | eth_getLogs (standard RPC, undecoded) | GET /v1/{chainName}/events/address/{contractAddress}/ | GoldRush advantage |
| Bitcoin data | Not available | GET /v1/btc-mainnet/address/{walletAddress}/balances_v2/ | GoldRush advantage |
| JSON-RPC node access Alchemy covers more networks and more enhanced methods. If node breadth is the reason you are on Alchemy, that is a real reason to stay. | https://{network}.g.alchemy.com/v2/{apiKey} | GoldRush JSON-RPC on 30+ EVM chains | Needs work |
| Webhooks / Notify | Alchemy Notify webhooks | — | No equivalent |
| Account abstraction / bundler Out of scope for GoldRush. We are a data API, not an infrastructure suite. | Alchemy Account Kit, bundler and paymaster APIs | — | No equivalent |
Copy-pasteable. Left is what you have on Alchemy; right is the GoldRush replacement.
Replace the key-in-path pattern with Authorization: Bearer <GOLDRUSH_API_KEY>. Then audit logs and dashboards for previously leaked Alchemy keys and rotate them.
Alchemy Data API bodies become path segments and query params. The addresses/networks array becomes either a chain slug in the path or a chains= list on /v1/allchains/*.
alchemy_getAssetTransfers becomes transfers_v2; getAssetTransfers plus getTransactionReceipts collapses into transactions_v3. Drop the JSON-RPC envelope entirely for these reads.
GoldRush attaches decoded log_events to each transaction. Whatever you built to decode raw topics from eth_getLogs can usually be removed.
Alchemy's cursor parameter names vary per endpoint. GoldRush uses .../page/{page}/ uniformly, with page 0 as the oldest page.
If you use Notify webhooks, Account Kit, or networks GoldRush does not serve over RPC, keep those on Alchemy and move only the data reads.
If any of these is load-bearing for your product, do not migrate that surface. Running both providers is a legitimate answer.
GoldRush serves JSON-RPC on 30+ EVM chains. Alchemy covers more networks and a deeper set of enhanced methods. If you are on Alchemy primarily for node infrastructure, that is a legitimate reason to stay.
Alchemy Notify pushes events to your endpoint. GoldRush has no equivalent, so real-time becomes polling.
Account Kit, bundler, and paymaster APIs have no GoldRush counterpart and are not on our roadmap. GoldRush is a data API.
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.
Flat authenticated GETs are cacheable at the CDN, easy to curl, and keep the API key out of URLs and access logs. Alchemy's Data APIs are POSTs with the key in the path.
Full transaction history with decoded log_events is a single request. On Alchemy it is alchemy_getAssetTransfers plus alchemy_getTransactionReceipts, then your own ABI decoding.
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.
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 Alchemy