Skip to main content
Screening ETFs by size and fees bounds and ranks funds on two of the most-asked measures: assets under management and expense ratio. Both are served with their provenance — aum_is_derived says how the size was obtained, and fee coverage is limited to funds that actually file a fee table — so a ranking here never silently invents a number.
Plan: Fund · Credits: 1 per call; screen facets are free

The Size and Fee Filters

number
Class-level AUM floor in USD. max_aum sets the ceiling.
number
Net expense ratio floor as a decimal — 0.002 is 20 basis points. max_expense_ratio sets the ceiling.
string
Fund-name substring, case-insensitive, at least 2 characters.

How ETF Screen AUM Is Measured

aum is always the class-level figure: either filed by the fund, or — on multi-class pools where the class does not file its own — derived as published NAV × published shares. aum_is_derived says which. A pool-level number is never served as a fund’s size, because on a multi-class pool the two differ by three to four times. Funds on multi-class pools where no class size can be derived rank on nothing for aum and land in the unranked block when that empties a page.

How ETF Fee Coverage Works

The expense ratio comes from the newest prospectus fee filing per class — gross and net separately, per ETF Fees. Unit investment trusts file no fee table at all, SPY and GLD included, so ranking by net_expense_ratio drops them silently: no fee row is not a zero fee. The response’s unranked block counts what the sort dropped; re-run with sort=ticker to see every match.

Two Cadences in One Row

Labels refresh monthly, measured columns daily. A newly launched fund can carry full labels while aum and fee columns are still null — a label filter finds it, any numeric sort drops it into unranked. By asset class · By flows and premium · ETF fees · ETF screening overview