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.
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
possible_spam flag — no separate getSpamContracts call needed.
Token balances
Alchemy:POST {rpcUrl} with method alchemy_getTokenBalances
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
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)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
- Get an API key — Get your API key.
- 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.
- Collapse multi-call patterns — Alchemy flows that chained
getTokenBalances+getTokenMetadata(orgetNFTsForOwner+ spam checks) usually become a single Moralis call. - Move Notify webhooks to Streams — create one Stream per event class and attach addresses dynamically instead of one webhook per address list.
- Verify chain coverage — diff your Alchemy network configuration against Supported Chains.
- (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:- Wallet PnL — realized and unrealized PnL per wallet with token-level breakdown. See Wallet PnL Summary and Wallet PnL by Token.
- Wallet Net Worth — full USD net worth in one call. See Wallet Net Worth.
- DeFi positions — protocol positions with USD value and breakdown. See Wallet DeFi Positions.
- Token discovery — Trending Tokens.
- Token holder analytics — Token Holder Stats and Historical Token Holders.
- DEX & pair analytics — Pair Stats and Token Pairs.
- Name resolution — ENS Lookup and Resolve Address.

