Filter Structure
Filters are JSON objects with the following structure:Field Paths
Use dot notation to access nested fields in your data:status- Top-level fielduser.email- Nested fieldtransaction.from_address- Blockchain transaction fieldpayload.metadata.timestamp- Deeply nested field
Comparison Operators
Equals (=)
Match exact values.
- Filter by specific blockchain
- Match exact addresses
- Filter by transaction type
Not Equals (!=)
Exclude specific values.
- Exclude failed transactions
- Filter out specific addresses
- Remove test data
Greater Than (>)
Match values greater than the specified value.
- Filter by block number ranges
- Minimum transaction values
- Time-based filtering
Greater Than or Equal (>=)
Match values greater than or equal to the specified value.
- Minimum thresholds
- Starting from a specific block
- Value ranges (inclusive)
Less Than (<)
Match values less than the specified value.
- Maximum thresholds
- Filter small transactions
- Gas optimization analysis
Less Than or Equal (<=)
Match values less than or equal to the specified value.
- Maximum thresholds (inclusive)
- Confirmation tracking
- Value caps
Special Operators
Exists
Check if a field exists or doesn’t exist in the data. Check if field exists:- Filter contract creations (no
to_address) - Exclude failed transactions (no
errorfield) - Find records with optional fields
In
Check if a value matches any value in an array or data source. Using an array of values:- Filter multiple blockchains
- Whitelist addresses
- Match multiple statuses
- Check against large lists (with data sources)
Compound Filters
Combine multiple conditions with AND/OR logic.AND Logic
All conditions must be true.OR Logic
At least one condition must be true.Nested AND/OR
Combine AND and OR logic for complex queries.Complete Examples
Example 1: DeFi Swap Monitoring
Monitor large swaps on Uniswap V3:Example 2: NFT Transfer Tracking
Track NFT transfers for specific collections:Example 3: Multi-Chain Whale Watching
Monitor large transactions across multiple chains:Example 4: Failed Transaction Analysis
Find failed transactions with high gas:Best Practices
- Be specific: Use the most restrictive filters possible to reduce data transfer
- Use IN for multiple values: More efficient than multiple OR conditions for the same field
- Combine with EXISTS: Check field existence before comparing values
- Test incrementally: Start with simple filters and add complexity gradually
- Monitor performance: Complex nested filters may impact latency
Related Documentation
Websocket Streams
Use filters with websocket streams
Stream Transformations
Use filters with stream transformations