Any part of Solana history, decoded, in Parquet files.
Select a program, or send your own filter and Anchor IDL. One machine scans the archive for your job only. You get Parquet files with a column for each argument, account and event field.
$2 for each TB of archive scanned (launch price; list price $5). One recent epoch costs $4. No account. Pay in USDC on Solana.
# 1. Ask for a price. You pay nothing yet. $ curl -X POST https://trawl.run/scan \ -d '{"preset":"pumpfun","start_epoch":1058,"end_epoch":1058}' ← 402 Payment Required "price": "4" # 2. Send it again with an x402 payment. The scan starts. ← 202 Accepted "job_id": "job_7Hq…" # 3. Download the files, or query them in place. $ wget -i https://trawl.run/job/job_7Hq…/urls D SELECT mint, sum(sol_amount) / 1e9 AS sol FROM 'ev-trade_event-*.parquet' GROUP BY mint ORDER BY sol DESC LIMIT 10;
Solana history is public. It is not easy to read.
The data is free. To get one clean table from it, you need a large toolchain, a correct decoder and a machine next to the archive.
600+ TB
The archive is too large to download
The Old Faithful archive keeps every block since genesis. Each new epoch adds about 0.7 TB.
1
RPC gives one transaction for each request
A busy program has millions of transactions. A backfill over RPC is a long loop against rate limits.
Raw
Bytes, for a program nobody decoded
A SQL warehouse is fast for the programs it decoded. For your program, it has raw bytes.
Rent servers, ask an agent, or pay for the scan.
Rent big servers
A bigger server is faster, not cheaper. It bills each month, also when it is idle. You still build the engine, write the decoder and watch each run.
Compare with servers →Ask an AI agent to build it
The agent writes the code fast. The traps give no error: a scan that reads 709 GB and writes zero rows looks like a slow scan. Each test is an hour of real archive.
Compare with agents →Pay for the scan
Send one request and get a firm price. The traps are already fixed and tested on real epochs. Your AI agent can pay too, with x402.
Get a price →Four steps. You touch two of them.
Select
A preset, or your own filter and Anchor IDL. Then an epoch range.
Get a firm price
The quote reads the exact size of each epoch file. The price does not change later.
Pay
USDC on Solana, through x402. A script or an AI agent can pay with no human step.
Download
Parquet files in R2. Use
wget -i, or query them in place with DuckDB.
Tables you can query, not bytes you must decode.
- One table for each instruction and each event in the IDL, with one column for each argument, named account and field.
- Inner instructions are included. A Raydium swap that Jupiter routes is in the Raydium result.
- One event is one row. Programs that write each event two ways give one row, not two.
- Large integers stay exact.
u128is a decimal string. A lamport amount never loses digits. - Nothing is dropped. An instruction the IDL does not name keeps its raw bytes.
# matched instructions, raw bytes part-t00-0000.parquet # one file set for each IDL instruction ix-buy-t00-0000.parquet ix-sell-t00-0000.parquet ix-create_v2-t01-0000.parquet # one file set for each IDL event ev-trade_event-t00-0000.parquet ev-create_event-t02-0000.parquet … D DESCRIBE 'ev-trade_event-*.parquet'; slot UBIGINT tx_index UINTEGER signature VARCHAR success BOOLEAN fee UBIGINT program_id VARCHAR … log_index UINTEGER mint VARCHAR sol_amount UBIGINT token_amount UBIGINT is_buy BOOLEAN user VARCHAR … field_fee UBIGINT …
21 programs, ready to scan.
Each preset is a program id checked on chain and an IDL checked against real transactions. Programs marked raw are not Anchor programs: you get the raw instruction bytes. For any other program, send its id and its IDL.
Aggregator
Perpetuals
Lending
Order book
Limit order and DCA
Get a firm price now.
You pay only when you send the job. A failed job gives you a credit for a free re-run.