Tron events server
Base URL: https://mainnet.tron.tronql.com
Table of Contents
Authentication
Two methods are supported:
Header (recommended):
Token in subdomain:
Concepts
Pagination
Most list endpoints use 1-based page numbers (start=1 is the first page). Contract Logs and Contract Events endpoints are 0-based (start=0).
limit
Number of items per page
25
start
Page number
1 or 0
Sorting
Pass a field name to sort. Prefix with - for descending order.
Supported sort fields for events, transactions, transfers:
sort value
Sorts by
timeStamp
Timestamp ascending
-timeStamp
Timestamp descending
blockNumber
Block number ascending
-blockNumber
Block number descending
transactionId
Transaction ID ascending
energyUsageTotal
Energy usage ascending
netFee
Net fee ascending
Supported sort fields for blocks:
sort value
Sorts by
timeStamp
Timestamp ascending
-timeStamp
Timestamp descending
blockNumber
Block number ascending
blockHash
Block hash ascending
transactionSize
Transaction count ascending
Timestamps
All timestamps (since, fromTimestamp) are Unix milliseconds (e.g., 1620000000000).
Solidified Blocks
A solidified (confirmed) block has received enough network confirmations and cannot be rolled back. The latestSolidifiedBlockNumber value is returned on most responses. Events in blocks above this number are marked _unconfirmed: true in TronGrid-compatible responses.
Transactions
List Transactions
GET /transactions
Query Parameters:
limit
int
Page size (max 100)
25
sort
string
Sort field
-timeStamp
start
int
Page number (1-based)
1
block
int
Minimum block number
0
block_to
int
Maximum block number
—
Response:
Example: https://mainnet.tron.tronql.com/transactions?limit=25&sort=-timeStamp&block=10000&block_to=20000
Get Transaction by Hash
GET /transactions/{hash}
Response: { "transaction": { ...TransactionItem } }
Example: https://mainnet.tron.tronql.com/transactions/9a4f096700672d7420889cd76570ea47bfe9ef815bb2137b0d4c71b3d23309e9
Get Transactions Total
GET /transactions/total
Returns total transaction count as plain text.
Example: https://mainnet.tron.tronql.com/transactions/total → 1234567
Transfers
Transfers are transactions of type TransferContract or TransferAssetContract.
List Transfers
GET /transfers
Query Parameters:
limit
int
Page size (max 100)
25
sort
string
Sort field
-timeStamp
start
int
Page number (1-based)
1
from
string
Filter by sender address
—
to
string
Filter by recipient address
—
token
string
Filter by token name (e.g., trx)
—
block
int
Minimum block number
—
Response:
Example: https://mainnet.tron.tronql.com/transfers?token=trx&from=TJ7yJNWS8RmvpXcAyXBhvFDfGpV9ZYc3vt
Get Transfer by Hash
GET /transfers/{hash}
Returns 404 if the transaction exists but is not a transfer type.
Response: { "transaction": { ...TransactionItem } }
Example: https://mainnet.tron.tronql.com/transfers/70d655a17e04d6b6b7ee5d53e7f37655974f4e71b0edd6bcb311915a151a4700
Get Transfers Total
GET /transfers/total
Returns total transfer count as plain text.
Example: https://mainnet.tron.tronql.com/transfers/total → 56789
Get Transfers Total by Address
GET /transfers/total/{address}
Returns total transfer count for a specific address as plain text.
Example: https://mainnet.tron.tronql.com/transfers/total/TJ7yJNWS8RmvpXcAyXBhvFDfGpV9ZYc3vt → 42
Events
Events are smart contract logs indexed by the indexer. These endpoints return a native TronQL format (see also TronGrid-Compatible Events for TronGrid format).
Event Object
uniqueIdis{transactionHash}_{eventIndex}, e.g.,9a4f09..._0.
List Events
GET /events
Query Parameters:
limit
int
Page size (max 100)
25
sort
string
Sort field
-timeStamp
start
int
Page number (1-based)
1
block
int
Minimum block number
0
event_name
string
Filter by event name
—
Response: Plain JSON array of Event objects (no total wrapper).
Example: https://mainnet.tron.tronql.com/events?limit=25&sort=-timeStamp&block=10000
Get Events Total
GET /events/total
Returns total event count as plain text.
Example: https://mainnet.tron.tronql.com/events/total → 98765432
Get Event by Unique ID
GET /events/uniqueId/{uniqueId}
Returns a single event. Returns 404 if not found.
Example: https://mainnet.tron.tronql.com/events/uniqueId/9a4f096700672d7420889cd76570ea47bfe9ef815bb2137b0d4c71b3d23309e9_0
Get Events by Transaction
GET /events/transaction/{transactionId}
Returns all events emitted by a transaction.
Example: https://mainnet.tron.tronql.com/events/transaction/cd402e64cad7e69c086649401f6427f5852239f41f51a100abfc7beaa8aa0f9c
Get Confirmed Events
GET /events/confirmed
Returns only events from solidified (confirmed) blocks. Same query parameters as /events.
Example: https://mainnet.tron.tronql.com/events/confirmed?since=1620000000000&limit=25
Get Events by Timestamp
GET /events/timestamp
Same as /events but additionally supports filtering by contract address. Uses block as the minimum block number filter (not a timestamp filter despite the endpoint name).
limit
int
Page size (max 100)
25
sort
string
Sort field
-timeStamp
start
int
Page number (1-based)
1
block
int
Minimum block number
0
event_name
string
Filter by event name
—
contract
string
Filter by contract address
—
Example: https://mainnet.tron.tronql.com/events/timestamp?block=1620000&contract=TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t&limit=25
Get Events by Contract Address
GET /events/{contractAddress}
Returns events emitted by a specific contract. Response items are flattened: topicMap and dataMap fields are merged into the top-level object alongside standard fields.
Query Parameters:
limit
int
Page size (max 100)
25
sort
string
Sort field
-timeStamp
start
int
Page number (1-based)
1
block
int
Minimum block number
0
since
int
Minimum timestamp (ms)
0
event_name
string
Filter by event name
—
Example: https://mainnet.tron.tronql.com/events/TMYcx6eoRXnePKT1jVn25ZNeMNJ6828HWk?event_name=Bet&limit=25
Get Events by Contract Address and Event Name
GET /events/contract/{contractAddress}/{eventName}
Accepts the same query parameters as /events.
Example: https://mainnet.tron.tronql.com/events/contract/TMYcx6eoRXnePKT1jVn25ZNeMNJ6828HWk/Bet?limit=25&sort=-timeStamp
Get Events by Contract, Event Name, and Block
GET /events/contract/{contractAddress}/{eventName}/{blockNumber}
Filters events by an exact block number match on {blockNumber}. The block query parameter (minimum block) still applies.
Example: https://mainnet.tron.tronql.com/events/contract/TMYcx6eoRXnePKT1jVn25ZNeMNJ6828HWk/Bet/4835773
Filter Events by Contract and Event Name (Exact Block)
GET /events/filter/contract/{contractAddress}/{eventName}
Like the endpoint above, but the block query parameter filters by an exact block number instead of a minimum.
Query Parameters:
limit
int
Page size (max 100)
25
sort
string
Sort field
-timeStamp
start
int
Page number (1-based)
1
since
int
Minimum timestamp (ms)
0
block
int
Exact block number to match
—
Example: https://mainnet.tron.tronql.com/events/filter/contract/TMYcx6eoRXnePKT1jVn25ZNeMNJ6828HWk/Bet?block=4835773
Blocks
List Blocks
GET /blocks
Query Parameters:
limit
int
Page size (max 100)
25
sort
string
Sort field
-timeStamp
start
int
Page number (1-based)
1
block
int
Minimum block number
0
block_to
int
Maximum block number
—
Response:
Example: https://mainnet.tron.tronql.com/blocks?limit=25&sort=-timeStamp
Get Block by Hash or Number
GET /blocks/{hashOrNumber}
Accepts either a block hash (hex string) or a block number (integer). When the value parses as an integer it is looked up by block number; otherwise it is looked up by hash.
Response: { "block": { ...BlockItem } }
Examples: https://mainnet.tron.tronql.com/blocks/000000000049c11f15d4e91e988bc950fa9f194d2cb2e04cda76675dbb349009 https://mainnet.tron.tronql.com/blocks/4835773
Get Latest Solidified Block Number
GET /blocks/latestSolidifiedBlockNumber
Returns the current solidified block number as plain text.
Example: https://mainnet.tron.tronql.com/blocks/latestSolidifiedBlockNumber → 4835755
Get Blocks Total
GET /blocks/total
Returns total block count as plain text.
Example: https://mainnet.tron.tronql.com/blocks/total → 65432100
Contract Logs
Raw EVM-style logs (topics + data), without ABI decoding. For decoded results use Contract Events (ABI-decoded).
Note: These endpoints use 0-based page numbers (
start=0).
Contract Log Object
List Contract Logs
GET /contractlogs
Query Parameters:
limit
int
Page size (max 200)
25
sort
string
Sort field
-timeStamp
start
int
Page number (0-based)
0
block
int
Filter by block number
—
Response: { "total": 42, "data": [ ...ContractLog ] }
Note:
totalreflects the number of records returned on this page, not the database-wide count. Use/contractlogs/totalfor the true count.
Example: https://mainnet.tron.tronql.com/contractlogs?limit=25&sort=-timeStamp
Get Contract Logs Total
GET /contractlogs/total
Returns total contract log count as plain text.
Example: https://mainnet.tron.tronql.com/contractlogs/total → 12345678
Get Contract Logs by Transaction
GET /contractlogs/transaction/{transactionId}
Returns all contract logs for a transaction as a plain JSON array (no { total, data } wrapper).
Example: https://mainnet.tron.tronql.com/contractlogs/transaction/f7440eb396632db8e279078069a55abc0a3c018072b458bbd4eeddafc4782b55
Get Contract Logs by Contract Address
GET /contractlogs/contract/{contractAddress}
Query Parameters:
limit
int
Page size (max 200)
25
sort
string
Sort field
-timeStamp
start
int
Page number (0-based)
0
since
int
Minimum timestamp (ms)
0
block
int
Minimum block number (-1 to skip)
—
eventName
string
Filter by event name
—
Response: Plain JSON array of ContractLog objects (no { total, data } wrapper).
Example: https://mainnet.tron.tronql.com/contractlogs/contract/TXDk8mbtRbXeYuMNS83CfKPaYYT8XWv9Hz?eventName=Transfer&limit=25
Get Contract Log by Unique ID
GET /contractlogs/uniqueId/{uniqueId}
Returns a single contract log. Returns 404 if not found.
Example: https://mainnet.tron.tronql.com/contractlogs/uniqueId/f7440eb396632db8e279078069a55abc0a3c018072b458bbd4eeddafc4782b55_0
Contract Events (ABI-decoded)
These endpoints accept a JSON request body with ABI field filters and return decoded event data. They use the same response format as TronGrid-Compatible Events but wrapped in { "total", "data" }.
Note: These endpoints use 0-based page numbers (
start=0).
Decoded Event Object
_unconfirmedis only present when the event is in an unconfirmed block.
Get Decoded Events by Contract Address
POST /contract/contractAddress/{contractAddress}
Query Parameters:
limit
int
Page size (max 200)
25
sort
string
Sort field
-timeStamp
start
int
Page number (0-based)
0
since
int
Minimum timestamp (ms)
0
block
int
Minimum block number (-1 to skip)
—
eventName
string
Filter by event name
—
Request Body: JSON object with decoded field name → value pairs to filter results.
Response: { "total": 42, "data": [ ...DecodedEvent ] }
Example:
Get Decoded Events by Transaction
POST /contract/transaction/{transactionId}
Request Body: JSON object with decoded field name → value pairs to filter results.
Response: { "total": 42, "data": [ ...DecodedEvent ] }
Example:
Get Decoded Event by Unique ID
POST /contract/uniqueId/{uniqueId}
Request Body: JSON object with decoded field name → value pairs to filter results.
Response: { "total": 1, "data": [ ...DecodedEvent ] }
Example:
TronGrid-Compatible Events
Drop-in replacement for the TronGrid event API. Use these endpoints to migrate from TronGrid without changing client code.
Response items use snake_case field names and include _unconfirmed / _fingerprint markers.
TronGrid Event Object
_unconfirmedis only present on unconfirmed events._fingerprintis only present on the last item of a page; pass it as thefingerprintquery parameter to retrieve the next page.
Common TronGrid Query Parameters
size
int
Page size (max 200)
20
sort
string
Sort field; also accepts block_timestamp
-timeStamp
start
int
Page number (0-based)
0
since
int
Minimum timestamp (ms)
0
fromTimestamp
int
Alias for since
—
fingerprint
string
Pagination cursor from previous response's _fingerprint
—
onlyConfirmed
bool
true to return only solidified events
—
onlyUnconfirmed
bool
true to return only unconfirmed events
—
onlyConfirmedandonlyUnconfirmedare mutually exclusive.
Get Events by Transaction (TronGrid)
GET /event/transaction/{transactionId}
Example: https://mainnet.tron.tronql.com/event/transaction/cd402e64cad7e69c086649401f6427f5852239f41f51a100abfc7beaa8aa0f9c
Get Latest Solidified Block Number (TronGrid)
GET /event/contract/latestSolidifiedBlockNum
Returns the latest solidified block number as plain text.
Example: https://mainnet.tron.tronql.com/event/contract/latestSolidifiedBlockNum → 4835755
Get Events by Contract Address (TronGrid)
GET /event/contract/{contractAddress}
Example: https://mainnet.tron.tronql.com/event/contract/TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t?size=20&onlyConfirmed=true
Get Events by Contract Address and Event Name (TronGrid)
GET /event/contract/{contractAddress}/{eventName}
Example: https://mainnet.tron.tronql.com/event/contract/TMYcx6eoRXnePKT1jVn25ZNeMNJ6828HWk/Bet?size=20
Get Events by Contract, Event Name, and Block (TronGrid)
GET /event/contract/{contractAddress}/{eventName}/{blockNumber}
{blockNumber} accepts a numeric block number or the special value latest, which resolves to the current solidified block.
Example: https://mainnet.tron.tronql.com/event/contract/TMYcx6eoRXnePKT1jVn25ZNeMNJ6828HWk/Bet/latest
TRC20
Get TRC20 Token Holders
GET /trc20/getholder/{contractAddress}
Returns a deduplicated list of addresses that have appeared as sender or recipient in Transfer events for the given contract.
Response:
Example: https://mainnet.tron.tronql.com/trc20/getholder/TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t
Last updated