syrto_search_companies finds companies matching structured criteria - sector, region, size, employee count, financial metrics, radar position, associated people, public subsidies, or a natural language description. Unlike syrto_find_company (which searches by name or tax ID), this tool filters by business characteristics.
Use this tool to
- Find companies in a specific sector, region, or size class
- Search by a natural language description of what the company does
- Filter companies by financial metric values or 1-5 scores
- Screen by radar position, ownership, or public subsidies received
Arguments
object
A single structured filter object. Its top-level keys are the filter sections documented below:
anagraphic, state_aids, people, financial, and radar. Omit it for no filters.All set filters combine with AND, both within a section and across sections.integer
Fiscal year the annual filters are evaluated in. Required whenever
filters.financial (except its consolidated field) or filters.radar is used, or when sorting by a metric.object
Sort configuration. Omit for the default order - semantic relevance when
anagraphic.semantic_search is set, otherwise the API’s own default.Sorting is by metric value only - the API cannot rank by score.Example:
{"field": "metric", "metric_slug": "revenues_from_sales_and_services", "direction": "desc"}string
Cursor for pagination. Pass the
end_cursor value from a previous response to fetch the next page of 25 results. Omit for the first page.string
"en" for English (default) or "it" for Italian.Filter sections
Each heading below is a top-level key offilters, and its fields nest under that key. Range fields take {"min": N, "max": N} with at least one bound; both bounds are inclusive.
anagraphic - company profile
Does not require year.
semantic_search searches business activity only - not company name, financials, ownership, or legal form. Use a list for genuine alternatives (“solar panels” OR “wind turbines”); keep one query per activity, since matching is by meaning rather than keyword.
state_aids - public subsidies received
Does not require year - the summary is not per-fiscal-year. Amounts are in EUR.
people - associated people
Does not require year. Resolve person IDs first with syrto_find_person. Within each list, any listed person matches; the relationship fields you set combine with AND.
financial - size, employees, metric values and scores
Requires year for size, employees, and metric_filters. Without it each company is measured against a different reference period.
Each
metric_filters entry is {"slug": ..., "min": N, "max": N, "score_min": 1-5, "score_max": 1-5} with at least one of the four bounds. Find valid slugs with syrto_search_metric_definitions.
min/maxbound the raw value on the API’s native scale, never multiplied by 100: pass0.1for “EBIT margin at or above 10%”,1.2for “ROI at or above 120%”. Values may be negative, e.g.-0.15for a -15% margin.score_min/score_maxbound the score - the API’s own 1-5 rating of that value against the company’s reference market. It is already normalised for direction, so 5 is always the best rating whichever way the raw metric reads. Use it for “companies scoring 4 or 5 on ROE” without knowing what a good ROE is in that sector.- Value and score bounds on the same entry combine with AND:
{"slug": "roe", "min": 0.2, "score_min": 4}means ROE at or above 20% and rated 4+. - Companies with no score for the metric are excluded by any score bound, including a
score_maxone - an absent score never counts as a low score. Some metrics are never scored at all (theirbetter_ifcomes back empty fromsyrto_search_metric_definitions); a score bound on one of those matches nothing, so filter those by value instead.
radar - Syrto radar position
Requires year. The radar plane has two proprietary synthetic 0-100 axes: size (how big a company is overall) and efficiency (how good it is overall). The same score means the same thing in every industry.
Set at least one of
size, efficiency, or polygon. Use axis ranges for axis-aligned rectangles or strips, and polygon for triangles, L-shapes, or concave regions.
At least one filter must be provided. Returns up to 25 results per page - use the
end_cursor from the response as the after parameter to fetch the next page.Returns
boolean
Whether more results are available beyond the current page.
object[]
List of matching companies (up to 25), each with:
id- thecompany_idto pass to other Syrto toolslegal_name- official registered company nametax_id- Italian tax identifier (nullif not available)match_score- semantic similarity score (only whensemantic_searchis used)short_description- brief description of the company’s activity (only whensemantic_searchis used)metrics- list of metric objects withname,slug,value,better_when(only whenmetric_filtersor a metric sort is used)
string | null
Cursor token for fetching the next page. Pass this as the
after parameter. null when there are no more pages.string
Context note about data availability and where to find more on syrto.ai.
string
Link to the Syrto web app, where you can explore more data and insights.