BitqueryBitqueryData Store
Tron logoTronTransfers

TRON Transfers

Every TRX, TRC-10 and TRC-20 transfer on TRON since June 2018, one row per transfer, valued in USD where a price exists.

Coverage
Jun 25, 2018→ Oct 14, 2026 · yesterday
Rows
≈13Brows · estimate
Size
≈1.4 TBParquet · estimate
Table
1transfers
Columns
43typed
Refresh: dailyCoverage ends yesterday, UTC

Overview

We decode TRON transfers from the chain ourselves: native TRX, TRC-10 and TRC-20 tokens, including TRX that contracts move in internal calls. Each row carries the token's name, symbol and exact decimals, and a USD value for TRX and TRC-20 tokens from our own hourly price series, so there is no price feed to join. About 13.3 billion rows, from block 342 on 25 June 2018 to yesterday.

The query most buyers run first is flow for one token: filter Transfer_Currency_SmartContract to the contract, then group sender and receiver. Filter Transfer_Currency_Native instead to get base-asset TRX movement on its own. Amounts are decimal strings, so cast with care, and join on contract addresses because symbols repeat across tokens.

Use cases

  • USDT flow analysis for any TRON address
  • Token balance history for any address, rebuilt from its transfers
  • Exchange deposit and withdrawal attribution
  • Native TRX movement separated from token movement

Table

43 columns · free sample for the table

transfers

43 columns

One row per TRX, TRC-10 or TRC-20 transfer, with sender, receiver, token metadata and a USD value where a price exists.

tron/transfers<start_block>_<end_block>.parquet50 blocks per file, sorted ascending
Browse columns Sample fileSample updated Jan 20, 2026

Schema reference

copies a column name
43 columns
ColumnTypeDescription
Block3
Block_NumberInt64Block height
Block_TimeDateTimeBlock timestamp, UTC
Block_DateDateUTC date of the block
Transfer12
Transfer_AmountStringAmount transferred, decimal adjusted, as a decimal string. Multiply by 10^Transfer_Currency_Decimals for the raw on-chain integer
Transfer_AmountInUSDFloat64Amount valued in USD at the hourly price for the block's hour; 0 for TRC-10 tokens and tokens with no price
Transfer_CallIndexUInt64Index of the call the transfer happened in
Transfer_TransactionIndexUInt64Position of the transaction within the block
Transfer_URIStringMetadata URI for non-fungible transfers; empty otherwise
Transfer_SuccessStringWhether the transfer succeeded; true or false
Transfer_SenderStringSending address, base58
Transfer_ReceiverStringReceiving address, base58
Transfer_LogIndexUInt64Log index within the transaction; the event index for TRC-20 transfers
Transfer_IndexUInt32Position within the transaction. Several rows in one transaction can share it
Transfer_DataStringRaw transfer payload; empty on TRX, TRC-10 and TRC-20 transfers, which is all of them today
Transfer_IdStringToken id for non-fungible transfers; the string 0 when there is none
Transfer_Currency11
Transfer_Currency_AssetIdStringTRC-10 asset id; the string 0 for native TRX and empty for TRC-20
Transfer_Currency_DecimalsInt32Decimals of the transferred currency
Transfer_Currency_DelegatedStringWhether the currency is delegated; the string true or false
Transfer_Currency_DelegatedToStringAddress the currency is delegated to; empty when it is not
Transfer_Currency_FungibleStringWhether the currency is fungible; true or false
Transfer_Currency_NameStringName of the transferred currency
Transfer_Currency_HasURIStringWhether the currency carries a metadata URI; true or false
Transfer_Currency_NativeStringtrue for native TRX, false for TRC-10 and TRC-20. Filter on this to separate base-asset flow from token flow
Transfer_Currency_SymbolStringSymbol reported by the contract; repeats across tokens, so join on the contract address
Transfer_Currency_SmartContractStringContract of the transferred token; empty for native TRX. USDT is TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t
Transfer_Currency_ProtocolNameStringToken standard, for example trc20 or trc10
Witness2
Witness_SignatureStringSignature of the block producer
Witness_AddressStringAddress of the block producer
TransactionStatus1
TransactionStatus_SuccessStringWhether the transaction succeeded; the string true or false
Transaction4
Transaction_FeeStringTransaction fee in TRX, decimal adjusted from SUN, as a decimal string
Transaction_FeePayerStringAddress that paid the fee, which is the transaction sender
Transaction_HashStringHash of the transaction this transfer settled in; the join key to the transactions and events tables
Transaction_FeeInUSDFloat64Transaction fee valued in USD at the hourly TRX price for the block's hour
Log4
Log_Signature_NameStringDecoded event name, for example Transfer
Log_Signature_SignatureStringFull event signature
Log_Signature_TypeStringWhether the event signature came from a registered ABI; the string true or false
Log_Signature_SignatureHashStringEvent topic0, hex without a 0x prefix
Contract2
Contract_AddressStringContract the transaction called
Contract_TypeStringTRON contract type, for example TriggerSmartContract or TransferContract
Call4
Call_Signature_NameStringDecoded function name
Call_Signature_SignatureStringFull function signature
Call_Signature_TypeStringWhether the function signature came from a registered ABI; the string true or false
Call_Signature_SignatureHashStringFour-byte selector, hex without a 0x prefix
Sample file

