Screener: search stocks by criteria
search_stocksScreen companies by a filter DSL over the 82-metric catalog. Required: where={filter:{...}, sort_by?, sort_order?}. Filter supports leaves {metric, op, value, for_latest|for_consecutive|for_at_least?} and composites and/or/not. Operators: >, >=, <, <=, between. Temporal modifiers (mutex per leaf): for_latest N (latest N pass), for_consecutive N (any N adjacent pass), for_at_least N (>= N within lookback pass). Optional: as_of_date, lookback (1-120), include_quarterly, tickers (whitelist, <=100), exclude_tickers, usd_only, sectors (Pro+ — filter the universe to canonical sector buckets; names from list_screener_filters.sectors), include_metrics_using_filing_date_price (gates 13 valuation ratios), exclude_derivations, include_metrics (<=10 extra columns), group_by_ticker (default true), page, page_size (<=100; page*page_size <=500). Dynamic credit cost per request (89-1825). Pre-run list_screener_filters once to discover supported metric ids + operators. lookback is auto-clamped to your plan's history window so you are only billed for the portion you can access; when clamped, _warnings is populated. Companies outside your plan's coverage scope are also silently excluded; _warnings is populated when this happens. Pro+ results carry a per-row classification block (canonical sector(s) + source). POST /api/v1/screener/metrics; FINANCIAL_API_DOCUMENTATION.md. Requires the Pro plan or higher.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | 1-based page number (default 1). page × page_size ≤ 500. | |
| where | Yes | Filter + sort, shaped {"filter": <tree>, "sort_by"?: <metric id or "ticker"/"period_end"/"filing_date"/"match_count">, "sort_order"?: "asc"|"desc"}. A filter tree is either a leaf {"metric": <id>, "op": ">"|">="|"<"|"<="|"between", "value": <number, or [lo, hi] for between>, plus one optional temporal modifier "for_latest"|"for_consecutive"|"for_at_least": N}, or a composite {"and": [<tree>, …]} / {"or": [<tree>, …]} / {"not": <tree>}. 1–10 leaves total, nesting depth ≤ 4. Metric ids come from list_screener_filters. | |
| sectors | No | Optional universe pre-filter: keep only companies in these canonical sector buckets (11 + 'Other'; the exact names are in list_screener_filters.sectors). Pro+ only — sub-Pro callers passing this get 403. | |
| tickers | No | Optional whitelist restricting the search to these tickers (≤ 100). | |
| lookback | No | How many filings back the temporal modifiers look (1–120; default 1). Auto-clamped to your plan's history window. | |
| usd_only | No | When true, only return rows whose metric values are in USD. | |
| page_size | No | Rows per page, 1–100 (default 50). page × page_size ≤ 500. | |
| as_of_date | No | As-of date "YYYY-MM-DD"; excludes filings filed after this date. Defaults to no cutoff. | |
| exclude_tickers | No | Optional tickers to exclude (≤ 100). | |
| group_by_ticker | No | When true (default), return one row per ticker; when false, one row per filing. | |
| include_metrics | No | Optional extra metric ids to return as columns alongside the filtered ones (≤ 10). | |
| include_quarterly | No | When true, include quarterly filings (10-Q) as well as annual; default false (annual only). | |
| exclude_derivations | No | Optional metric-derivation kinds to exclude, e.g. "as_reported", "composite". | |
| include_metrics_using_filing_date_price | No | When false, reject filtering/sorting on the 13 price-sensitive valuation ratios; default true. |