When you launch a dApp on Ethereum mainnet, the first issue you face is unstable RPC: requests drop, nodes skip blocks, and syncing a new node takes days. Running your own infrastructure requires significant investment and DevOps monitoring. We solved this problem for 30+ projects by integrating Alchemy API. This is more than just an RPC provider: Enhanced APIs save development hours — alchemy_getAssetTransfers replaces manual parsing of Transfer events. Integration cuts dApp time-to-market by 60% (from 6 months to 2.4 months) and reduces infrastructure costs by 70% (from $15,000 to $4,500 monthly). Contact us for an audit of your current infrastructure.
How Alchemy speeds up dApp development?
Running your own node requires servers, syncing from genesis, uptime monitoring, and DDoS protection. Alchemy handles this: 99.9% uptime SLA and automatic failover. We compared: deployment time drops from 1–3 days to 1 hour, and monthly infrastructure costs fall several times. Our blockchain development services have integrated Alchemy for 30+ DeFi and NFT projects, reducing operational overhead by 80%.
| Parameter | Own node | Alchemy API |
|---|---|---|
| Deployment time | 1–3 days | 1 hour |
| uptime | ~99.5% (no SLA) | 99.9% (SLA) |
| Enhanced API | no | NFT, Token, Transfers |
| Support cost | high | low (Growth plans and above) |
Which Enhanced APIs are actually needed?
Alchemy provides three key Enhanced APIs that replace indexing and event parsing. Let's break down each with code examples.
NFT API
Without Alchemy, getting all NFTs for an address means parsing Transfer events or depending on marketplace APIs. With Alchemy:
// All NFTs for wallet const nfts = await alchemy.nft.getNftsForOwner("0xAddress", { contractAddresses: ["0xOptionalFilter"], omitMetadata: false }) // Owner of a specific token const owners = await alchemy.nft.getOwnersForNft(contractAddress, tokenId) // All tokens in a collection with metadata const collection = await alchemy.nft.getNftsForContract(contractAddress, { pageSize: 100 }) Token API and transaction history
// All ERC-20 balances for address const balances = await alchemy.core.getTokenBalances("0xAddress") // Token metadata const metadata = await alchemy.core.getTokenMetadata("0xTokenAddress") // { name, symbol, decimals, logo } // Full transaction history for address const history = await alchemy.core.getAssetTransfers({ fromAddress: "0xAddress", category: ["external", "erc20", "erc721", "erc1155"], withMetadata: true, maxCount: 100 }) The result includes decoded transfers with amounts, token symbols, and addresses — ready for UI. Enhanced APIs cut indexing time by 10x compared to custom event parsing.
Enhanced API comparison
| API | What it provides | Time saved |
|---|---|---|
| NFT API | All NFTs for address, owners, metadata | 3–5 days for indexing |
| Token API | Token balances and metadata | 2–3 days for parsing |
| Asset Transfers | Transfer history with filtering | 1–2 days for indexing |
Setting up Webhooks for on-chain monitoring
Polling is a bad approach. Alchemy Notify sends a POST to your endpoint on events. We implement creation and verification:
- Create a webhook via SDK or Alchemy Dashboard.
- Implement an endpoint that accepts POST requests.
- Verify the signature using
isValidWebhookSignature. - Process the event and return 200 OK.
import { isValidWebhookSignature } from "alchemy-sdk" // Create webhook const webhook = await alchemy.notify.createWebhook( "https://your-api.com/webhooks/alchemy", WebhookType.ADDRESS_ACTIVITY, { addresses: ["0xWatchedAddress"], network: Network.ETH_MAINNET } ) // Verify signature (Express.js) app.post("/webhooks/alchemy", express.raw({type:"application/json"}), (req, res) => { const isValid = isValidWebhookSignature({ body: req.body.toString(), signature: req.headers["x-alchemy-signature"] as string, signingKey: process.env.ALCHEMY_WEBHOOK_SIGNING_KEY! }) if (!isValid) return res.status(401).send("Unauthorized") const event = JSON.parse(req.body.toString()) handleAlchemyEvent(event) res.sendStatus(200) }) More about webhook types
Types: ADDRESS_ACTIVITY, NFT_ACTIVITY, MINED_TRANSACTION, DROPPED_TRANSACTION. Each requires its own handling.Alchemy Notify Documentation
Why WebSocket is better than polling for real-time data?
In addition to webhooks, Alchemy provides WebSocket subscriptions: alchemy_subscribe, newHead, newPendingTransactions. We set up subscriptions for mempool monitoring or new blocks. This is critical for MEV strategies and high-frequency trading. Example subscription:
const ws = new WebSocket("wss://eth-mainnet.g.alchemy.com/v2/API_KEY") ws.on("open", () => { ws.send(JSON.stringify({ jsonrpc: "2.0", id: 1, method: "eth_subscribe", params: ["newHeads"] })) }) ws.on("message", (data) => { console.log(JSON.parse(data.toString())) }) Alchemy API integration deliverables
We provide a full integration cycle with clear deliverables at each stage:
- Audit of current infrastructure and selection of the optimal Alchemy plan.
- SDK setup for mainnet and testnet with multi-chain support.
- Integration of NFT API, Token API, Asset Transfers with ready code examples.
- Webhook notification creation with signature verification and event handling.
- WebSocket subscription setup for real-time data.
- Rate limit optimization and request batching.
- Integration documentation and client team training.
- Post-launch stability and performance monitoring.
Thanks to this, your dApp gets reliable access to blockchain data without the need to run your own infrastructure. The total integration cost starts at $5,000, with typical savings of $10,000+ monthly on infrastructure. Order the integration — we will conduct an audit and propose the optimal configuration for your project.
Typical integration mistakes
- Incorrect signing key for webhooks — leads to 401 errors. Verify the signing key matches the Alchemy Dashboard.
- Rate limit exceeded without batching — increases latency. Use
alchemy.core.sendBatch()to batch requests. - Wrong Network parameter for L2 — basis for reorgs. Ensure correct
Network.ARB_MAINNETfor Arbitrum. - Ignoring a fallback provider — in rare cases Alchemy may be unavailable, so a backup RPC like Infura is needed.
- Missing error handling for
429 Too Many Requests— implement retry logic with exponential backoff.
Get a consultation from an engineer who has already delivered 30+ solutions for DeFi and NFT. We guarantee stability and performance at any scale.