Ask an AI about this data

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.

Start with

Opens a new chat with the question filled in. Nothing about you is sent to Bitquery, and the assistant sees only the public brief.

Delivery

Parquet files in a Requester Pays S3 bucket or a Cloudflare R2 bucket, chosen at checkout. On S3 you download with your own AWS account and AWS bills the transfer; on R2 you download with a read-only API key and pay no egress. Layout:

# transfers: 50 blocks per file, sorted ascending
tron/transfers<start_block>_<end_block>.parquet
  1. Download a free sampleNo email needed.
  2. Pay nowName, work email and licence check.
  3. Pay the invoiceBy card or bank transfer.
  4. Download from S3 or R2The team prepares the export and emails the bucket path, plus a read-only API key for R2 orders.

Time windows

Every window includes 43 columns. Only the time range changes.

30 days
Latest month
Sep 14, 2026 → Oct 14, 2026
$200
Pay now
365 days
Last 12 months
Oct 14, 2025 → Oct 14, 2026
$1,200
Pay now
730 days
Last 24 months
Oct 14, 2024 → Oct 14, 2026
$2,400
Pay now
3,033 days
Full history
Jun 25, 2018 → Oct 14, 2026
$6,000
Pay now
In every window
  • The transfers table, 43 columns
  • Parquet files in the layout under Delivery
  • S3 or R2 download, chosen at checkout
  • Licensed under the Data License

FAQ

11 questions
What is in the TRON Transfers dataset?

One Parquet table with 43 columns: every TRX, TRC-10 and TRC-20 transfer, one row each, with sender, receiver, amount, token metadata, the transaction it settled in, and the fee. TRX moved by contracts in internal calls is included.

How big is it?

About 13.3 billion rows over 100 months, roughly 1.4 TB as Parquet, estimated from the sample files. The last 24 months hold about 5.1 billion rows and the last 12 months about 2.9 billion. Row counts come from the live table; exact figures arrive with the delivery manifest.

How far back does it go?

To the start of indexed history: from 25 June 2018, at block 342, the first block with a transfer. The Full window runs from there to yesterday.

How do I get USDT only, or native TRX only?

Filter Transfer_Currency_SmartContract to TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t for USDT. For base-asset flow with no tokens, filter Transfer_Currency_Native to true. In the seven days to 21 September 2026 those were 16.7 million and 30.7 million rows, out of 60.2 million.

What was left out, and why?

The export applies no filter of its own: spam tokens, lookalike tokens and failed transactions all stay in, and the columns let you drop them. TRC-10 tokens carry no USD value because most are spam; one sample row moves 1.8 billion units of a token called Gas66. Staking, unstaking and reward withdrawals have no rows, since the files hold only TransferContract, TriggerSmartContract, TransferAssetContract and CreateSmartContract calls, so native TRX balances rebuilt from them will not match the chain. Token balances hold, rebasing tokens aside.

Where is the raw integer amount?

Transfer_Amount is decimal adjusted. Multiply it by 10 to the power of Transfer_Currency_Decimals for the raw on-chain integer. We ship the adjusted value because the decimals differ per token and the raw figure is wrong without them.

How are these produced, and how were they checked?

Decoded from TRON mainnet by our own indexer and stored with no time-to-live, so nothing is a rolling window. Before release we read the sample back: 11,488 rows over blocks 78,861,100 to 78,861,149, 97.6% carrying a USD value and none above $1 million. The live table returns the same 11,488 rows for those blocks.

What should I watch out for?

Amounts are decimal strings, so casting to float loses precision on large values. Token symbols come from the contract and repeat, so join on the contract address. Failed transactions are kept, so filter TransactionStatus_Success when you want settled flow only. USD values use the hourly price for the block's hour, so they can drift from a tick price inside that hour.

How are chain reorganisations handled?

TRON finalises quickly and the dump is built behind the head, so a delivered file is not rewritten. Incremental daily partitions are appended, never edited in place, and the manifest records the block range each file covers.

How do I load it?

One line in DuckDB: SELECT * FROM read_parquet('transfers/*.parquet') LIMIT 10. Pandas works too: pandas.read_parquet(path). The sample file opens without credentials.

How current is it, and how is it delivered?

Refreshed daily with T+1 latency, so a purchase made today includes everything to yesterday. Delivered as Parquet named by block range, 50 blocks per file and sorted ascending, under a stable layout with a JSON manifest listing every file and its sha256. We prepare the files within 7 business days of purchase and email you the location. You choose at checkout where to collect them: a Requester Pays S3 bucket, downloaded with your own AWS account, or a Cloudflare R2 bucket with a read-only API key and no egress fees. Files stay available for 7 days from delivery. Enterprise orders can be delivered into your own S3, GCS or R2 bucket.