Documentation Index
Fetch the complete documentation index at: https://docs.syrto.ai/llms.txt
Use this file to discover all available pages before exploring further.
syrto_search_companies finds companies matching structured criteria — sector, region, size, employee count, financial metrics, 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 (e.g. revenue above a threshold)
Arguments
Company profile filters as a JSON object. All fields are optional:
Example:
| Field | Type | Description |
|---|---|---|
nace | string | EU NACE sector code. Auto-detects level: section letter (A–U), division (2 digits, e.g. "10"), group (e.g. "10.1"), class (e.g. "10.11"). |
nuts | string | EU NUTS region code. Auto-detects level: level 1 (3 chars, e.g. "ITH"), level 2 (4 chars, e.g. "ITH3"), level 3 (5 chars, e.g. "ITH35"). |
semantic_search | string | Natural language description to search company profiles (max 500 characters, e.g. "renewable energy solar panels"). |
age | object | Company age filter with min and/or max in years. E.g. {"min": 5, "max": 20}. |
shareholder_age | object | Average age of shareholders with min and/or max in years. E.g. {"min": 50, "max": 70}. |
beneficial_owner_age | object | Average age of beneficial owners with min and/or max in years. E.g. {"min": 40, "max": 65}. |
executive_officer_age | object | Average age of executive officers (CEOs, managing directors) with min and/or max in years. |
representation_and_authority_officer_age | object | Average age of officers with representation and signing authority, with min and/or max in years. |
target_market | string | One of: B2B, B2C, B2G, B2B2C, B2B2G, C2C, C2B, G2C, G2B. |
match_cutoff | float | Minimum semantic similarity score (0.0–1.0) when using semantic_search. Higher = fewer but more relevant matches. |
country_code | string | ISO 3166-1 alpha-2 country code (e.g. "IT"). |
'{"nace": "C", "nuts": "ITH3", "age": {"min": 5}, "target_market": "B2B"}'Fiscal year for annual data filters. Required when
size, metric_filters, employees, or radar are used, or when sorting by metric.One or more company size classifications:
"XS", "S", "M", "L" (e.g. ["S", "M"]). Requires year.Up to 10 metric value filters. Each object has
slug (required), min (optional), max (optional). Requires year.Use syrto_search_metric_definitions to find valid slugs.Example: '[{"slug": "revenues_from_sales_and_services", "min": 1000000}]'Employee count filter with
min and/or max. At least one is required. Requires year.Example: '{"min": 50, "max": 500}'Filter by position on the Syrto Radar plane (0–100 on both axes). Combines via AND with all other filters. At least one of
Example (rectangle):
size, efficiency, or polygon is required. Requires year.| Field | Type | Description |
|---|---|---|
size | object | Inclusive range on the Radar size axis with min and/or max (0–100). Distinct from the top-level size parameter (XS/S/M/L band). |
efficiency | object | Inclusive range on the Radar efficiency axis with min and/or max (0–100). |
polygon | object | Arbitrary polygon over the (size, efficiency) plane. Has a vertices list of 3–64 points, each { "size": 0–100, "efficiency": 0–100 }. Use axis ranges for rectangles or strips; use the polygon for triangles, L-shapes, or concave regions. |
'{"efficiency": {"min": 70}, "size": {"min": 40, "max": 80}}'Example (polygon): '{"polygon": {"vertices": [{"size": 0, "efficiency": 70}, {"size": 60, "efficiency": 100}, {"size": 100, "efficiency": 70}]}}'Filter by consolidated financial statements. Default:
false (non-consolidated).Sort configuration as a JSON object. Fields:
Example:
| Field | Type | Description |
|---|---|---|
field | string | "match_score" (default, meaningful with semantic_search) or "metric" (sort by a financial metric value). |
direction | string | "desc" (default) or "asc". |
metric_slug | string | Required when field is "metric". The metric slug to sort by. |
'{"field": "metric", "metric_slug": "revenues_from_sales_and_services", "direction": "desc"}'Cursor for pagination. Pass the
end_cursor value from a previous response to fetch the next page. Omit for the first page.At least one filter parameter 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
Whether more results are available beyond the current page.
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 (float, only present whensemantic_searchis used)short_description— brief description of the company’s activity (only present whensemantic_searchis used)metrics— list of metric objects withname,slug,value,better_when(only present whenmetric_filtersorsort_bywithfield: "metric"is used)
Cursor token for fetching the next page. Pass this as the
after parameter. null when there are no more pages.Context note about data availability and where to find more on syrto.ai.
Example
Find large manufacturers in Emilia-Romagna:- Filters for NACE section C (manufacturing), NUTS level 2 ITH5 (Emilia-Romagna), size L (large)
- Returns up to 25 companies per page; pass
end_cursorasafterto fetch additional pages