Streams

The most powerful
real-time data pipelines

Eliminate the need for complex ETL pipelines and constant polling. Streams provides a continuous, push-based data flow that simplifies your data ingestion process.

  • Create a free Stream
  • One-click backfills
Live
Index the Ethereum chain

Ethereum Mainnet

  • Filtered payload

  • Raw payload

    Use template
    Live
    All Uniswap exchange swaps

    Decrentralized exchange

    • Filtered payload

    • Raw payload

      Use template
      Live
      All Arbitrum token transfers

      Arbitrum Mainnet

      • Filtered payload

      • Raw payload

        Use template

        Extract

        Instant access to
        multiple streaming datasets

        • Block
        • Blocks with receipts
        • Transactions
        • Logs
        • Receipts
        • Traces (trace_block)
        • Traces (debug_trace)
        • Block with receipts + debug_trace
        • Block with receipts + trace_block

        Transform

        Tools to turn raw data
        into your data

        • 01
        • 02
        • 03
        • 04
        • 05
        • 06
        • 07
        • 08
        • 09
        • 10
        • 11
        • 12
        • 13
        • 14
        • 15
        • 16
        • 17
        • 18
        • 19
        • 20
        • 21
        • 22
        • 23
        • 24
        • 25
        • 26
        • 27
        • 28
        • 29
        • 30
          function main(data) {
          try {
          var data = data.streamData;
          const addresses = [
          "0x56220b7e25c7d0885159915cdebf5819f2090f57",
          "0x351e1b4079cf180971025a3b35dadea1d809de26",
          "0xa61551e4e455edebaa7c59f006a1d2956d46eecc"
          ];
          var addressSet = new Set(addresses.map(address => address.toLowerCase()));
          var paddedAddressSet = new Set(addresses.map(address => '0x' + address.toLowerCase().slice(2).padStart(64, '0')));
          var matchingTransactions = [];
          var matchingReceipts = [];
          data.block.transactions.forEach(transaction => {
          let transactionMatches = (transaction.from && addressSet.has(transaction.from.toLowerCase())) ||
          (transaction.to && addressSet.has(transaction.to.toLowerCase()));
          if (transactionMatches) {
          matchingTransactions.push(transaction);
          }
          });
          data.receipts.forEach(receipt => {
          let receiptMatches = receipt.logs && receipt.logs.some(log =>
          log.topics && log.topics.length > 1 &&
          (paddedAddressSet.has(log.topics[1]) || (log.topics.length > 2 && paddedAddressSet.has(log.topics[2])))
          );
          if (receiptMatches) {
          matchingReceipts.push(receipt);
          }
          });
          if (matchingTransactions.length === 0 && matchingReceipts.length === 0) {
          return null;
          }
          return {
          transactions: matchingTransactions,
          receipts: matchingReceipts
          };
          } catch (e) {
          return {error: e.message};
          }
          }
        Raw payload
        Shape
        Needs transformation
        Size
        20.2MB
        Filtered payload
        Shape
        Valid payload shape
        Size
        1.2MB

        New!

        Filter and Transform your data exactly how you want, cut out what you don't, and optimize costs.

        Learn more

        BETA

        Key-Value Store lets you target and access dynamic lists and sets, updatable from anywhere natively within streams and API.

        Learn more
        walletStore
        <List>
        • 01
        • 02
        • 03
        • 04
        • 05
        • 06
        • 07
        • 08
        • 09
        • 10
        • 11
        • 12
        • 13
        • 14
        • 15
        • 16
        • 17
        • 18
        • 19
        • 20
        • 21
        • 22
        • 23
        • 24
        • 25
        • 26
        • 27
        • 28
        • 29
        • 30
          function main(data) {
          var matchingTransactions = [];
          function checkAddress(address) {
          let result = qnContainsListItem("walletStore", address);
          return result;
          }
          data.streamData.block.transactions.forEach(transaction => {
          let transactionMatches = (transaction.from && checkAddress(transaction.from)) ||
          (transaction.to && checkAddress(transaction.to));
          if (transactionMatches) {
          matchingTransactions.push(transaction);
          }
          });
          return matchingTransactions;
          }

        Load

        We focus on infrastructure,
        so you can focus on innovation

        PostgreSQL
        Amazon S3
        Webhook
        Snowflake
        Coming soon
        Coming soon
        Coming soon
        Coming soon
        Coming soon

        Guaranteed delivery to your
        Webhook, S3 Bucket, Snowflake or Postgres.

        OR

        Use Functions to enrich, process, and run custom code on our scalable serverless platform, enabling workflow creation without additional services.

        Learn more about Functions
        • Filtered payload

          • 01
          • 02
          • 03
          • 04
          • 05
          • 06
          • 07
          • 08
          • 09
          • 10
          • 11
          • 12
          • 13
          • 14
          • 15
          • 16
          • 17
          • 18
          • 19
          • 20
          • 21
          • 22
          • 23
          • 24
          • 25
          • 26
          • 27
          • 28
          • 29
          • 30
            function main(data) {
            try {
            var data = data.streamData;
            const addresses = [
            "0x56220b7e25c7d0885159915cdebf5819f2090f57",
            "0x351e1b4079cf180971025a3b35dadea1d809de26",
            "0xa61551e4e455edebaa7c59f006a1d2956d46eecc"
            ];
            var addressSet = new Set(addresses.map(address => address.toLowerCase()));
            var paddedAddressSet = new Set(addresses.map(address => '0x' + address.toLowerCase().slice(2).padStart(64, '0')));
            var matchingTransactions = [];
            var matchingReceipts = [];
            data.block.transactions.forEach(transaction => {
            let transactionMatches = (transaction.from && addressSet.has(transaction.from.toLowerCase())) ||
            (transaction.to && addressSet.has(transaction.to.toLowerCase()));
            if (transactionMatches) {
            matchingTransactions.push(transaction);
            }
            });
            data.receipts.forEach(receipt => {
            let receiptMatches = receipt.logs && receipt.logs.some(log =>
            log.topics && log.topics.length > 1 &&
            (paddedAddressSet.has(log.topics[1]) || (log.topics.length > 2 && paddedAddressSet.has(log.topics[2])))
            );
            if (receiptMatches) {
            matchingReceipts.push(receipt);
            }
            });
            if (matchingTransactions.length === 0 && matchingReceipts.length === 0) {
            return null;
            }
            return {
            transactions: matchingTransactions,
            receipts: matchingReceipts
            };
            } catch (e) {
            return {error: e.message};
            }
            }
        • Filtered payload

          • 01
          • 02
          • 03
          • 04
          • 05
          • 06
          • 07
          • 08
          • 09
          • 10
          • 11
          • 12
          • 13
          • 14
          • 15
          • 16
          • 17
          • 18
          • 19
          • 20
          • 21
          • 22
          • 23
          • 24
          • 25
          • 26
          • 27
          • 28
          • 29
          • 30
            function main(data) {
            var matchingTransactions = [];
            function checkAddress(address) {
            let result = qnContainsListItem("walletStore", address);
            return result;
            }
            data.streamData.block.transactions.forEach(transaction => {
            let transactionMatches = (transaction.from && checkAddress(transaction.from)) ||
            (transaction.to && checkAddress(transaction.to));
            if (transactionMatches) {
            matchingTransactions.push(transaction);
            }
            });
            return matchingTransactions;
            }
        • Filtered payload

          • 01
          • 02
          • 03
          • 04
          • 05
          • 06
          • 07
          • 08
          • 09
          • 10
          • 11
          • 12
          • 13
          • 14
          • 15
          • 16
          • 17
          • 18
          • 19
          • 20
          • 21
          • 22
          • 23
          • 24
          • 25
          • 26
          • 27
          • 28
          • 29
          • 30
            function main(data) {
            try {
            var data = data.streamData;
            const addresses = [
            "0x56220b7e25c7d0885159915cdebf5819f2090f57",
            "0x351e1b4079cf180971025a3b35dadea1d809de26",
            "0xa61551e4e455edebaa7c59f006a1d2956d46eecc"
            ];
            var addressSet = new Set(addresses.map(address => address.toLowerCase()));
            var paddedAddressSet = new Set(addresses.map(address => '0x' + address.toLowerCase().slice(2).padStart(64, '0')));
            var matchingTransactions = [];
            var matchingReceipts = [];
            data.block.transactions.forEach(transaction => {
            let transactionMatches = (transaction.from && addressSet.has(transaction.from.toLowerCase())) ||
            (transaction.to && addressSet.has(transaction.to.toLowerCase()));
            if (transactionMatches) {
            matchingTransactions.push(transaction);
            }
            });
            data.receipts.forEach(receipt => {
            let receiptMatches = receipt.logs && receipt.logs.some(log =>
            log.topics && log.topics.length > 1 &&
            (paddedAddressSet.has(log.topics[1]) || (log.topics.length > 2 && paddedAddressSet.has(log.topics[2])))
            );
            if (receiptMatches) {
            matchingReceipts.push(receipt);
            }
            });
            if (matchingTransactions.length === 0 && matchingReceipts.length === 0) {
            return null;
            }
            return {
            transactions: matchingTransactions,
            receipts: matchingReceipts
            };
            } catch (e) {
            return {error: e.message};
            }
            }

        "The outstanding real-time performance helps us deliver the freshest analytics to our users – key to maintaining our competitive edge in the industry."

        Nirmal

        Head of Engineering

        Scalable, serverless, simple. 
        See for yourself in seconds.

        Create a free Stream

        60% Cheaper

        Experience substantial savings compared to conventional methods when handling the same load by using more efficient resource utilization.

        7x Faster

        Achieve faster backfill speeds over traditional backfilling techniques, significantly reducing the time required for data synchronization.

        ~80hrs Saved

        Drastically reduce data engineering hours with automatic routing to your data warehouses, streamlining your workflows in seconds.

        Who wins the World Cup?Research, stream, and trade on Hyperliquid

        Learn more     
        • Infrastructure
          Core API Icon
          Core RPC APIBlockchain data access
          Clusters
          Dedicated ClustersDedicated backends
          IPFS Icon
          IPFSGateways and pinning
          VaaS Validator
          Validator as a ServiceRun your own validator
          View Infrastructure
          Real-Time Data
          QuickStream Logo
          StreamsReal-time data pipelines
          Webhooks
          WebhooksInstant blockchain alerts
          Solana gRPC
          Solana gRPCBlazing fast Solana data
          View Real-Time Data
          Indexed Data
          SQL Explorer
          SQL ExplorerQuery onchain data with SQL
          AIagents
          Agent IdentityERC-8004 explorer and APIs
          Blockbook
          BlockbookWallet data via JSON-RPC
          metaplex-digital-asset
          Metaplex Digital Asset APISolana digital assets
          Ordinals JSON-RPC API
          Ordinals and Runes APIBitcoin inscriptions via JSON-RPC
          View Indexed Data
          Trading & Defi
          Solana Validator
          Solana ValidatorZero-fee staking rewards
          Monad Nav Icon - Outline
          Monad ValidatorReliable staking rewards
          Swap API
          Swap APIProduction trading workloads
          View Trading & Defi
        • Featured
          Wrench Icon SVG
          Builder's GuideBlueprints for building on blockchain
          Backfill Icon
          One-click BackfillsThe easiest way to backfill blockchain data
          Use Cases
          DeFi
          DeFi
          Financial
          Financial
          Trading
          Trading Firms
          Gaming
          Gaming
          Stablecoin Icon
          Stablecoins
          Wallets
          Wallets
          Magic Icon (Nav)
          AI Blockchain
          Segment
          Startups
          Startups
          Enterprise
          Enterprises
          Integrations & Services
          partners nav icon
          Partner Ecosystem
          Pro Services
          Pro Services
        • Developer Tools
          Wrench Icon SVG
          Admin APIProgrammatic account management
          Quicknode SDK
          Quicknode CLI
          Learn
          Documentation icon colored
          DocumentationIntegrate with Quicknode product's API
          Guides Icon
          GuidesLearn about different ways to get started with Quicknode
          SampleApps
          Sample AppsExplore example projects you can clone and ship
          Courses
          CoursesLearn blockchain development step by step
          Utilities
          Faucet icon
          FaucetFund your testnet wallet for free
          Gas Tracker icon
          Gas TrackerMonitor live gas fees across networks
        • QN
          About Us
          Blog
          Blog
          Case Studies Icon
          Case Studies
          Careers icon
          Careers
          Phone icon gray
          Contact Us
          Referral icon gray
          Referral Program
        • Agents
        • Pricing
          Sign inCreate account
        Agents
        Pricing

        Sign inCreate account
        Infrastructure
        Core API Icon
        Core RPC APIBlockchain data access
        Clusters
        Dedicated ClustersDedicated backends
        IPFS Icon
        IPFSGateways and pinning
        VaaS Validator
        Validator as a ServiceRun your own validator
        View Infrastructure
        Real-Time Data
        QuickStream Logo
        StreamsReal-time data pipelines
        Webhooks
        WebhooksInstant blockchain alerts
        Solana gRPC
        Solana gRPCBlazing fast Solana data
        View Real-Time Data
        Indexed Data
        SQL Explorer
        SQL ExplorerQuery onchain data with SQL
        AIagents
        Agent IdentityERC-8004 explorer and APIs
        Blockbook
        BlockbookWallet data via JSON-RPC
        metaplex-digital-asset
        Metaplex Digital Asset APISolana digital assets
        Ordinals JSON-RPC API
        Ordinals and Runes APIBitcoin inscriptions via JSON-RPC
        View Indexed Data
        Trading & Defi
        Solana Validator
        Solana ValidatorZero-fee staking rewards
        Monad Nav Icon - Outline
        Monad ValidatorReliable staking rewards
        Swap API
        Swap APIProduction trading workloads
        View Trading & Defi
        Featured
        Wrench Icon SVG
        Builder's GuideBlueprints for building on blockchain
        Backfill Icon
        One-click BackfillsThe easiest way to backfill blockchain data
        Use Cases
        DeFi
        DeFi
        Financial
        Financial
        Trading
        Trading Firms
        Gaming
        Gaming
        Stablecoin Icon
        Stablecoins
        Wallets
        Wallets
        Magic Icon (Nav)
        AI Blockchain
        Segment
        Startups
        Startups
        Enterprise
        Enterprises
        Integrations & Services
        partners nav icon
        Partner Ecosystem
        Pro Services
        Pro Services
        Developer Tools
        Wrench Icon SVG
        Admin APIProgrammatic account management
        Quicknode SDK
        Quicknode CLI
        Learn
        Documentation icon colored
        DocumentationIntegrate with Quicknode product's API
        Guides Icon
        GuidesLearn about different ways to get started with Quicknode
        SampleApps
        Sample AppsExplore example projects you can clone and ship
        Courses
        CoursesLearn blockchain development step by step
        Utilities
        Faucet icon
        FaucetFund your testnet wallet for free
        Gas Tracker icon
        Gas TrackerMonitor live gas fees across networks
        QN
        About Us
        Blog
        Blog
        Case Studies Icon
        Case Studies
        Careers icon
        Careers
        Phone icon gray
        Contact Us
        Referral icon gray
        Referral Program