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.
Try it out

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.
data_array
Access to any mainnet state
Emit data directly in shadow events that usually requires making separate RPC calls.
desktop_access_disabled
Reduce data engineering time
Eliminate the need to build and maintain data pipelines to merge onchain datasets.
cloud_off
Save on compute costs
Eliminate expensive multi-join queries by emitting shadow events in usable schemas.
schema
Rapidly iterate on schemas
Shadow events frontfill instantly, and full historical backfills take less than 15 minutes.
deselect
No more callHandlers
Call handlers are slow. Add custom events to any function call to get the data you need.
library_books
Access peripheral contract data
Get aggregator, fees, collection, and ENS data directly in events, without contract bindings.
price_check
Most accurate point-in-time prices
Call a price oracle directly in shadow events to get prices with block-level accuracy.
memory
Easy access to contract storage
Get any contract data you want from within its execution without complex decoding.
multiple_stop
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.
check
Write custom events in standard Solidity or Vyper code
check
Instant frontfills, full backfills in less than 15 minutes
check
Full control over schema definition and parameter naming
check
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.
check
Access any state data on mainnet (even from other contracts)
check
Call view functions from any contract to get hard-to-get data
check
Point-in-time prices via oracles with block-level accuracy
check
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.
check
Fully hosted Shadow RPC (e.g. eth_getLogs)
check
<300ms query latency with 99.99% uptime
check
Easy integration – simply swap in your Shadow RPC URL

Shadow

Get custom onchain data for indexing and analytics in minutes.