How to get filtered rows in ag-grid?

This took me forever so I'm posting here. Use onFilterChanged() to access the filtered rows, or the filtered + selected rows. The event passed to onFilterChanged() can be used like so (example in Typescript React)

onFilterChanged = ev => {
  if (ev?.api?.rowModel?.rowsToDisplay) {
    this.setState({ selectedRows: ev?.api?.rowModel?.rowsToDisplay.filter(node => node.isSelected()) });
  }
};

You can use the forEachNodeAfterFilter(callback) api method for this.

See https://www.ag-grid.com/javascript-grid-api for all available API calls, including the various forEachXXX methods.


Building off @sean-landsman's answer, here's an example of how to use the forEachNodeAfterFilter(callback) method:

    let rowData = [];
    gridApi.forEachNodeAfterFilter(node => {
      rowData.push(node.data);
    });