eth_getLogs
Returns an array of all logs matching a given filter object.

REQUEST

1
POST https://<network>.infura.io/v3/YOUR-PROJECT-ID
Copied!

HEADERS

1
Content-Type: application/json
Copied!

REQUEST PARAMS

  • FILTER OBJECT
    • address [optional] - a string representing the address (20 bytes) to check for balance
    • fromBlock [optional, default is "latest"] - hexadecimal block number, or the string "latest", "earliest" or "pending"
    • toBlock [optional, default is "latest"] - hexadecimal block number, or the string "latest", "earliest" or "pending"
    • topics[optional] - Array of 32 Bytes DATA topics. Topics are order-dependent.
    • blockhash:[optional] With the addition of EIP-234, blockHash restricts the logs returned to the single block with the 32-byte hash blockHash. Using blockHash is equivalent to fromBlock = toBlock = the block number with hash blockHash. If blockHash is present in in the filter criteria, then neither fromBlock nor toBlock are allowed.

EXAMPLE

1
## JSON-RPC over HTTPS POST
2
## Replace YOUR-PROJECT-ID with a Project ID from your Infura Dashboard
3
## You can also replace mainnet with a different supported network
4
curl https://mainnet.infura.io/v3/YOUR-PROJECT-ID \
5
-X POST \
6
-H "Content-Type: application/json" \
7
-d '{"jsonrpc":"2.0","method":"eth_getLogs","params":[{"blockHash": "0x7c5a35e9cb3e8ae0e221ab470abae9d446c3a5626ce6689fc777dcffcab52c70", "topics":["0x241ea03ca20251805084d27d4440371c34a0b85ff108f6bb5611248f73818b80"]}],"id":1}'
8
9
## JSON-RPC over WSS
10
## Replace YOUR-PROJECT-ID with a Project ID from your Infura Dashboard
11
## You can also replace mainnet with a different supported network
12
wscat -c wss://mainnet.infura.io/ws/v3/YOUR-PROJECT-ID
13
>{"jsonrpc":"2.0","method":"eth_getLogs","params":[{"blockHash": "0x7c5a35e9cb3e8ae0e221ab470abae9d446c3a5626ce6689fc777dcffcab52c70", "topics":["0x241ea03ca20251805084d27d4440371c34a0b85ff108f6bb5611248f73818b80"]}],"id":1}
Copied!

RESPONSE

RESULT FIELDS

  • LOG OBJECTS - An array of log objects, or an empty array if nothing has changed since last poll.
    • logs are objects with following params:
      • removed: true when the log was removed, due to a chain reorganization. false if it's a valid log.
      • logIndex: hexadecimal of the log index position in the block. null when its pending log.
      • transactionIndex: hexadecimal of the transactions index position log was created from. null when its pending log.
      • transactionHash: 32 Bytes - hash of the transactions this log was created from. null when its pending log.
      • blockHash: 32 Bytes - hash of the block where this log was in. null when its pending. null when its pending log.
      • blockNumber: the block number where this log was in. null when its pending. null when its pending log.
      • address: 20 Bytes - address from which this log originated.
      • data: contains one or more 32 Bytes non-indexed arguments of the log.
      • topics: Array of 0 to 4 32 Bytes of indexed log arguments. (In solidity: The first topic is the hash of the signature of the event (e.g. Deposit(address,bytes32,uint256)), except you declared the event with the anonymous specifier.)

BODY

1
{
2
"jsonrpc": "2.0",
3
"id": 1,
4
"result": [
5
{
6
"address": "0x1a94fce7ef36bc90959e206ba569a12afbc91ca1",
7
"blockHash": "0x7c5a35e9cb3e8ae0e221ab470abae9d446c3a5626ce6689fc777dcffcab52c70",
8
"blockNumber": "0x5c29fb",
9
"data": "0x0000000000000000000000003e3310720058c51f0de456e273c626cdd35065700000000000000000000000000000000000000000000000000000000000003185000000000000000000000000000000000000000000000000000000000000318200000000000000000000000000000000000000000000000000000000005c2a23",
10
"logIndex": "0x1d",
11
"removed": false,
12
"topics": [
13
"0x241ea03ca20251805084d27d4440371c34a0b85ff108f6bb5611248f73818b80"
14
],
15
"transactionHash": "0x3dc91b98249fa9f2c5c37486a2427a3a7825be240c1c84961dfb3063d9c04d50",
16
"transactionIndex": "0x1d"
17
},
18
{
19
"address": "0x06012c8cf97bead5deae237070f9587f8e7a266d",
20
"blockHash": "0x7c5a35e9cb3e8ae0e221ab470abae9d446c3a5626ce6689fc777dcffcab52c70",
21
"blockNumber": "0x5c29fb",
22
"data": "0x00000000000000000000000077ea137625739598666ded665953d26b3d8e374400000000000000000000000000000000000000000000000000000000000749ff00000000000000000000000000000000000000000000000000000000000a749d00000000000000000000000000000000000000000000000000000000005c2a0f",
23
"logIndex": "0x57",
24
"removed": false,
25
"topics": [
26
"0x241ea03ca20251805084d27d4440371c34a0b85ff108f6bb5611248f73818b80"
27
],
28
"transactionHash": "0x788b1442414cb9c9a36dba2abe250763161a6f6395788a2e808f1b34e92beec1",
29
"transactionIndex": "0x54"
30
}
31
]
32
}
Copied!

LIMITATIONS

To prevent queries from consuming too many resources, eth_getLogs requests are currently limited by two constraints:
  • A max of 10,000 results can be returned by a single query
  • Query duration must not exceed 10 seconds
If a query returns too many results or exceeds the max query duration, one of the following errors is returned:
1
{
2
"jsonrpc": "2.0",
3
"id": 1,
4
"error": {
5
"code": -32005,
6
"message": "query returned more than 10000 results"
7
}
8
}
Copied!
1
{
2
"jsonrpc": "2.0",
3
"id": 1,
4
"error": {
5
"code": -32005,
6
"message": "query timeout exceeded"
7
}
8
}
Copied!
If this happens:
  • Limit your query to a smaller number of blocks using fromBlock and toBlock.
  • If querying for commonly used topics, consider limiting to a single Smart Contract address as well.
Copy link