Overview

Every canonical STX transfer event on Stacks. Sender, recipient, amount in microSTX, and the optional hex-encoded memo. Sourced directly from canonical L1 events — no decoder, no waiting.

Use the read API for dashboards and ad-hoc queries. Use parquet for historical analytics and warehouse loads.


Schema

Schema version v0. The canonical contract:

ColumnTypeNullableDescription
cursorstringno<block_height>:<event_index>
block_heightint64noCanonical Stacks block height
block_timestringnoISO-8601 UTC timestamp
tx_idstringnoParent transaction id
tx_indexint32noParent transaction position in block
event_indexint32noStreams event index in block
senderstringnoSTX sender address
recipientstringnoSTX recipient address
amountstringnomicroSTX as decimal string (u128)
memostringyesHex-encoded memo if present

Read API

GET /v1/datasets/stx-transfers

Filters: sender, recipient, from_block, to_block. Pagination: cursor.

curl "https://api.secondlayer.dev/v1/datasets/stx-transfers?sender=SP1...&limit=100"

Response shape:

{
  "events": [
    {
      "cursor": "189999:42",
      "block_height": 189999,
      "block_time": "2026-05-05T12:34:56.000Z",
      "tx_id": "0xabc...",
      "tx_index": 12,
      "event_index": 42,
      "sender": "SP1...",
      "recipient": "SP2...",
      "amount": "1000000",
      "memo": null
    }
  ],
  "next_cursor": "190001:7",
  "tip": { "block_height": 195000 }
}

Parquet

Parquet files are partitioned by 10,000-block range. The manifest lists every published file with row count and SHA-256.

Object prefix:

stacks-datasets/mainnet/v0/stx-transfers/data/block_height/<range>/data.parquet
stacks-datasets/mainnet/v0/stx-transfers/manifest/latest.json
stacks-datasets/mainnet/v0/stx-transfers/schema.json

DuckDB:

SELECT recipient, sum(amount::DECIMAL) AS total
FROM read_parquet(
  'https://pub-08fa583203de40b2b154e6a56624adc2.r2.dev/stacks-datasets/mainnet/v0/stx-transfers/data/block_height/*/data.parquet'
)
GROUP BY recipient
ORDER BY total DESC
LIMIT 20;

Freshness

/public/status.datasets[] includes a stx-transfers entry with latest_finalized_cursor, generated_at, and lag_blocks against the chain tip. Expect ~10K + 144 blocks of lag in steady state.