How to Verify Dune Query Results
The core of verifying Dune query results involves three things: confirming successful execution, checking data timeliness, and cross-referencing key data with a blockchain explorer. Without these three layers, you might be making decisions based on outdated or incorrect data.
A leading global cryptocurrency platform,suitable for both beginners and experienced traders.
New user benefit: 20% off trading fees upon registration!!
Step 1: Confirm the Query Executed Successfully with No Errors
Each query execution on Dune has an execution_id and a status—pending, success, or failure. Seeing a "success" status is just the starting point; you also need to confirm that the execution didn't yield incomplete results due to timeout or resource limitations.
How to do it:
Check execution status: If using the API, call GET /v1/execution/{execution_id}/status to confirm it's success. If on the web interface, look at the top right or bottom of the page for red error messages like "Query execution failed" or "Timeout."
Check execution time: Dune's free tier has a timeout limit of 2 minutes, while paid engines (Medium/Large) have 30 minutes. If the query took the full limit to return results, the data may be incomplete—especially for queries covering a large time range or complex aggregations.
Confirm results aren't truncated: Dune has an internal maximum query result size limit (currently 32GB). If the result exceeds this, storage will be truncated. Without the allow_partial_results=true parameter, fetching results will throw an error. On the web, overly large results will show a "Partial Result" indication.
What counts as done: Execution status is "success," no red error messages, no partial result warning.
Step 2: Check Data Freshness – Is This the Latest Data?
Dune data has multiple layers with varying refresh characteristics, directly affecting the validity of results.
| Data Type | Refresh Characteristics | Handling When Data is Stale |
|---|---|---|
| Raw Data | Typically updates within about 2 minutes | Wait for official fix, or check status page for delay announcements |
| Curated Tables (e.g., dex.trades) | Depends on upstream data pipelines; delays exceeding 10 hours have occurred | Refer to execution time guidance in previous step |
| Dashboard Query Results | Results stored for 90 days. Popular dashboards auto-refresh hourly; cold dashboards may only refresh every 24 hours |
If you rely on curated tables like dex.trades, even if you click "Run" and it succeeds, the underlying pipeline delay can still cause issues.
How to do it:
Look at timestamps in results: Query results usually include block_time or date fields. Confirm the latest data date is close to the current time.
Check Dune's official status page: Visit status.dune.com to see if there are any data delay announcements. If the status page confirms a delay on a certain chain or table, a successful execution is meaningless—the data itself is old.
What counts as done: The latest timestamp in results is within a reasonable range, and the official status page shows no relevant delay announcements.
Step 3: Cross-Reference with a Blockchain Explorer – The Hardcore Verification
Dune's curated tables are built from raw data with high precision (automatic checks like deduplication, reorg handling, ABI verification), but cross-chain data or queries involving complex contract interactions can still go wrong. The most reliable method is to directly check a transaction or an address balance on a blockchain explorer (e.g., Etherscan, BscScan, or Solscan).
How to do it:
For a single transaction: Find a transaction hash (tx_hash) and amount in Dune results. Search that hash on the relevant chain's explorer and verify the value and to/from addresses match.
For an address balance: If Dune shows an address holding 1000 USDT, check that address's ERC-20 token balance on Etherscan to see if the numbers match.
For multi-protocol data: If data involves multiple protocols, note that Dune's price data (Prices table) may use different oracle sources. You can verify quotes on CoinGecko or Chainlink data sources to ensure consistency.
What counts as done: Randomly pick 2-3 key transactions or addresses for cross-check; data matches.
Common Failure Causes
Incorrect query logic: The most common cause. For example, mishandled LEFT JOINs leading to duplicate data, or hardcoded time ranges that don't pull automatically from the latest date. Before verifying, review the SQL logic to make sure it's not a human error.
Reorganized blocks not properly corrected: Dune has a re-org handling mechanism, but fixes aren't instant. If the queried data falls on blocks that were reorganized, curated table data will be updated in the next transformation cycle, during which results may be inaccurate.
A leading global cryptocurrency platform,suitable for both beginners and experienced traders.
New user benefit: 20% off trading fees upon registration!!
How to Confirm Verification Passed
After completing the three steps, you'll have a relatively clear judgment: query executed successfully, data timeliness is reasonable, and randomly sampled key data matches on-chain records. Before making investment or trading decisions, be sure to run through this three-level verification process; don't take a dashboard number at face value. If you're still uncertain, you can post on the Dune community forum or contact the dashboard author to confirm the query logic.
