> ## 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.

# Cerca aziende

> Trova aziende italiane per settore, sede, dimensione, filtri finanziari o descrizione in linguaggio naturale.

`syrto_search_companies` trova aziende che corrispondono a criteri strutturati: settore, regione, dimensione, numero di dipendenti, metriche finanziarie o una descrizione in linguaggio naturale. A differenza di [`syrto_find_company`](/it/mcp/tools/find-company) (che cerca per nome o codice fiscale), questo strumento filtra per caratteristiche aziendali.

<Tip>
  Se hai bisogno del **conteggio totale** delle aziende corrispondenti o di statistiche aggregate (ricavi medi, EBITDA mediano, ecc.), usa [`syrto_aggregate_companies`](/it/mcp/tools/aggregate-companies) — questo strumento restituisce solo risultati paginati.
</Tip>

## Quando usare questo strumento

* Trovare aziende in un settore, una regione o una classe dimensionale specifici
* Cercare tramite una descrizione in linguaggio naturale dell'attivita dell'azienda
* Filtrare aziende per valori di metriche finanziarie (es. ricavi superiori a una soglia)

**Strumenti correlati:** Per la ricerca per nome o codice fiscale, usa [Trova azienda](/it/mcp/tools/find-company). Per statistiche aggregate, usa [Aggrega aziende](/it/mcp/tools/aggregate-companies).

## Argomenti

<ParamField query="anagraphic_filters" type="string (JSON object)">
  Filtri del profilo aziendale come oggetto JSON. Tutti i campi sono opzionali:

  | Campo                                      | Tipo   | Descrizione                                                                                                                                                                       |
  | ------------------------------------------ | ------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
  | `nace`                                     | string | Codice settoriale EU NACE. Rileva automaticamente il livello: lettera di sezione (`A`–`U`), divisione (2 cifre, es. `"10"`), gruppo (es. `"10.1"`), classe (es. `"10.11"`).       |
  | `nuts`                                     | string | Codice regionale EU NUTS. Rileva automaticamente il livello: livello 1 (3 caratteri, es. `"ITH"`), livello 2 (4 caratteri, es. `"ITH3"`), livello 3 (5 caratteri, es. `"ITH35"`). |
  | `semantic_search`                          | string | Descrizione in linguaggio naturale per cercare nei profili aziendali (max 500 caratteri, es. `"renewable energy solar panels"`).                                                  |
  | `age`                                      | object | Filtro per eta dell'azienda con `min` e/o `max` in anni. Es. `{"min": 5, "max": 20}`.                                                                                             |
  | `shareholder_age`                          | object | Eta media dei soci con `min` e/o `max` in anni. Es. `{"min": 50, "max": 70}`.                                                                                                     |
  | `beneficial_owner_age`                     | object | Eta media dei titolari effettivi con `min` e/o `max` in anni. Es. `{"min": 40, "max": 65}`.                                                                                       |
  | `executive_officer_age`                    | object | Eta media dei dirigenti esecutivi (amministratori delegati, direttori generali) con `min` e/o `max` in anni.                                                                      |
  | `representation_and_authority_officer_age` | object | Eta media dei membri con poteri di rappresentanza e firma, con `min` e/o `max` in anni.                                                                                           |
  | `target_market`                            | string | Uno tra: `B2B`, `B2C`, `B2G`, `B2B2C`, `B2B2G`, `C2C`, `C2B`, `G2C`, `G2B`.                                                                                                       |
  | `match_cutoff`                             | float  | Punteggio minimo di similarita semantica (0.0–1.0) quando si usa `semantic_search`. Valori piu alti = meno risultati ma piu pertinenti.                                           |
  | `country_code`                             | string | Codice paese ISO 3166-1 alpha-2 (es. `"IT"`).                                                                                                                                     |

  **Esempio:** `'{"nace": "C", "nuts": "ITH3", "age": {"min": 5}, "target_market": "B2B"}'`
</ParamField>

<ParamField query="year" type="integer">
  Anno fiscale per i filtri sui dati annuali. **Obbligatorio** quando si usano `size`, `metric_filters`, `employees` o `radar`, oppure quando si ordina per metrica.
</ParamField>

<ParamField query="size" type="string[]">
  Una o piu classificazioni dimensionali: `"XS"`, `"S"`, `"M"`, `"L"` (es. `["S", "M"]`). Richiede `year`.
</ParamField>

<ParamField query="metric_filters" type="string (JSON array)">
  Fino a 10 filtri per valore di metrica. Ogni oggetto ha `slug` (obbligatorio), `min` (opzionale), `max` (opzionale). Richiede `year`.

  Usa [`syrto_search_metric_definitions`](/it/mcp/tools/metric-definitions) per trovare gli slug validi.

  **Esempio:** `'[{"slug": "revenues_from_sales_and_services", "min": 1000000}]'`
</ParamField>

