Build a blazing fast indexer with Shadow

Get clean data in minutes and skip unnecessary data pipelines with custom shadow events that can access any onchain state.
Launch app

Write new indexers in less than a day, with just one engineer.

Cut down sync times with data rich shadow events. Get rid of expensive call handlers and contract bindings, and power super fast indexing off of custom events.
Access to any mainnet state
Emit data directly in shadow events that usually requires making separate RPC calls.
Reduce data engineering time
Eliminate the need to build and maintain data pipelines to merge onchain datasets.
Save on compute costs
Eliminate expensive multi-join queries by emitting shadow events in usable schemas.
Rapidly iterate on schemas
Shadow events frontfill instantly, and full historical backfills take less than 15 minutes.
No more callHandlers
Call handlers are slow. Add custom events to any function call to get the data you need.
Access peripheral contract data
Get aggregator, fees, collection, and ENS data directly in events, without contract bindings.
Most accurate point-in-time prices
Call a price oracle directly in shadow events to get prices with block-level accuracy.
Easy access to contract storage
Get any contract data you want from within its execution without complex decoding.
Standardize schemas across protocols
Create unified event schemas for similar protocols to reduce data transformations.

Emit events wherever you want, however you want.

Simplify your data indexing stack by generating data rich events that are not possible on mainnet. Write custom events for any contract, and get the data in realtime.
01 define

Define your shadow events

Create custom event schemas for any smart contract deployed on mainnet.
Write custom events in standard Solidity or Vyper code
Instant frontfills, full backfills in less than 15 minutes
Full control over schema definition and parameter naming
Easily unify schemas across similar protocols for standardization
02 emit

Emit them how you want

Emit your shadow events where and when you want them, by directly editing contract code in your Shadow fork.
Access any state data on mainnet (even from other contracts)
Call view functions from any contract to get hard-to-get data
Point-in-time prices via oracles with block-level accuracy
No more tracing for event data not logged by protocol developers
03 call

Familiar RPC methods

Fetch your custom shadow event data with standard RPC requests.
Fully hosted Shadow RPC (e.g. eth_getLogs)
<300ms query latency with 99.99% uptime
Easy integration – simply swap in your Shadow RPC URL


Get custom onchain data for indexing and analytics in minutes.