# eth\_getLogs

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

*NOTE:* We enforce a limit of 10,000 block ranges when requesting logs and events. The 10,000 block range limit is not a limit on how far back in time you can query but rather a limit on the number of blocks you can query in a single request. To work around the limit, we recommend breaking down your queries into smaller chunks of 10,000 blocks or less.

## **Parameters**

1. `Object` - The filter options:

* `fromBlock`: `QUANTITY|TAG` - (optional, default: `"latest"`) Integer block number, or `"latest"` for the last mined block or `"pending"`, `"earliest"` for not yet mined transactions.
* `toBlock`: `QUANTITY|TAG` - (optional, default: `"latest"`) Integer block number, or `"latest"` for the last mined block or `"pending"`, `"earliest"` for not yet mined transactions.
* `address`: `DATA|Array`, 20 Bytes - (optional) Contract address or a list of addresses from which logs should originate.
* `topics`: `Array of DATA`, - (optional) Array of 32 Bytes `DATA` topics. Topics are order-dependent. Each topic can also be an array of DATA with "or" options.
* `blockhash`: `DATA`, 32 Bytes - (optional, **future**) With the addition of EIP-234, `blockHash` will be a new filter option which 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 the filter criteria, then neither `fromBlock` nor `toBlock` are allowed.

## Returns

&#x20;`Array` - Array of log objects, or an empty array if nothing has changed since last poll.

* For filters created with `eth_newBlockFilter` the return are block hashes (`DATA`, 32 Bytes), e.g. `["0x3454645634534..."]`.
* For filters created with `eth_newPendingTransactionFilter` the return are transaction hashes (`DATA`, 32 Bytes), e.g. `["0x6345343454645..."]`.
* For filters created with `eth_newFilter` logs are objects with following params:
  * `removed`: `TAG` - `true` when the log was removed, due to a chain reorganization. `false` if its a valid log.
  * `logIndex`: `QUANTITY` - integer of the log index position in the block. `null` when its pending log.
  * `transactionIndex`: `QUANTITY` - integer of the transactions index position log was created from. `null` when its pending log.
  * `transactionHash`: `DATA`, 32 Bytes - hash of the transactions this log was created from. `null` when its pending log.
  * `blockHash`: `DATA`, 32 Bytes - hash of the block where this log was in. `null` when its pending. `null` when its pending log.
  * `blockNumber`: `QUANTITY` - the block number where this log was in. `null` when its pending. `null` when its pending log.
  * `address`: `DATA`, 20 Bytes - address from which this log originated.
  * `data`: `DATA` - contains one or more 32 Bytes non-indexed arguments of the log.
  * `topics`: `Array of DATA` - Array of 0 to 4 32 Bytes `DATA` 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.)

## Example

*NOTE:* In this example we are using public Ethereum endpoint. Ideally, for your own projects, you should use your own endpoint, which you can generate for free by connecting to your wallet [here](https://www.noderpc.xyz/).

{% tabs %}
{% tab title="ethers" %}

### Query

*NOTE:* `ethers` used below is a well-known web3 library, check it out [here](https://github.com/ethers-io/ethers.js/).

```javascript
import { ethers } from 'ethers';

const provider =
  new ethers
    .providers
    .JsonRpcProvider("https://www.noderpc.xyz/rpc-mainnet/public")

const fetchLogs = async ()=> {
  const logs = await provider.getLogs({address: "0x8A001303158670E284950565164933372807cD48", topic: "0xdAC17F958D2ee523a2206206994597C13D831ec7"});
  console.log(logs);

}
fetchLogs();

```

### Result

```json
[
    {
        "blockNumber": 17384990,
        "blockHash": "0xfff785b8b971a19b301a8e936e624a7c06331b654d94ec8c68c1a0798dcc15ae",
        "transactionIndex": 71,
        "removed": false,
        "address": "0x8A001303158670E284950565164933372807cD48",
        "data": "0x0000000000000000000000000000000000000000288ab90e3607090cde019017",
        "topics": [
            "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef",
            "0x000000000000000000000000453b90482eb99a243a245501b0af4cf25f59965a",
            "0x000000000000000000000000505c27a2935d99bf01f62e2ac31f689fb0227418"
        ],
        "transactionHash": "0x2ebc4c64747377f59138ce4e1ba966a06078c2cda0cb1298dd50da76b7290a4a",
        "logIndex": 198
    }
]
```

{% endtab %}
{% endtabs %}

###
