Migrate from Dune Sim

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 Sim to GoldRush16 endpoints
Direct equivalent
9
Needs work
1
No equivalent
2
GoldRush advantage
4
Reviewed . Paths read from www.alchemy.com, dune.com, goldrush.dev.

Why move from Dune Sim

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.

What changes before any endpoint works

The cross-cutting differences. Miss one and every call fails the same way, so fix these first.

Dune Sim vs GoldRush: auth, format and pagination
Dune SimGoldRush
Base URLhttps://api.sim.dune.com/v1 (offline since 2026-08-01)https://api.covalenthq.com
AuthX-Sim-Api-Key: <key>Authorization: Bearer <GOLDRUSH_API_KEY>
Chain addressingNumeric 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 envelopeFlat 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.

Endpoint mapping

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.

Dune Sim endpoints and their GoldRush equivalents
Use caseDune SimGoldRushParity
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 balancesGET /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 transactionsGET /evm/transactions/{address} (multi-chain)GET /v1/allchains/transactions/Direct equivalent
NFTs / collectiblesGET /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}NoneNo equivalent
Supported DeFi protocolsGET /evm/defi/supported-protocolsNoneNo 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 transactionsGET /svm/transactions/{address}GET /v1/{chainName}/address/{walletAddress}/transactions_v3/page/{page}/Direct equivalent
Chains a wallet has usedNot availableGET /v1/address/{walletAddress}/activity/GoldRush advantage
Bitcoin balancesNot available (EVM + SVM only)GET /v1/btc-mainnet/address/{walletAddress}/balances_v2/GoldRush advantage
Token approvalsNot availableGET /v1/{chainName}/approvals/{walletAddress}/GoldRush advantage
Contract log eventsNot availableGET /v1/{chainName}/events/address/{contractAddress}/GoldRush advantage

Sources: www.alchemy.com, dune.com and goldrush.dev for Dune Sim, the GoldRush docs for GoldRush.

Before and after

Code you can paste. On the left, what you have on Dune Sim; on the right, the GoldRush replacement.

Token balances

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;

Translating Sim chain IDs

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"]

Offset pagination to page paths

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;
}

Migration steps

The port in order. Each step is small enough to ship and check on its own.

  1. 1.

    Confirm the blast radius

    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.

  2. 2.

    Swap auth

    Replace the X-Sim-Api-Key header with Authorization: Bearer <GOLDRUSH_API_KEY>.

  3. 3.

    Build a chain ID map from the live list

    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.

  4. 4.

    Collapse /evm/ and /svm/ call sites

    Both families become the same GoldRush paths with a different chain slug. Delete the branch.

  5. 5.

    Rewrite the response parser

    Move to the { data: { items: [...] }, error, error_message } envelope and check the error field, not just the HTTP status.

  6. 6.

    Convert offset pagination to page paths

    Replace limit/offset loops with .../page/{page}/ and follow data.links.next. Page 0 is the oldest page.

  7. 7.

    Decide what to do about DeFi positions

    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.

What you lose by moving

If one of these is load-bearing for your product, don't migrate that surface. Running both providers is a legitimate answer.

  • No first-class DeFi protocol positions

    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.

  • No single-call wallet PnL

    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.

  • No transaction webhooks

    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.

What you gain

Each of these maps to a row above or to a documented GoldRush capability.

  • 100+ chains, including Bitcoin

    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.

  • One path family, not /evm/ and /svm/

    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.

  • x402: no signup, no API key

    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.

  • Log events, holders, and OHLCV

    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.

Start the port

A free API key comes with 25,000 credits and no card. Or skip signup and pay per request with x402.

Common questions

Yes. Dune disabled new signups on 18 May 2026 and shut sim.dune.com down on 1 August 2026, refunding prepaid time pro rata. Calls to api.sim.dune.com no longer serve.

Still deciding?

This guide assumes you have decided to move. The comparison covers pricing, coverage and features side by side.

GoldRush vs Dune

Other migration guides

  • From Zerion API

    Every Zerion v1 wallet endpoint, mapped to its GoldRush equivalent.

  • From Alchemy

    Swap POST-with-key-in-URL Data APIs for flat GET endpoints.

  • From DeBank Cloud

    Map the /v1/user/* Pro API onto GoldRush, including what does not port.