Sim shut down on 1 August 2026. Here is where each endpoint goes.
Dune disabled new Sim signups on 18 May 2026 and shut the API down on 1 August 2026, refunding prepaid time pro rata. Dune pointed enterprise customers at Zerion, Codex, and Mobula. If your code still calls api.sim.dune.com, it is broken now. This is a repair guide, not a planning document.
Dune sunset sim.dune.com on 1 August 2026: new signups were disabled on 18 May 2026 and prepaid time past 1 August was refunded pro rata. If you still have Sim calls in a codebase, they are already failing. Sim was a flat REST API keyed by X-Sim-Api-Key with numeric chain IDs. GoldRush is the closest structural match (flat REST, decoded, multichain), and this page maps every Sim endpoint to it.
The cross-cutting differences. Miss one and every call fails the same way, so fix these first.
| Dune Sim | GoldRush | |
|---|---|---|
| Base URL | https://api.sim.dune.com/v1 (offline since 2026-08-01) | https://api.covalenthq.com |
| Auth | X-Sim-Api-Key: <key> | Authorization: Bearer <GOLDRUSH_API_KEY> |
| Chain addressing | Numeric EVM chain IDs (1, 8453, 42161) as a query param; separate /evm/ and /svm/ path families. | Named chain slug in the path (eth-mainnet, base-mainnet, arbitrum-mainnet). One family of paths for every chain. |
| Response envelope | Flat provider-specific JSON per endpoint. | { data: { items: [...] }, error, error_message, error_code } on every endpoint. |
| Pagination | ?limit=100&offset=<next_offset> | Page number in the path: .../transactions_v3/page/{page}/. Page 0 is the OLDEST page. |
Every Dune Sim endpoint we could source, with its GoldRush equivalent. Rows marked No equivalent are gaps we won't paper over, so read those first. Verify a row against the Dune Sim docs before relying on it.
| Use case | Dune Sim | GoldRush | Parity |
|---|---|---|---|
| EVM token balancesBoth return live USD value inline. Use /v1/allchains/address/{walletAddress}/balances/ for Sim's multichain-by-default behaviour. | GET /evm/balances/{address} | GET /v1/{chainName}/address/{walletAddress}/balances_v2/ | Direct equivalent |
| Multichain balances | GET /evm/balances/{address} (multi-chain by default) | GET /v1/allchains/address/{walletAddress}/balances/ | Direct equivalent |
| Stablecoin balancesNo dedicated stablecoin endpoint. Filter balances_v2 by contract address client-side, exactly as Alchemy's own Sim guide tells you to do. | GET /evm/stablecoins/{address} | GET /v1/{chainName}/address/{walletAddress}/balances_v2/ | Needs work |
| Token metadata + priceOne call. Alchemy needs two (alchemy_getTokenMetadata plus a prices call) for the same answer. | GET /evm/token-info/{chain}/{token} | GET /v1/pricing/historical_by_addresses_v2/{chainName}/{quoteCurrency}/{contractAddress}/ | Direct equivalent |
| Wallet activity / transferstransfers_v2 for token transfers; transactions_v3 when you want full decoded log_events per transaction. | GET /evm/activity/{address} | GET /v1/{chainName}/address/{walletAddress}/transfers_v2/ | Direct equivalent |
| Transaction historyDecoded log_events are included. Alchemy's equivalent needs getAssetTransfers plus getTransactionReceipts. | GET /evm/transactions/{address} | GET /v1/{chainName}/address/{walletAddress}/transactions_v3/page/{page}/ | Direct equivalent |
| Multichain transactions | GET /evm/transactions/{address} (multi-chain) | GET /v1/allchains/transactions/ | Direct equivalent |
| NFTs / collectibles | GET /evm/collectibles/{address} | GET /v1/{chainName}/address/{walletAddress}/balances_nft/ | Direct equivalent |
| DeFi positionsNo GoldRush equivalent, and none from Alchemy either, whose guide marks this N/A. If you need it, Zerion or DeBank cover it. | GET /evm/defi-positions/{address} | None | No equivalent |
| Supported DeFi protocols | GET /evm/defi/supported-protocols | None | No equivalent |
| Solana balancesSolana is a chain slug like any other, with no separate /svm/ path family to maintain. | GET /svm/balances/{address} | GET /v1/{chainName}/address/{walletAddress}/balances_v2/ | Direct equivalent |
| Solana transactions | GET /svm/transactions/{address} | GET /v1/{chainName}/address/{walletAddress}/transactions_v3/page/{page}/ | Direct equivalent |
| Chains a wallet has used | Not available | GET /v1/address/{walletAddress}/activity/ | GoldRush advantage |
| Bitcoin balances | Not available (EVM + SVM only) | GET /v1/btc-mainnet/address/{walletAddress}/balances_v2/ | GoldRush advantage |
| Token approvals | Not available | GET /v1/{chainName}/approvals/{walletAddress}/ | GoldRush advantage |
| Contract log events | Not available | GET /v1/{chainName}/events/address/{contractAddress}/ | GoldRush advantage |
Sources: www.alchemy.com, dune.com and goldrush.dev for Dune Sim, the GoldRush docs for GoldRush.
Code you can paste. On the left, what you have on Dune Sim; on the right, the GoldRush replacement.
Dune Sim
// BEFORE -- Sim: X-Sim-Api-Key, numeric chain IDs.
// (api.sim.dune.com stopped serving on 2026-08-01.)
const res = await fetch(
"https://api.sim.dune.com/v1/evm/balances/" + address + "?chain_ids=1,8453",
{ headers: { "X-Sim-Api-Key": process.env.SIM_API_KEY } }
);
const { balances } = await res.json();GoldRush
// AFTER -- GoldRush: Bearer auth, named chain slugs.
const res = await fetch(
"https://api.covalenthq.com/v1/allchains/address/" + address +
"/balances/?chains=eth-mainnet,base-mainnet",
{ headers: { Authorization: "Bearer " + process.env.GOLDRUSH_API_KEY } }
);
const { data, error, error_message } = await res.json();
if (error) throw new Error(error_message);
const balances = data.items;Dune Sim
// BEFORE -- Sim took numeric EVM chain IDs.
const SIM_CHAINS = [1, 8453, 42161, 137];GoldRush
// AFTER -- GoldRush takes named slugs. Rather than hardcoding a map,
// build it once from the live chain list so it never drifts.
const res = await fetch("https://api.covalenthq.com/v1/chains/", {
headers: { Authorization: "Bearer " + process.env.GOLDRUSH_API_KEY },
});
const { data } = await res.json();
const byChainId = new Map(data.items.map((c) => [Number(c.chain_id), c.name]));
const SIM_CHAINS = [1, 8453, 42161, 137];
const chains = SIM_CHAINS.map((id) => byChainId.get(id)).filter(Boolean);
// -> ["eth-mainnet", "base-mainnet", "arbitrum-mainnet", "matic-mainnet"]Dune Sim
// BEFORE -- Sim used limit/offset.
let offset = 0;
const all = [];
for (;;) {
const res = await fetch(
"https://api.sim.dune.com/v1/evm/transactions/" + address +
"?limit=100&offset=" + offset,
{ headers: { "X-Sim-Api-Key": process.env.SIM_API_KEY } }
);
const body = await res.json();
all.push(...body.transactions);
if (body.transactions.length < 100) break;
offset += 100;
}GoldRush
// AFTER -- GoldRush pages by number in the path.
// Page 0 is the OLDEST page, so this walks forward in time.
let page = 0;
const all = [];
for (;;) {
const res = await fetch(
"https://api.covalenthq.com/v1/eth-mainnet/address/" + address +
"/transactions_v3/page/" + page + "/",
{ headers: { Authorization: "Bearer " + process.env.GOLDRUSH_API_KEY } }
);
const { data, error, error_message } = await res.json();
if (error) throw new Error(error_message);
all.push(...data.items);
if (!data.links?.next) break;
page += 1;
}The port in order. Each step is small enough to ship and check on its own.
Grep your codebase for api.sim.dune.com and X-Sim-Api-Key. Every hit is a call that has been failing since 1 August 2026.
Replace the X-Sim-Api-Key header with Authorization: Bearer <GOLDRUSH_API_KEY>.
Sim used numeric chain IDs; GoldRush uses named slugs. Fetch GET /v1/chains/ once at startup and map chain_id to name rather than hardcoding, so new chains do not need a deploy.
Both families become the same GoldRush paths with a different chain slug. Delete the branch.
Move to the { data: { items: [...] }, error, error_message } envelope and check the error field, not just the HTTP status.
Replace limit/offset loops with .../page/{page}/ and follow data.links.next. Page 0 is the oldest page.
Sim's /evm/defi-positions/ has no GoldRush equivalent. Alchemy cannot replace it either. If it is load-bearing, pair GoldRush with a positions-specific provider.
If one of these is load-bearing for your product, don't 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.
Each of these maps to a row above or to a documented GoldRush capability.
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.
Sim split EVM and Solana into separate endpoint families with different shapes. In GoldRush the chain is a path segment and the response envelope is identical everywhere, so the branch in your client code goes away.
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.
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.
A free API key comes with 25,000 credits and no card. Or skip signup and pay per request with x402.
This guide assumes you have decided to move. The comparison covers pricing, coverage and features side by side.
GoldRush vs DuneEvery Zerion v1 wallet endpoint, mapped to its GoldRush equivalent.
Swap POST-with-key-in-URL Data APIs for flat GET endpoints.
Map the /v1/user/* Pro API onto GoldRush, including what does not port.