DataStore/meteora-dlmm-historical-data
Meteora DLMM Historical Data Decoded Solana mainnet instructions and events from Meteora DLMM (Dynamic Liquidity Market Maker), a concentrated-liquidity DEX where liquidity sits in discrete price bins and the fee rate rises with volatility. 74 tables, 59,575 rows, one row per decoded instruction or event. Program ID LBUZKhRxPF3XUpBCjp4YzTKgLccjZhTSDM9YuVaPwxo. This is a free sample from datastore.sh, which publishes the complete history as versioned Parquet. Read… See the full description on the dataset page: https://huggingface.co/datasets/DataStore/meteora-dlmm-historical-data.
Meteora DLMM Historical Data
Decoded Solana mainnet instructions and events from Meteora DLMM (Dynamic Liquidity Market Maker), a concentrated-liquidity DEX where liquidity sits in discrete price bins and the fee rate rises with volatility.
74 tables, 59,575 rows, one row per decoded instruction or event. Program ID LBUZKhRxPF3XUpBCjp4YzTKgLccjZhTSDM9YuVaPwxo.
This is a free sample from datastore.sh, which publishes the complete history as versioned Parquet.
Read this before you analyse it
The sample is capped per table, not per time window. 56 of the 74 tables stop at exactly 1,000 rows. The cap binds hardest on the busiest instructions, so each table covers however long it took to accumulate 1,000 rows — swap_event spans 17 seconds of blocks (2026-06-10 09:38:33 to 09:38:50), while rare instructions like close_bin_array (11 rows) or initialize_preset_parameter (4 rows) are complete over months. Row counts across tables are therefore not comparable as activity measures, and nothing here supports volume trends or backtests. Use it to learn the schema and build a parser.
Swaps appear in two places. The swap* tables are decoded instructions; swap_event is the self-CPI event the program logs. They are different row sets — don't union them. There are also versioned variants (swap / swap2, swap_exact_out / swap_exact_out2), which are separate on-chain instructions, not duplicates.
One transaction can log several swap events. In swap_event, 1,000 rows come from 943 transactions: 891 logged one event, 47 logged two, 5 logged three. Group by sig before summing amounts or you will double-count routed trades.
Amounts are raw base units. Divide by 10^decimals of the mint (9 for SOL, 6 for USDC). No field is decimal-adjusted.
`fee_bps` is scaled, not literal basis points. Values start at 100,000 and run up through 152,018 in this sample — treat it as a fixed-point field and calibrate against fee / amount_in before quoting a percentage.
What the sample actually contains
From swap_event (1,000 rows, 114 distinct lb_pair pools):
- Direction is lopsided: 752 swaps are X→Y, 248 are Y→X.
- Most swaps barely move price: 36.2% cross zero bins (
start_bin_id == end_bin_id), the mean is 0.85 bins and the maximum is 6. Concentrated liquidity is doing its job at this size. - Fees: every row charges a
fee, 98.1% also pay aprotocol_fee, but only 12.0% carry ahost_fee— integrator referral fees are the exception, not the rule.
Columns shared by every table
Order events within a transaction by slot, tx_index, then ix_path.
Loading
from datasets import load_dataset
ds = load_dataset("DataStore/meteora-dlmm-historical-data", "meteora_dlmm_swap_event")Each table is a separate config named after its file. With pandas:
import pandas as pd
url = "https://huggingface.co/datasets/DataStore/meteora-dlmm-historical-data/resolve/main/meteora_dlmm_swap_event.csv"
df = pd.read_csv(url)Worth trying
Measure realised fee rate per pool as fee / amount_in and check how it tracks bins crossed — the dynamic fee should rise with volatility. Compare liquidity added through add_liquidity_by_strategy against add_liquidity_by_weight to see which shaping LPs prefer. Join place_limit_order to cancel_limit_order on lb_pair to see how much resting DLMM liquidity is ever filled.
Tables
License & citation
CC BY-SA 4.0 — share and adapt, including commercially, with attribution and alike licensing.
datastore.sh (2026). Meteora DLMM Historical Data (Sample). https://datastore.sh/datasets/meteora-dlmm
