Home / Solutions / Analytics
Analytics

Onchain analytics data for your own warehouse

SQD sits at the extract-and-decode end of the analytics pipeline. It streams decoded events, transactions, and traces from one endpoint across 225+ networks, from genesis to head, and you model and serve them as SQL in the warehouse you already run. The Portal is not a SQL endpoint; the SQL is yours.

225+ Networks
Genesis Full history
NDJSON Streaming
SQL In your warehouse
The problem

A dashboard is the end of a pipeline, and the chain is where it starts

Every chart is the end of a four-stage pipeline: extract the blocks and logs, decode the raw hex into named events, model it into tables shaped around your questions, and serve it from a warehouse a BI tool queries with SQL. The last two stages are ordinary SQL work; the first two are where the cost sits, paginating eth_getLogs against per-call block-range caps, standing up per-chain RPC, and reconciling decoded schemas across providers before a single row reaches the warehouse. All of it is public data already; the cost is in the extract and the decode.

The pipeline

Extract and decode here, model and serve in your warehouse

SQD owns the first two stages of that pipeline, extract and decode, and streams the result into the store you already run. The Portal is not a SQL endpoint; the SQL is yours.

The numbers are real and reproducible. One extract for USDC, USDT, and DAI transfers over a fixed 1,000-block window on Ethereum (18,000,000 to 18,001,000) returns 22,318 transfers worth about $542M. Same window, same totals on every run.

TokenVolume
  • USDC$318.8M
  • USDT$203.4M
  • DAI$19.5M
USDC, USDT, DAI transfer volume, Ethereum blocks 18,000,000-18,001,000

The extract is one filter on the Transfer topic across the three token contracts (multiple addresses in one filter is OR logic):

extract: stablecoin transfers
POST https://portal.sqd.dev/datasets/ethereum-mainnet/stream
{
"type": "evm",
"fromBlock": 18000000,
"toBlock": 18001000,
"logs": [{
"address": [
"0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
"0xdac17f958d2ee523a2206206994597c13d831ec7",
"0x6b175474e89094c44da98b954eedeac495271d0f"
],
"topic0": ["0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"]
}],
"fields": { "block": { "number": true, "timestamp": true }, "log": { "address": true, "topics": true, "data": true } }
}

That streams raw logs as NDJSON; the amount is hex in data. Decode against the ERC-20 ABI (or let the Pipes SDK do it), load into ClickHouse, then it is a GROUP BY. The full extract-decode-rollup walkthrough is in the onchain analytics guide.

Two interfaces, one dataset

Reach the same data at the level your stack needs

Portal Stream API

The data layer itself

A streaming HTTP endpoint serving filtered logs, transactions, traces, and state diffs, with full history, in any language. You apply the contract ABI and aggregate the result. Teams run it in production as the data source, in place of RPC for history and bulk reads.

  • - Any language or stack
  • - Full history from genesis
  • - You decode and aggregate
  • - NDJSON over HTTP, no SDK required
Pipes SDK

Decode and load, built in

Sits on top of the same API in TypeScript: decodes logs into typed events and streams them into a target store, with progress tracking and reorg rollback handled for you. Built for a durable analytics pipeline rather than one-off queries.

  • - ClickHouse, Postgres, Parquet/S3 targets
  • - Custom-target API (BigQuery, Snowflake)
  • - Decoding and typed events built in
  • - Progress tracking and reorg rollback
Playground

Try the Portal API

Live queries against real blockchain data. Pick a network, choose a query, hit run.

The public endpoint is free for development. See plans for dedicated portals and higher limits.

Network+200 more
Query
curl --compressed -X POST \
'https://portal.sqd.dev/datasets/base-mainnet/stream' \
-H 'Content-Type: application/json' \
-d '{
"type": "evm",
"fromBlock": 23000000,
"toBlock": 23000010,
"fields": {
"block": {"number":true,"timestamp":true},
"transaction": {
"hash": true,
"from": true,
"to": true,
"value": true,
"sighash": true
}
},
"transactions": [
{
"to": [
"0xcF77a3Ba9A5CA399B7c97c74d54e5b1Beb874E43"
]
}
]
}'
Basebase-mainnet/stream
Transactions on Base's largest DEX
Capabilities