<ParamField query="employees" type="string (JSON object)">
  Filtro per numero di dipendenti con `min` e/o `max`. Almeno uno e obbligatorio. Richiede `year`.

  **Esempio:** `'{"min": 50, "max": 500}'`
</ParamField>

<ParamField query="radar" type="string (JSON object)">
  Filtra per posizione sul piano Radar Syrto (0–100 su entrambi gli assi). Si combina in AND con tutti gli altri filtri. È richiesto almeno uno tra `size`, `efficiency` o `polygon`. Richiede `year`.

  | Campo        | Tipo   | Descrizione                                                                                                                                                                                                                                                           |
  | ------------ | ------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
  | `size`       | object | Intervallo inclusivo sull'asse size del Radar con `min` e/o `max` (0–100). Distinto dal parametro `size` di primo livello (banda XS/S/M/L).                                                                                                                           |
  | `efficiency` | object | Intervallo inclusivo sull'asse efficiency del Radar con `min` e/o `max` (0–100).                                                                                                                                                                                      |
  | `polygon`    | object | Poligono arbitrario sul piano (size, efficiency). Contiene una lista `vertices` da 3 a 64 punti, ciascuno `{ "size": 0–100, "efficiency": 0–100 }`. Usa gli intervalli sugli assi per rettangoli o fasce; usa il poligono per triangoli, forme a L o regioni concave. |

  **Esempio (rettangolo):** `'{"efficiency": {"min": 70}, "size": {"min": 40, "max": 80}}'`

  **Esempio (poligono):** `'{"polygon": {"vertices": [{"size": 0, "efficiency": 70}, {"size": 60, "efficiency": 100}, {"size": 100, "efficiency": 70}]}}'`
</ParamField>

<ParamField query="consolidated" type="boolean">
  Filtra per bilanci consolidati. Default: `false` (non consolidati).
</ParamField>

<ParamField query="sort_by" type="string (JSON object)">
  Configurazione dell'ordinamento come oggetto JSON. Campi:

  | Campo         | Tipo   | Descrizione                                                                                                                     |
  | ------------- | ------ | ------------------------------------------------------------------------------------------------------------------------------- |
  | `field`       | string | `"match_score"` (predefinito, significativo con `semantic_search`) o `"metric"` (ordina per valore di una metrica finanziaria). |
  | `direction`   | string | `"desc"` (predefinito) o `"asc"`.                                                                                               |
  | `metric_slug` | string | Obbligatorio quando `field` è `"metric"`. Lo slug della metrica per cui ordinare.                                               |

  **Esempio:** `'{"field": "metric", "metric_slug": "revenues_from_sales_and_services", "direction": "desc"}'`
</ParamField>

<ParamField query="after" type="string">
  Cursore per la paginazione. Passa il valore `end_cursor` da una risposta precedente per ottenere la pagina successiva. Ometti per la prima pagina.
</ParamField>

<Note>
  È necessario fornire almeno un parametro di filtro. Restituisce fino a 25 risultati per pagina — usa `end_cursor` dalla risposta come parametro `after` per ottenere la pagina successiva.
</Note>

## Risposta

<ResponseField name="has_next_page" type="boolean">
  Indica se sono disponibili ulteriori risultati oltre la pagina corrente.
</ResponseField>

<ResponseField name="items" type="object[]">
  Lista delle aziende corrispondenti (fino a 25), ciascuna con:

  * `id` — il `company_id` da passare agli altri strumenti Syrto
  * `legal_name` — ragione sociale ufficiale dell'azienda
  * `tax_id` — codice fiscale italiano (`null` se non disponibile)
  * `match_score` — punteggio di similarità semantica (`float`, presente solo quando si usa `semantic_search`)
  * `short_description` — breve descrizione dell'attività aziendale (presente solo quando si usa `semantic_search`)
  * `metrics` — lista di oggetti metrica con `name`, `slug`, `value`, `better_when` (presente solo quando si usano `metric_filters` o `sort_by` con `field: "metric"`)
</ResponseField>

<ResponseField name="end_cursor" type="string | null">
  Token cursore per ottenere la pagina successiva. Passalo come parametro `after`. `null` quando non ci sono altre pagine.
</ResponseField>

<ResponseField name="note" type="string">
  Nota contestuale sulla disponibilita dei dati e dove trovare ulteriori informazioni su syrto.ai.
</ResponseField>

## Esempio

**Trovare grandi aziende manifatturiere in Emilia-Romagna:**

```json theme={null}
{
  "anagraphic_filters": "{\"nace\": \"C\", \"nuts\": \"ITH5\"}",
  "year": 2023,
  "size": ["L"]
}
```

**Risultato:**

* Filtra per sezione NACE C (manifatturiero), NUTS livello 2 ITH5 (Emilia-Romagna), dimensione L (grande)
* Restituisce fino a 25 aziende per pagina; passa `end_cursor` come `after` per ottenere ulteriori pagine
