# screen_companies

Screen US-listed companies on public-record metrics from SEC filings: growth, margins, returns, leverage, filing events, insider buying, 13F holders, founder control and CEO pay. No price, market cap or valuation. Returns the matching companies with the filtered and sort metrics, from the nightly snapshot.

- Group: Screening
- REST: `GET https://api.fundalyze.ai/api/public/v1/screen_companies` with the parameters as the query string
- MCP: the `screen_companies` tool on `https://api.fundalyze.ai/mcp`
- HTML page: https://fundalyze.ai/developers/reference/screen_companies

## Parameters

| Parameter | Type | Default | Description |
|---|---|---|---|
| `filters` (required) | list of string | — | Each 'metric:min:max', either bound may be empty, e.g. roic:20: or net_debt::0; repeat or comma-separate. percent metrics in percent, usd in USD millions, flags 1/0. Metrics: revenue_ttm, revenue_growth_yoy, revenue_cagr_3y, net_income_growth_yoy, fcf_growth_yoy, gross_margin, gross_margin_change_yoy, operating_margin, net_margin, fcf_margin, rule_of_40, roic, roe, roa, accruals_ratio, cash_conversion, capex_to_revenue, capex_to_da, sbc_to_fcf, shares_change_yoy, net_debt, net_debt_to_ebitda, debt_to_equity, current_ratio, interest_coverage, piotroski_f, days_since_10k, days_since_10q, filings_8k_90d, had_8k_101_90d, had_8k_205_90d, had_8k_401_90d, had_8k_502_90d, insider_buyers_90d, insider_buy_value_90d, insider_net_buy_90d, insider_net_buy_1y, insider_officer_bought_90d, holders_13f, value_13f, founder_led, founder_on_board, founder_controlled, family_controlled, ceo_total_pay, ceo_pay_actually_received. |
| `sort_by` | string | — | Metric to sort by; default the first filter's. |
| `descending` | boolean | true | Largest first (default). |
| `limit` | integer (1–50) | 25 | Companies to return, 1-50. |

## Example

REST:

```bash
curl -H "Authorization: Bearer fdz_live_YOUR_KEY" "https://api.fundalyze.ai/api/public/v1/screen_companies?filters=roic%3A20%3A%2Crevenue_growth_yoy%3A10%3A&sort_by=roic&limit=10"
```

MCP `tools/call`:

```json
{
  "name": "screen_companies",
  "arguments": {
    "filters": [
      "roic:20:",
      "revenue_growth_yoy:10:"
    ],
    "sort_by": "roic",
    "limit": 10
  }
}
```

Response `text` (generated Oct 7, 2026):

```text
Screen · 10 companies · roic >= 20; revenue_growth_yoy >= 10 · sorted by roic desc · nightly snapshot as of 2026-10-06
ticker,name,roic,revenue_growth_yoy,notes
VEEV,VEEVA SYSTEMS INC,433.7,16.5,
NTAP,"NetApp, Inc.",358.9,12.15,
LYV,"Live Nation Entertainment, Inc.",298.78,10.75,
ANET,"Arista Networks, Inc.",246.98,32.57,
AVPT,"AvePoint, Inc.",183.59,24.95,
... 5 more rows in the full answer (trimmed for the docs)
Units: roic percent, revenue_growth_yoy percent.
notes: low_confidence or implausible = the figure carries that data-quality mark.
42 matching listings were left out because a requested figure is not derived from SEC filings for them.
More: https://fundalyze.ai/screener?f=roic%3Avalue%3A20%3A&f=revenue_growth_yoy%3Avalue%3A10%3A&sort=roic&dir=desc
```

Response `data`:

```json
{
  "as_of": "2026-10-06",
  "filters": [
    {
      "metric": "roic",
      "min": 20,
      "max": null
    },
    {
      "metric": "revenue_growth_yoy",
      "min": 10,
      "max": null
    }
  ],
  "sort_by": "roic",
  "descending": true,
  "units": {
    "roic": "percent",
    "revenue_growth_yoy": "percent"
  },
  "companies": [
    {
      "ticker": "VEEV",
      "name": "VEEVA SYSTEMS INC",
      "exchange": "NYSE",
      "cik": 1393052,
      "metrics": {
        "roic": 433.7,
        "revenue_growth_yoy": 16.5
      },
      "notes": []
    },
    {
      "ticker": "NTAP",
      "name": "NetApp, Inc.",
      "exchange": "NASDAQ",
      "cik": 1002047,
      "metrics": {
        "roic": 358.9,
        "revenue_growth_yoy": 12.15
      },
      "notes": []
    },
    {
      "ticker": "LYV",
      "name": "Live Nation Entertainment, Inc.",
      "exchange": "NYSE",
      "cik": 1335258,
      "metrics": {
        "roic": 298.78,
        "revenue_growth_yoy": 10.75
      },
      "notes": []
    },
    {
      "ticker": "ANET",
      "name": "Arista Networks, Inc.",
      "exchange": "NYSE",
      "cik": 1596532,
      "metrics": {
        "roic": 246.98,
        "revenue_growth_yoy": 32.57
      },
      "notes": []
    },
    {
      "ticker": "AVPT",
      "name": "AvePoint, Inc.",
      "exchange": "NASDAQ",
      "cik": 1777921,
      "metrics": {
        "roic": 183.59,
        "revenue_growth_yoy": 24.95
      },
      "notes": []
    }
  ],
  "excluded_not_sec_derived": 42
}
```

Rows trimmed to the first 5 for the docs: companies had 10.

## Fields of `data`

| Field | Meaning |
|---|---|
| `companies` | Matching companies in sort order (list; see companies[]). |
| `filters` | The filters applied, as metric, min and max. |
| `as_of` | Date of the nightly snapshot screened. |
| `filters[].metric` | Metric id. |
| `filters[].min` | Lower bound applied, in the metric's API unit. |
| `filters[].max` | Upper bound applied. |
| `sort_by` | Metric the rows are sorted by. |
| `descending` | Sort direction. |
| `units` | Metric id -> unit (percent, USD millions, ratio, days, count, 1/0). |
| `companies[].ticker` | Ticker (one row per company). |
| `companies[].name` | Name from the SEC directory. |
| `companies[].exchange` | Exchange. |
| `companies[].cik` | SEC CIK. |
| `companies[].metrics` | Metric id -> value for the filtered and sort metrics. |
| `companies[].notes` | Data-quality marks on those figures (low_confidence, implausible). |
| `excluded_not_sec_derived` | Matching listings dropped because a requested figure was not derived from SEC filings. |

## The link

Every answer ends with `More: <link>`, and REST returns the same URL as `link`: the fundalyze.ai page where the figures can be checked. Cite it when you show the data to others.
