blocks
10 columnsOne row per Stellar ledger, with protocol version, fee pool and total coin supply.
stellar/blocks<start_ledger>_<end_ledger>.parquet50 ledgers per fileThe whole Stellar network as flat Parquet: ledgers, transactions, operations, payments, transfers, effects, DEX trades, claimable balances and liquidity pools.
Every indexed Stellar topic, as twelve flat Parquet tables at ledger resolution: blocks, transactions, operations, payments, transfers, effects, effect arguments, balance effects, trade effects, claimable balance effects, liquidity pool effects and liquidity pool trade effects.
Stellar models activity in three layers — a transaction contains operations, and each operation emits effects. The schema keeps all three, so you can work at whichever level your question needs and join between them on tx_hash, operation_index and effect_index.
One row per Stellar ledger, with protocol version, fee pool and total coin supply.
stellar/blocks<start_ledger>_<end_ledger>.parquet50 ledgers per fileOne row per Stellar transaction, with fee account, memo, operation count and success.
stellar/transactions<start_ledger>_<end_ledger>.parquet50 ledgers per fileOne row per operation, with its type and a JSON details blob carrying the type-specific fields.
stellar/operations_tx<start_ledger>_<end_ledger>.parquet50 ledgers per fileOne row per payment operation, including path payments, with both currency sides, issuers and the full conversion path.
stellar/payments_tx<start_ledger>_<end_ledger>.parquet50 ledgers per fileOne row per value movement with both currency sides, classified by direction. Amounts here are floats, unlike most other tables.
stellar/transfers_tx<start_ledger>_<end_ledger>.parquet50 ledgers per fileOne row per effect, the ledger-level consequence of an operation, with a JSON details blob.
stellar/effects_tx<start_ledger>_<end_ledger>.parquet50 ledgers per fileEffects flattened to one row per named argument, for querying effect fields without parsing JSON.
stellar/effect_arguments_tx<start_ledger>_<end_ledger>.parquet50 ledgers per fileOne row per balance change, with the currency and issuer. Amount here is raw stroops, unlike most other tables.
stellar/balance_effects_tx<start_ledger>_<end_ledger>.parquet50 ledgers per fileOne row per order-book trade on the Stellar DEX, with both sides, issuers, the offer id and the execution price.
stellar/trade_effects_tx<start_ledger>_<end_ledger>.parquet50 ledgers per fileOne row per claimable balance effect, with the balance id, sponsor, claimant and amount.
stellar/claimable_balance_effects<start_ledger>_<end_ledger>.parquet50 ledgers per fileOne row per liquidity pool deposit or withdrawal, with the pool's full reserve state at the time.
stellar/liquidity_pool_effects<start_ledger>_<end_ledger>.parquet50 ledgers per fileOne row per AMM swap against a Stellar liquidity pool, with both sides and the pool's reserve state at the time.
stellar/liquidity_pool_trade_effects<start_ledger>_<end_ledger>.parquet50 ledgers per fileblocks10 columnsOne row per Stellar ledger, with protocol version, fee pool and total coin supply.transactions18 columnsOne row per Stellar transaction, with fee account, memo, operation count and success.operations_tx13 columnsOne row per operation, with its type and a JSON details blob carrying the type-specific fields.payments_tx46 columnsOne row per payment operation, including path payments, with both currency sides, issuers and the full conversion path.transfers_tx30 columnsOne row per value movement with both currency sides, classified by direction. Amounts here are floats, unlike most other tables.effects_tx20 columnsOne row per effect, the ledger-level consequence of an operation, with a JSON details blob.effect_arguments_tx21 columnsEffects flattened to one row per named argument, for querying effect fields without parsing JSON.balance_effects_tx25 columnsOne row per balance change, with the currency and issuer. Amount here is raw stroops, unlike most other tables.trade_effects_tx41 columnsOne row per order-book trade on the Stellar DEX, with both sides, issuers, the offer id and the execution price.claimable_balance_effects28 columnsOne row per claimable balance effect, with the balance id, sponsor, claimant and amount.liquidity_pool_effects31 columnsOne row per liquidity pool deposit or withdrawal, with the pool's full reserve state at the time.liquidity_pool_trade_effects43 columnsOne row per AMM swap against a Stellar liquidity pool, with both sides and the pool's reserve state at the time.Send this dataset’s full schema to an assistant and ask it anything. It reads the plain-text brief first, so the answer comes from the real column list rather than a guess.
Opens a new chat with the question filled in. Nothing about you is sent to Bitquery, and the assistant sees only the public brief.
Parquet files, delivered as signed download links by email after payment, in this layout:
# blocks: 50 ledgers per file stellar/blocks<start_ledger>_<end_ledger>.parquet # transactions: 50 ledgers per file stellar/transactions<start_ledger>_<end_ledger>.parquet # operations_tx: 50 ledgers per file stellar/operations_tx<start_ledger>_<end_ledger>.parquet # payments_tx: 50 ledgers per file stellar/payments_tx<start_ledger>_<end_ledger>.parquet # transfers_tx: 50 ledgers per file stellar/transfers_tx<start_ledger>_<end_ledger>.parquet # effects_tx: 50 ledgers per file stellar/effects_tx<start_ledger>_<end_ledger>.parquet # effect_arguments_tx: 50 ledgers per file stellar/effect_arguments_tx<start_ledger>_<end_ledger>.parquet # balance_effects_tx: 50 ledgers per file stellar/balance_effects_tx<start_ledger>_<end_ledger>.parquet # trade_effects_tx: 50 ledgers per file stellar/trade_effects_tx<start_ledger>_<end_ledger>.parquet # claimable_balance_effects: 50 ledgers per file stellar/claimable_balance_effects<start_ledger>_<end_ledger>.parquet # liquidity_pool_effects: 50 ledgers per file stellar/liquidity_pool_effects<start_ledger>_<end_ledger>.parquet # liquidity_pool_trade_effects: 50 ledgers per file stellar/liquidity_pool_trade_effects<start_ledger>_<end_ledger>.parquet
Every window includes all 12 tables and 326 columns. Only the time range changes.
Twelve Parquet tables with 326 documented columns in total: blocks, transactions, operations_tx, payments_tx, transfers_tx, effects_tx, effect_arguments_tx, balance_effects_tx, trade_effects_tx, claimable_balance_effects, liquidity_pool_effects and liquidity_pool_trade_effects. Covering the most recent month to yesterday, refreshed daily.
Most amount columns are exact rational strings: numerator, slash, denominator. Stellar uses 7 decimal places, so the denominator is normally 10000000 and the value above is 2.9377351 XLM. Parse and divide rather than casting the string to a float. Keeping the fraction means no precision is lost at export.
No, and this is the trap worth knowing before you aggregate. Three representations appear: rational strings in payments_tx, trade_effects_tx, claimable_balance_effects, the liquidity pool tables, and the fee and reserve columns of blocks and transactions; plain floats in transfers_tx (amount_from, amount_to); and raw stroops as an integer string in balance_effects_tx (amount), where 7481895 means 0.7481895. Check the table before summing, and never add columns across tables without converting first.
Yes. transactions carries success, and payments_tx carries its own success flag at operation level — a transaction can succeed while an individual path payment fails. Filter success = 1 on whichever table you are aggregating.
A transaction holds one or more operations, and each operation emits zero or more effects. Join transactions to operations_tx on tx_hash, and operations to the effect tables on tx_hash plus operation_index. effect_index orders effects within an operation, and order gives their sequence within the ledger.
details and liquidity_pool_details are JSON-encoded strings you can parse directly. The path column in payments_tx is NOT JSON: it is Ruby hash-inspect format using => instead of a colon, for example [{"asset_code"=>"YBX"}]. A standard JSON parser will reject it — convert => to : first, or parse it with a permissive reader.
Bitquery address labels for the account in the adjacent column — an exchange or anchor name where we have one. They are frequently empty, so treat them as a bonus for entity resolution rather than a field you can rely on being populated.
Yes, and they are distinct tables because they are distinct mechanisms. trade_effects_tx holds order-book trades with an offer_id, while liquidity_pool_trade_effects holds AMM swaps with a liquidity_pool_id and the pool's reserves at the time. liquidity_pool_effects covers deposits and withdrawals rather than swaps.
As flat Parquet files under a stable S3 layout, one prefix per table, with a JSON manifest listing every file and its sha256. Signed HTTPS links are emailed to you once the files are prepared.
Refreshed daily with T+1 latency. A purchase made today includes everything up to yesterday.
Yes. Every table links to a public sample file with real records, and the sample bucket holds full Parquet files you can load directly. No email address required.
Every swap and every pool event across every indexed DEX program on Solana, in one schema, decoded and USD-priced at block time.
Polymarket fills, position splits, merges and payouts, and market results on Polygon since September 2025, with market titles, outcomes and USD values.
Every bonding-curve trade, token creation, migration and pool on Pump.fun, plus per-token OHLCV, decoded and USD-priced.
Tell us the chain, tables and date range.