Skip to main content

Migrating from Alchemy to Moralis

Moralis is a drop-in alternative to Alchemy. Moralis combines RPC node access, an enriched Web3 Data API, and real-time Streams behind a single API key — so you can replace Alchemy’s enhanced APIs (NFT, Token, Prices, Portfolio, Transfers, Webhooks) and, if you want, your RPC traffic too. This page maps the Alchemy surface to Moralis method-by-method so the swap is mostly search-and-replace.
Alchemy and Moralis solve the same problem: get clean, decoded, enriched blockchain data into your app without running indexers. Alchemy exposes this through its Enhanced APIs (mostly JSON-RPC method extensions plus REST Data APIs); Moralis exposes it through a REST Web3 Data API. Field names differ, but the resource shapes line up — most teams write a thin response adapter and keep shipping.

Quick reference: Alchemy → Moralis

NFT API

Token API & Prices API

Transfers & transaction data

Portfolio API (multichain)

Real-time — Webhooks (Notify) & Subscription API → Streams

Solana (SVM)

RPC

Endpoint details

Each section shows the Alchemy call, the Moralis URL(s) that replace it by chain, and a runnable example.

NFTs by wallet

Alchemy: GET https://{network}.g.alchemy.com/nft/v3/{apiKey}/getNFTsForOwner
Notes: Moralis returns ERC721 and ERC1155 holdings with normalized metadata, hosted media previews, and a possible_spam flag — no separate getSpamContracts call needed.

Token balances

Alchemy: POST {rpcUrl} with method alchemy_getTokenBalances
Notes: Unlike alchemy_getTokenBalances (which returns raw balances and requires a second alchemy_getTokenMetadata call), Moralis returns balance, decimals, USD price, USD value, and full metadata (symbol, name, logo, verified flag, spam flag) in one response.

Asset transfers / wallet history

Alchemy: POST {rpcUrl} with method alchemy_getAssetTransfers
Notes: Moralis returns a single normalized, chronological feed of native transfers, ERC20 movements, NFT transfers, swaps, contract interactions, and approvals — already decoded into human-readable summaries.

Token prices

Alchemy: GET https://api.g.alchemy.com/prices/v1/{apiKey}/tokens/by-address Notes: For historical prices and candles, use Get OHLCV by Pair Address. Moralis pricing is sourced from on-chain DEX liquidity with USD conversion.

Portfolio (multichain balances)

Alchemy: POST https://api.g.alchemy.com/data/v1/{apiKey}/assets/tokens/by-address Notes: Alchemy’s Portfolio API rolls up multiple chains in one request; Moralis offers the same with Cross-Chain Token Balances, and per-chain calls can be parallelized for full control.

Webhooks (Notify) → Moralis Streams

Alchemy: Notify API webhooks (Address Activity, NFT Activity, Mined/Dropped Transaction, Custom GraphQL)
Notes: Where Alchemy’s Notify API is one webhook per address list, Moralis Streams uses a stream-with-attached-addresses model — create the stream once and add or remove addresses dynamically without re-subscribing. Streams also adds ABI-decoded contract events and smart-filter expressions, covering the same ground as Alchemy’s Custom (GraphQL) webhooks.

Chain coverage

Alchemy supports 80+ EVM networks plus Solana. Moralis covers a comparable footprint across EVM, Solana, and Bitcoin — see Supported Chains. Before cutover, diff the chains you’ve configured in Alchemy against the supported list and flag any gaps.

Migration checklist

  1. Get an API keyGet your API key.
  2. Map your call sites — replace each Alchemy method with the equivalent above. Field names differ; most teams write a thin response adapter rather than threading new shapes through the codebase.
  3. Collapse multi-call patterns — Alchemy flows that chained getTokenBalances + getTokenMetadata (or getNFTsForOwner + spam checks) usually become a single Moralis call.
  4. Move Notify webhooks to Streams — create one Stream per event class and attach addresses dynamically instead of one webhook per address list.
  5. Verify chain coverage — diff your Alchemy network configuration against Supported Chains.
  6. (Optional) Move RPC traffic — point your JSON-RPC calls at Moralis RPC Nodes to consolidate billing.

Beyond Alchemy: what Moralis adds

Once migrated, teams commonly adopt Moralis endpoints that have no direct Alchemy counterpart:

Need help migrating off Alchemy?

If you’re moving a production Alchemy workload to Moralis, the support team can help size the migration and review your call patterns — reach out via moralis.com.