> For the complete documentation index, see [llms.txt](https://docs.noderpc.xyz/node-rpc/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.noderpc.xyz/node-rpc/ethereum-api-endpoints/eth_newfilter.md).

# eth\_newFilter

Creates a filter object, based on filter options, to notify when the state changes (logs). To check if the state has changed, call [eth\_getFilterChanges](/node-rpc/ethereum-api-endpoints/eth_getfilterchanges.md).

*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.

*NOTE:* Topics are order-dependent. A transaction with a log with topics \[A, B] will be matched by the following topic filters:

* `[]` "anything"
* `[A]` "A in first position (and anything after)"
* `[null, B]` "anything in first position AND B in second position (and anything after)"
* `[A, B]` "A in first position AND B in second position (and anything after)"
* `[[A, B], [A, B]]` "(A OR B) in first position AND (A OR B) in second position (and anything after)"

## **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.

## Returns

&#x20;`QUANTITY` - A filter id.

## 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 filter = {
    fromBlock: "0xe20360",
    toBlock: "0xe20411",
    address: "0x6B175474E89094C44Da98b954EedeAC495271d0F",
    topics: [],
  };
  const filterId = await provider.send("eth_newFilter", [filter]);
  console.log(filterId);

}
fetchLogs();

```

### Result

```json
0x0700000000000000f9383206a08e58ea
```

{% endtab %}
{% endtabs %}

###