Built for Analytics at scale

Single endpoint, 225+ networks

One POST to portal.sqd.dev returns logs, transactions, traces, and state diffs from any supported chain, with no per-chain RPC setup and no reconciliation across providers. Apply the contract ABI to decode, or let the Pipes SDK decode for you.

Full archival depth from genesis

Every block, transaction, and event log from block 0 to head, on every chain, through the same query as live data. Backfill a contract's full history in one streamed range request instead of paginating eth_getLogs against per-call block-range caps.

Real-time NDJSON streaming

Stream new blocks, events, and state changes as NDJSON over HTTP, the same query shape you use for history. No WebSocket to manage, no polling loop. Figures over unfinalized blocks are provisional until finality, as in any streaming pipeline.

Direct warehouse integration

Pipe decoded data into ClickHouse, Postgres, MongoDB, SQLite, or Parquet on S3 with the Pipes SDK, plus a custom-target API for BigQuery, Snowflake, and Databricks. Your BI tool then queries the resulting store with ordinary SQL.

Why SQD

What you would build yourself

The blocks, logs, and traces are public. What a provider saves you is the extract-and-decode pipeline in front of the warehouse, and it repeats for every chain.

  • Historical backfill
    Yourself Paginate eth_getLogs against per-call block-range caps to pull a contract's full history.
    With SQD One streamed range request returns every block, transaction, and log from genesis to head.
  • Cross-chain coverage
    Yourself Per-chain RPC setup and schema reconciliation across providers, one integration per network.
    With SQD One POST to portal.sqd.dev returns the same shape across 225+ networks.
  • Decoding logs
    Yourself Raw logs arrive as hex topics and data that you decode against the ABI by hand.
    With SQD The Pipes SDK decodes logs into typed events and loads them into the target store.
  • Where the SQL runs
    Yourself SQL-as-a-service runs on a hosted dataset, limited to its chains and its hosted-query rate limits.
    With SQD Decoded data lands in your own ClickHouse, BigQuery, or Postgres, queried with ordinary SQL.

See this on your own contracts

Tell us the chains and contracts you care about, and we will show you the query that returns them.

Use cases

What teams build with SQD

  • Ecosystem health dashboards with cross-chain comparisons
  • Whale and smart-money tracking across DEXs and lending
  • Gas and fee-market analytics
  • Cross-chain activity benchmarking for L2 comparisons
  • Institutional research on historical onchain datasets
  • Internal tooling on decoded onchain feeds

Frequently asked questions

How do I query SQD data from a dashboard?
SQD writes decoded data to standard databases and warehouses; your dashboard then queries those the same way it queries any other source. The Squid SDK persists to PostgreSQL via TypeORM with an auto-generated GraphQL API; the Pipes SDK has first-class outputs to PostgreSQL, ClickHouse, MongoDB, SQLite, and Parquet, plus a custom-target API for BigQuery, Snowflake, and Databricks. Connect Grafana, Metabase, Tableau, or Hex to the database, and SQL works as normal. The Portal itself is a streaming data source, not a SQL endpoint.
What's the difference between SQD and Dune?
Dune (and Flipside) is SQL-as-a-service on a curated, hosted dataset, optimized for ad-hoc exploration and public dashboards. SQD is the data layer underneath: raw, decoded, cross-chain data delivered through a streaming API or SDK into your own warehouse. Use Dune or Flipside for fast SQL on someone else's hosted data; use SQD when you need your own data, your own warehouse, chains those services do not cover, or production access without hosted-query rate limits. See SQD vs Dune.
Can I export to BigQuery or Snowflake?
Yes, via the Pipes SDK. Its custom-target API wraps a streaming pipeline into any destination, with BigQuery, Snowflake, and Databricks as documented patterns; first-class built-in targets are PostgreSQL, ClickHouse, MongoDB, SQLite, and Parquet on S3 (which BigQuery and Snowflake can read directly as external tables). See the Pipes SDK docs for the target API.
Get started

Your blockchain data infrastructure, handled.

Private Portal. Dedicated. Validated. Managed. Tell us what you're building, we'll show you what it looks like on SQD.