Dune Analytics Api
ASecurityDune Analytics API for blockchain data queries. Use for: (1) Discovering tables and inspecting schemas, (2) Executing/refreshing Dune queries, (3) SQL query optimization for Solana/EVM chains, (4) Understanding dex.trades vs dex_aggregator.trades, (5) Working with Solana transactions and log parsing, (6) Managing query parameters and results, (7) Uploading CSV/NDJSON data to Dune tables. Triggers on: Dune query, blockchain data, DEX trades, Solana transactions, on-chain analytics, query optim...
- 2 stars
- 0 votes
- 0 copies
- 0 views
- Added November 11, 2026
Works with
Security analysis
96/100- Installs packages at runtime which could introduce malicious dependencies
Pro scans all 9 files and shows the line behind each finding
npx -y skills add johnalbertini14-glitch/openclaw-skills --skill dune-analytics-api --agent claude-codeAre you the author of Dune Analytics Api?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/johnalbertini14-glitch-dune-analytics-api)---
name: dune-analytics-api
version: 1.0.0
description: "Dune Analytics API for blockchain data queries. Use for: (1) Discovering tables and inspecting schemas, (2) Executing/refreshing Dune queries, (3) SQL query optimization for Solana/EVM chains, (4) Understanding dex.trades vs dex_aggregator.trades, (5) Working with Solana transactions and log parsing, (6) Managing query parameters and results, (7) Uploading CSV/NDJSON data to Dune tables. Triggers on: Dune query, blockchain data, DEX trades, Solana transactions, on-chain analytics, query optimization, data upload, CSV upload, table discovery, find table, schema inspection."
homepage: https://github.com/LZ-Web3/dune-analytics-api-skills
metadata:
clawdbot:
emoji: "๐"
requires:
bins:
- python3
env:
- DUNE_API_KEY
primaryEnv: DUNE_API_KEY
files:
- "references/*"
---
# Dune Analytics API
A skill for querying and analyzing blockchain data via the [Dune Analytics](https://dune.com) API.
## Setup
```bash
pip install dune-client
```
Set `DUNE_API_KEY` via environment variable, `.env` file, or agent config.
## โ ๏ธ Usage Rules
1. **Read before writing SQL** โ Select and read the relevant reference files (see [Reference Selection](#reference-selection)) **before** writing any query. Do not skip this step.
2. **Prefer Private Queries** โ Try `is_private=True` first. Fall back to public if it fails (free plan), and notify the user.
3. **Don't create duplicates** โ Reuse/update existing queries unless explicitly asked to create new ones.
4. **Confirm before updating** โ Ask the user before modifying an existing query.
5. **Track credits** โ Report credits consumed after each execution. See [query-execution.md](references/query-execution.md#credits-tracking).
## Reference Selection
**Before writing any SQL, route to the correct reference file(s) based on your task:**
| Task involves... | Read this reference |
|-----------------|-------------------|
| Finding tables / inspecting schema / discovering protocols | [table-discovery.md](references/table-discovery.md) |
| Wallet / address tracking / router identification | [wallet-analysis.md](references/wallet-analysis.md) |
| Table selection / common table names | [common-tables.md](references/common-tables.md) |
| SQL performance / complex joins / array ops | [sql-optimization.md](references/sql-optimization.md) |
| API calls / execution / caching / parameters | [query-execution.md](references/query-execution.md) |
| Uploading CSV/NDJSON data to Dune | [data-upload.md](references/data-upload.md) |
If your task spans multiple categories, read **all** relevant files. Do not guess table names or query patterns โ the references contain critical details (e.g., specialized tables, anti-patterns) that are not covered in this overview.
## Quick Start
```python
from dune_client.client import DuneClient
from dune_client.query import QueryBase
import os
client = DuneClient(api_key=os.environ['DUNE_API_KEY'])
# Execute a query
result = client.run_query(query=QueryBase(query_id=123456), performance='medium', ping_frequency=5)
print(f"Rows: {len(result.result.rows)}")
# Get cached result (no re-execution)
result = client.get_latest_result(query_id=123456)
# Get/update SQL
sql = client.get_query(123456).sql
client.update_query(query_id=123456, query_sql="SELECT ...")
# Upload CSV data (quick, overwrites existing)
client.upload_csv(
data="col1,col2\nval1,val2",
description="My data",
table_name="my_table",
is_private=True
)
# Create table + insert (supports append)
client.create_table(
namespace="my_user",
table_name="my_table",
schema=[{"name": "col1", "type": "varchar"}, {"name": "col2", "type": "double"}],
is_private=True
)
import io
client.insert_data(
namespace="my_user",
table_name="my_table",
data=io.BytesIO(b"col1,col2\nabc,1.5"),
content_type="text/csv"
)
```
## Subscription Tiers
| Method | Description | Plan |
|--------|-------------|------|
| `run_query` | Execute saved query (supports `{{param}}`) | Free |
| `run_sql` | Execute SQL directly (no params) | Plus |
## Key Concepts
### dex.trades vs dex_aggregator.trades
| Table | Use Case | Volume |
|-------|----------|--------|
| `dex.trades` | Per-pool analysis | โ ๏ธ Inflated ~30% (multi-hop counted multiple times) |
| `dex_aggregator.trades` | User/wallet analysis | Accurate |
> โ ๏ธ **For wallet/address analysis**, use `dex_aggregator.trades` with `tx_to` matching router addresses from `dune.lz_web3.dataset_crypto_wallet_router`. Do **not** use `labels.all` for wallet router lookups. See [wallet-analysis.md](references/wallet-analysis.md) for full patterns.
Solana has no `dex_aggregator_solana.trades`. Dedupe by `tx_id`:
```sql
SELECT tx_id, MAX(amount_usd) as amount_usd
FROM dex_solana.trades
GROUP BY tx_id
```
### Data Freshness
| Layer | Delay | Example |
|-------|-------|---------|
| Raw | < 1 min | `ethereum.transactions`, `solana.transactions` |
| Decoded | 15-60 sec | `uniswap_v3_ethereum.evt_Swap` |
| Curated | ~1 hour+ | `dex.trades`, `dex_solana.trades` |
Query previous day's data after **UTC 12:00** for completeness.
## References
Detailed documentation is organized in the `references/` directory:
| File | Description |
|------|-------------|
| [table-discovery.md](references/table-discovery.md) | Table discovery: search tables by name, inspect schema/columns, list schemas and uploads |
| [query-execution.md](references/query-execution.md) | API patterns: execute, update, cache, multi-day fetch, credits tracking, subqueries |
| [common-tables.md](references/common-tables.md) | Quick reference of commonly used tables: raw, decoded, curated, community data |
| [sql-optimization.md](references/sql-optimization.md) | SQL optimization: CTE, JOIN strategies, array ops, partition pruning |
| [wallet-analysis.md](references/wallet-analysis.md) | Wallet tracking: Solana/EVM queries, multi-chain aggregation, fee analysis |
| [data-upload.md](references/data-upload.md) | Data upload: CSV/NDJSON upload, create table, insert data, manage tables, credits |
Files in this skill
- README.md
- SKILL.md
- _meta.json
- references/common-tables.md
- references/data-upload.md
- references/query-execution.md
- references/sql-optimization.md
- references/table-discovery.md
- references/wallet-analysis.md
Attribution
Related skills
View all in data โComments
Loading commentsโฆ
Newsletter
Get the weekly list of safe new skills, and the ones we pulled.