Skip to content

eth_getLogs

Returns an array of all logs matching a given filter object. This is one of the most commonly used methods for indexing and monitoring smart contract events.

  1. Object — Filter options:
    FieldTypeDescription
    fromBlockQUANTITY|TAGStart block (default: "latest")
    toBlockQUANTITY|TAGEnd block (default: "latest")
    addressDATA|ArrayContract address(es) to filter
    topicsArrayTopic filters (indexed event params)
    blockHashDATARestricts to a single block

Array — Array of log objects:

FieldTypeDescription
addressDATAContract that emitted the log
topicsArray<DATA>Indexed event parameters
dataDATANon-indexed event parameters
blockNumberQUANTITYBlock number
transactionHashDATATransaction hash
logIndexQUANTITYLog index in block
Terminal window
# Get recent USDC Transfer events
curl -X POST https://eth-mainnet.blockreq.com/v1/rpc/public \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"method": "eth_getLogs",
"params": [{
"fromBlock": "0x134E800",
"toBlock": "0x134E810",
"address": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
"topics": ["0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"]
}],
"id": 1
}'

The topic 0xddf252ad... is the keccak-256 hash of Transfer(address,address,uint256).

import { JsonRpcProvider } from "ethers";
const provider = new JsonRpcProvider("https://eth-mainnet.blockreq.com/v1/rpc/YOUR_API_KEY");
const logs = await provider.getLogs({
address: "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
topics: ["0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"],
fromBlock: "latest",
});
console.log(`Found ${logs.length} Transfer events`);
from web3 import Web3
w3 = Web3(Web3.HTTPProvider("https://eth-mainnet.blockreq.com/v1/rpc/YOUR_API_KEY"))
logs = w3.eth.get_logs({
"address": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
"topics": ["0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"],
"fromBlock": "latest"
})
print(f"Found {len(logs)} Transfer events")
MethodCost
eth_getLogs50 RU

Large block ranges may consume additional RU based on response size.