Plan: Fund · Credits: 1 per call; screen facets are free
What You Can Use ETF Screening For
Detailed ETF Filter Pages
By asset class
The four-level taxonomy filters.
By geography
Measured US/EM shares and region/country segments.
By wrapper & structure
The nine tiers and filed flags.
By size & fees
Class-level AUM and expense ratios.
By portfolio shape
Concentration, cap bands, duration.
By flows & premium
20-day flows and premium/discount.
Start With ETF Screen Facets
Call the ETF screen facets endpoint first. It is free and returns the label vocabulary as it is actually carried by funds, with a count for each value, plus measured coverage totals. This matters for two reasons. It is the only place ETF coverage is a number rather than prose. And an empty result from a label filter almost always means the code was misspelled rather than that no such funds exist — the facets response settles which.Two ETF Label Axes That Are Not the Same Question
tier filters on the wrapper — what kind of instrument the fund is. It takes a comma-separated list of the nine values: leveraged_inverse, structured_outcome, option_income, physical_commodity, futures_commodity, crypto, currency, alternative, plain_beta.
asset_class, category, segment and specializations filter on the holdings-derived taxonomy — what the fund actually holds. taxonomy_prefix matches a dotted-path prefix at any level, so equity.sector finds every sector fund in one filter.
A fund can be a leveraged wrapper around a health-care segment. Filtering on one axis says nothing about the other.
Measured Filters Versus Label Filters
Some filters read a label; others read a measurement taken from the fund’s holdings. The distinction decides how a question must be phrased. Sector funds carry no cap-band label, because cap bands are a separate facet. “Large-cap biotech” is therefore not one label but a segment plus a specialization plus a measured floor:segment=equity.sector.health_care, specializations=equity.sector.health_care.biotechnology, min_large_share=0.5. The cap share is measured from holdings.
The measured filters are min_n_holdings, min_top10_share and max_top10_share for concentration; min_us_share and min_em_share for geography; min_large_share, max_large_share and min_small_share for cap bands; min_duration, max_duration and min_treasury_share for bond books; min_flow_20d and max_flow_20d for flows; min_premium and max_premium for premium and discount.
How ETF Screen Sorting Handles Unknowns
Sorting drops rows whose sort key is null, and on this dataset that is a large and non-random group. Ranking by expense ratio drops every trust that files no fee table, SPY and GLD included. Ranking by assets drops multi-class portfolios with no derivable class-level size. When that happens the response carries anunranked block saying how many funds matched the filters but could not be ranked. An apparently empty first page with a large unranked count means the filters worked and the sort did not — re-run with sort=ticker to see the matches.
Two Cadences in One ETF Screen Row
Labels are recomputed monthly; the measured columns — assets, flows, premium, expense coverage — refresh daily. A newly launched fund can therefore carry a complete set of labels while every measured column is still null. A label filter finds it; any numeric sort moves it into theunranked count.
How ETF Assets Are Measured in a Screen
aum is the class-level figure. It is either filed by the fund or derived as published NAV multiplied by published shares on multi-class portfolios, and aum_is_derived says which. A portfolio-level number is never served as a share class’s size.
Query the ETF Screen
Use the ETF screen endpoint to select funds. Every filter is combined with AND; a comma-separated value inside one filter means ANY of the listed values. No filter is required.string
Comma-separated wrapper tiers.
string
Comma-separated level-3 taxonomy codes — the peer-group key.
string
A dotted-path prefix matching any taxonomy level, e.g.
equity.sector.number
Class-level assets floor in USD.
max_aum sets the ceiling.number
Net expense ratio ceiling as a decimal —
0.001 is ten basis points. min_expense_ratio sets the floor.number
Twenty-day net flow floor in USD; a negative value finds outflows.
max_flow_20d sets the ceiling.string
default:"aum"
aum, net_expense_ratio, flow_20d, top10_share, premium_discount, or ticker. aum defaults to descending; net_expense_ratio and ticker default to ascending. order overrides the direction.integer
default:"100"
Rows per page, between 1 and 1000. Page through with
cursor.q, exchange, active, exposure_hidden, asset_class, category, specializations, is_index, is_fund_of_fund, multi_inverse, and the measured filters listed above.