Skip to main content

Migrating from Moralis to Bitquery

A concept map for teams moving REST-style Moralis calls to Bitquery's GraphQL cubes. Instead of one endpoint per resource, you compose a single GraphQL query against the cube you need.

note

Capability comparisons below describe Bitquery's model; verify exact coverage for your chains against the coverage matrix.

Concept mapping

Moralis (REST)Bitquery (GraphQL)
Get wallet token balancesEVM { Balances(...) }Balances
Get wallet token transfersEVM { Transfers(...) }Transfers
Get token priceCrypto Price API
Get token holdersEVM { Holders(...) }Holders
Get DEX trades / swapsEVM { DEXTrades / DEXTradeByTokens }DEX trades
Streams (webhooks)WebSocket subscriptions or Kafka

Example: wallet token transfers

{
EVM(network: eth, dataset: combined) {
Transfers(
where: { Transfer: { Sender: { is: "0x..." } } }
orderBy: { descending: Block_Time }
limit: { count: 100 }
) {
Block { Time }
Transfer { Amount Currency { Symbol SmartContract } Receiver }
Transaction { Hash }
}
}
}

What differs

  • One flexible query vs many endpoints. You select exactly the fields you need across a cube, rather than calling a fixed-shape endpoint.
  • Dataset selection. Choose realtime / combined explicitly for live vs historical data — see the coverage matrix.
  • Streaming. Real-time delivery is via WebSocket/Kafka/gRPC rather than webhooks. [confirm your delivery needs]

Frequently Asked Questions

How do I get wallet balances like Moralis?

Use the EVM Balances cube with an Address filter. Add a Currency filter for a single token.

Does Bitquery have webhooks like Moralis Streams?

Real-time delivery is via WebSocket subscriptions, Kafka, or Solana gRPC rather than webhooks. Choose based on throughput and filtering needs.

How far back does historical data go?

It depends on the chain and cube — see the Data Coverage & Retention matrix.

Next steps