Skip to main content
The screener answers every question that starts from a condition rather than a company: “profitable semiconductor companies under $10B that raised guidance”, “who makes DRAM”, “who names Micron as a competitor”. One row per company, recomputed through the day; filters combine freely and any sortable column can order the page. The universe is ~25,000 listed companies in 82 countries — but every dimension has its own footprint: short interest is US-only, foreign ownership and monthly revenue are Taiwan-only, insider activity is US Form 4. Filtering on a dimension also excludes every company it does not reach; the response’s coverage block spells each footprint out. Responses use the standard envelope with { data, next_cursor, coverage } — see Pagination and Errors.

GET /v1/screen

Run a screen. Uniquely among dataset routes, no filter is required — an unfiltered screen is “biggest companies in the world”, bounded by the default sort and the page limit. Plan: Fund · Credits: 1 per call
Two unit systems on one row. Momentum filters (ret_1m_gte …) are percentsret_3m_gte=-20 means down 20%. Valuation and fundamentals filters (net_margin_gte, revenue_growth_yoy_gte …) are fractionsnet_margin_gte=0.2 means a 20% margin. The fractions are the same numbers /v1/financial-metrics serves; the percents come from the price series. Mixing them up returns a list that looks right and is not.

Identity filters

Size

Momentum (percents)

Price history starts 2025-07-14, so twelve months is the longest return window that exists.

Short interest (US only, FINRA)

Guidance (last 90 days)

“Raised” and “good news” are different screens: a company raising its cost guidance filed a raise and told you something bad. Prefer the better/worse pair unless you specifically mean the direction of the number.

Events (last 90 days)

Products and relationships

The product vocabulary expands spellings, not concepts: memory, dram, nand, memory chips and flash memory are five separate terms with five separate maker lists, and makes_term=memory alone misses Winbond, Nanya and Kioxia. Search the vocabulary and pass every spelling you mean.

Taiwan

Management (US proxy statements)

Valuation and fundamentals (fractions; SEC filers)

Insider activity (US Form 4)

Sorting and paging

string
default:"market_cap_usd"
One of the 28 sortable columns: market_cap_usd, ret_1m, ret_3m, ret_6m, ret_12m, short_percent_float, days_to_cover, guidance_better_90d, guidance_worse_90d, event_filings_90d, news_events_90d, tw_foreign_held_pct, tw_revenue_yoy_pct, ceo_total_comp, insider_ownership_pct, pe_ttm, pb, ps_ttm, fcf_yield, dividend_yield, gross_margin, operating_margin, net_margin, return_on_equity, debt_to_equity, revenue_growth_yoy, eps_growth_yoy, company_id.
string
asc or desc.
string
next_cursor from the previous page, passed back verbatim. A malformed cursor is a 400, never a silent restart.
integer
Rows per page, 1–1000.
Sorting by a column drops companies where that column is null — a ranking by 12-month return cannot place a company whose return is unknown, and silently sorting them to one end would read as data.

Example

Each row carries identity (company_id, company_name, country, sector, industry, primary_ticker, primary_exchange, cik), size (market_cap_usd, market_cap_local, market_cap_currency), momentum (ret_1mret_12m, return_suspect), short interest, guidance counts and timestamps, event activity (event_sources_90d, event_families_90d, rollup_families_90d, event_filings_90d, news_events_90d), products and relationships (product_terms, related_terms, peer_companies, competitor_companies), management (ceo_name, ceo_total_comp, insider_ownership_pct), Taiwan fields, and the fundamentals block with its fundamentals_period, fundamentals_source and currency provenance. Rows matched through a product or relationship filter also carry matched_terms / matched_relation — the evidence of why the company matched.
Coverage of the product and relationship layer is partial (roughly 3,100 companies with a product term; 4,400 with peer or competitor edges). An empty result there means nothing is held for that company — not that it makes nothing and has no peers.

GET /v1/screen/facets

The filterable values and how many companies carry each — sectors, industries, exchanges, event families per source, and coverage totals. Call this before screening: sector, industry and event-family values must match the registry’s own spelling, and a guessed value returns an empty page rather than an error. Plan: Free and above · Credits: free
Returns { data: { facets, totals }, coverage }.

GET /v1/screen/terms

Search the 60,620-term product vocabulary. Matched as a case-insensitive substring. Plan: Free and above · Credits: free
string
required
The spelling to look for, e.g. memory.
integer
Max terms returned, 1–100.
Returns { data: { query, terms }, coverage } — use the exact terms it returns in makes_term / related_to_term.