Migrating from Dune SIM to Zerion API

Here's how to migrate from Dune SIM to Zerion API for balances, activity, and DeFi positions.

Migrating from Dune SIM to Zerion API

Dune is sunsetting the SIM API. If your app uses Dune SIM for token balances, wallet activity, or DeFi positions, you need to migrate by August 1. Zerion API covers the same data layer across 40+ EVM chains and Solana under a single normalized schema, often in fewer calls than SIM required.

This guide walks through what Zerion API replaces and how to map your existing SIM calls. For a full 1:1 reference with code samples, see the migration docs.

What Zerion API covers

Zerion API provides wallet data across 40+ EVM chains and Solana under one schema. The endpoints most relevant to a SIM migration are:

  • Token balances and DeFi positions: /v1/wallets/{address}/positions/ returns both simple token balances and complex DeFi positions in a single call. Filter to just one with filter[positions]=only_simple (tokens) or only_complex (DeFi).
  • Portfolio aggregation: /v1/wallets/{address}/portfolio returns total value, 24h change, and chain breakdown in one call — no client-side math.
  • Transaction history: /v1/wallets/{address}/transactions/ returns enriched, human-readable transactions with transfers, fees, and dApp identification.
  • NFTs: /v1/wallets/{address}/nft-positions/ returns collectibles across chains.

The same /wallets/{address}/... endpoints accept both EVM and Solana addresses and return the same enriched response shape. No separate endpoint family for SVM, no schema branching.

Endpoint mapping

The main Dune SIM endpoints map directly to Zerion API equivalents:

GET /v1/evm/balances/{address}GET /v1/wallets/{address}/positions/?filter[positions]=only_simple

GET /v1/evm/defi/positions/{address}GET /v1/wallets/{address}/positions/?filter[positions]=only_complex

GET /v1/evm/activity/{address}GET /v1/wallets/{address}/transactions/

GET /v1/evm/collectibles/{address}GET /v1/wallets/{address}/nft-positions/

If you call both balances and defi/positions today, you can get the same data with a single Zerion request to /positions/?filter[positions]=no_filter

Dune SIM requires computing client-side from balances, but with Zerion API can get portfolio totals and 24h change by calling /portfolio directly.

What's different

While endpoints are similar, the data and output differ. A few things to know:

  • More DeFi protocols: Zerion API fetches positions from over 8,000 DeFi protocols and integrates new and emerging protocols quickly.
  • Fully multichain: While SIM returns only 14 chains by default, Zerion API fetches data from all supported chains, unless you explicitly filter them.  
  • Solana parity: SIM splits EVM and Solana into separate endpoint families with different schemas. Zerion serves both from the same /wallets/{address}/... endpoints.
  • Chain IDs: SIM filters chains with numeric IDs (e.g. 1, 8453). Zerion uses string IDs (e.g. ethereum, base). See the full list.
  • Response shape: Zerion responses follow JSON:API. Payloads live under data[].attributes with related entities under data[].relationships.
  • Pagination: Replace SIM's offset cursor with Zerion's links.next, a fully-formed URL you fetch as-is.
  • Spam filtering: exclude_spam_tokens=true becomes filter[trash]=only_non_trash. See spam filtering for the full taxonomy.

Pricing 

Dune SIM uses ‘compute units’ (CUs) with more complex calls costing more. This can make pricing harder to estimate. 

Zerion API uses transparent monthly subscriptions with a fixed number of calls. This makes pricing more predictable as you scale. 

For example, Zerion API returns data from across all supported chains by default. Fetching data from more chains doesn’t cost you more. 

Custom enterprise agreements are also available, starting from 2.5 million calls per month.

Step-by-step migration process

Here's the rough path:

  1. Get a Zerion API key at dashboard.zerion.io and switch your auth header to Basic Auth.
  2. Replace /v1/evm/balances and /v1/evm/defi/positions calls with /v1/wallets/{address}/positions/. Use filter[positions]=only_simple, only_complex, or no_filter to scope the response.
  3. Swap /v1/evm/activity/{address} for /v1/wallets/{address}/transactions/ and update field names (tx_hashhash, block_timemined_at, typeoperation_type).
  4. Move portfolio totals from client-side aggregation to /v1/wallets/{address}/portfolio.
  5. Update chain IDs from numeric to string format (1ethereum, 8453base).
  6. Update pagination from offset cursors to following the links.next URL on each response.
  7. If you use SIM subscriptions, replace them with Zerion transaction webhooks.

For a 1:1 field-level mapping table and copy-pasteable code in JavaScript, Python, and cURL, see the full migration guide in the docs.

Special pricing for Dune SIM customers

Zerion is offering discounted pricing for teams migrating from SIM during the wind-down. The discount code is in Dune's communications. Or email us and mention your SIM account.

Try it now

Get a free Zerion API key and try it against a wallet you know. The Zerion API documentation includes the full endpoint reference, recipes, and code samples.

If you're working through a large migration and want to talk through edge cases, start a chat in the Zerion API dashboard, and the team will be happy to help.