Skip to main content

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.
If you need the total count of matching companies or aggregate statistics (average revenue, median EBITDA, etc.), use syrto_aggregate_companies instead — this tool only returns paginated results.

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)
Related tools: For lookup by company name or tax ID, use Find company. For aggregate statistics, use Aggregate companies.

Arguments

anagraphic_filters
string (JSON object)
Company profile filters as a JSON object. All fields are optional:
FieldTypeDescription
nacestringEU NACE sector code. Auto-detects level: section letter (AU), division (2 digits, e.g. "10"), group (e.g. "10.1"), class (e.g. "10.11").
nutsstringEU 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_searchstringNatural language description to search company profiles (max 500 characters, e.g. "renewable energy solar panels").
ageobjectCompany age filter with min and/or max in years. E.g. {"min": 5, "max": 20}.
shareholder_ageobjectAverage age of shareholders with min and/or max in years. E.g. {"min": 50, "max": 70}.
beneficial_owner_ageobjectAverage age of beneficial owners with min and/or max in years. E.g. {"min": 40, "max": 65}.
executive_officer_ageobjectAverage age of executive officers (CEOs, managing directors) with min and/or max in years.
representation_and_authority_officer_ageobjectAverage age of officers with representation and signing authority, with min and/or max in years.
target_marketstringOne of: B2B, B2C, B2G, B2B2C, B2B2G, C2C, C2B, G2C, G2B.
match_cutofffloatMinimum semantic similarity score (0.0–1.0) when using semantic_search. Higher = fewer but more relevant matches.
country_codestringISO 3166-1 alpha-2 country code (e.g. "IT").
Example: '{"nace": "C", "nuts": "ITH3", "age": {"min": 5}, "target_market": "B2B"}'
year
integer
Fiscal year for annual data filters. Required when size, metric_filters, employees, or radar are used, or when sorting by metric.
size
string[]
One or more company size classifications: "XS", "S", "M", "L" (e.g. ["S", "M"]). Requires year.
metric_filters
string (JSON array)
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}]'
employees
string (JSON object)
Employee count filter with min and/or max. At least one is required. Requires year.Example: '{"min": 50, "max": 500}'
radar
string (JSON object)
Filter by position on the Syrto Radar plane (0–100 on both axes). Combines via AND with all other filters. At least one of size, efficiency, or polygon is required. Requires year.
FieldTypeDescription
sizeobjectInclusive 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).
efficiencyobjectInclusive range on the Radar efficiency axis with min and/or max (0–100).
polygonobjectArbitrary 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.
Example (rectangle): '{"efficiency": {"min": 70}, "size": {"min": 40, "max": 80}}'Example (polygon): '{"polygon": {"vertices": [{"size": 0, "efficiency": 70}, {"size": 60, "efficiency": 100}, {"size": 100, "efficiency": 70}]}}'
consolidated
boolean
Filter by consolidated financial statements. Default: false (non-consolidated).
sort_by
string (JSON object)
Sort configuration as a JSON object. Fields:
FieldTypeDescription
fieldstring"match_score" (default, meaningful with semantic_search) or "metric" (sort by a financial metric value).
directionstring"desc" (default) or "asc".
metric_slugstringRequired when field is "metric". The metric slug to sort by.
Example: '{"field": "metric", "metric_slug": "revenues_from_sales_and_services", "direction": "desc"}'
after
string
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

has_next_page
boolean
Whether more results are available beyond the current page.
items
object[]
List of matching companies (up to 25), each with:
  • id — the company_id to pass to other Syrto tools
  • legal_name — official registered company name
  • tax_id — Italian tax identifier (null if not available)
  • match_score — semantic similarity score (float, only present when semantic_search is used)
  • short_description — brief description of the company’s activity (only present when semantic_search is used)
  • metrics — list of metric objects with name, slug, value, better_when (only present when metric_filters or sort_by with field: "metric" is used)
end_cursor
string | null
Cursor token for fetching the next page. Pass this as the after parameter. null when there are no more pages.
note
string
Context note about data availability and where to find more on syrto.ai.

Example

Find large manufacturers in Emilia-Romagna:
{
  "anagraphic_filters": "{\"nace\": \"C\", \"nuts\": \"ITH5\"}",
  "year": 2023,
  "size": ["L"]
}
Result:
  • Filters for NACE section C (manufacturing), NUTS level 2 ITH5 (Emilia-Romagna), size L (large)
  • Returns up to 25 companies per page; pass end_cursor as after to fetch additional pages