Reference · Screening
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.
GET https://api.fundalyze.ai/api/public/v1/screen_companiesMCPscreen_companiesParameters
| Parameter | Type | Default | Description |
|---|---|---|---|
filtersrequired | 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 | integer1–50 | 25 | Companies to return, 1-50. |
Example
A real call and its answer. Replace fdz_live_YOUR_KEY with your key, or set FUNDALYZE_API_KEY for the Python and JavaScript versions.
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"import os
import requests
response = requests.get(
"https://api.fundalyze.ai/api/public/v1/screen_companies",
params={
"filters": ["roic:20:", "revenue_growth_yoy:10:"],
"sort_by": "roic",
"limit": 10,
},
headers={"Authorization": f"Bearer {os.environ['FUNDALYZE_API_KEY']}"},
timeout=60,
)
response.raise_for_status()
answer = response.json()
print(answer["text"])
print("Calls left today:", response.headers.get("X-Quota-Remaining"))const params = new URLSearchParams()
params.append("filters", "roic:20:")
params.append("filters", "revenue_growth_yoy:10:")
params.append("sort_by", "roic")
params.append("limit", "10")
const response = await fetch(`https://api.fundalyze.ai/api/public/v1/screen_companies?${params}`, {
headers: { Authorization: `Bearer ${process.env.FUNDALYZE_API_KEY}` },
})
const answer = await response.json()
if (!response.ok) throw new Error(`${response.status}: ${answer.detail}`)
console.log(answer.text)
console.log('Calls left today:', response.headers.get('X-Quota-Remaining'))The same call as an MCP tools/call: what an assistant sends.
{
"name": "screen_companies",
"arguments": {
"filters": [
"roic:20:",
"revenue_growth_yoy:10:"
],
"sort_by": "roic",
"limit": 10
}
}Response
Generated from live data on Oct 7, 2026; figures change as filings arrive. Rows trimmed to the first 5 for the docs: companies had 10.
What an assistant reads (and what MCP returns).
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=descThe same content as JSON (REST).
{
"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
}Fields of data
What each field of data means. rows[].field is a field of each row in the rows list.
| 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 (here, fundalyze.ai/screener?f=roic%3Avalue%3A20%3A&f=revenue_growth_yoy%3Avalue%3A10%3A&sort=roic&dir=desc). Cite it when you show the data to others, as the attribution rules ask.
Errors
A bad parameter is a 400 naming it, an unknown ticker a 404, a busy key or a used-up day a 429. Every status and message: Errors.
This page as Markdown, for language models and scripts: /developers/md/reference/screen_companies