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 key — Get 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.