Skip to main content
syrto_compare_companies fetches the same metrics for multiple companies in a single call, returning results side-by-side. It is significantly faster than calling syrto_get_company_metrics once per company.
Metric slugs must come from syrto_list_available_metrics or syrto_search_metric_definitions. A slug that returns no data for any company is named in warning, which says whether it is not a known metric or a known metric with no value for that year.

Use this tool to

  • Compare specific financial KPIs across 2 or more companies side-by-side
  • Check which company performs best on a given metric (e.g. ROE, EBITDA)
  • Get year-on-year metric trends for multiple companies at once
Related tools: For single-company metrics, use Company metrics. For sector-level statistics, use Aggregate companies. To find company IDs first, use Find company or Look up companies by tax ID for batch resolution.

Arguments

string[]
required
List of company IDs from syrto_find_company or syrto_lookup_companies_by_tax_id. Minimum 2, maximum 20.
string[]
required
Metric code slugs to compare (min 1, max 10). Examples: ["ebitda", "roe", "net_financial_position"]. Use syrto_search_metric_definitions or syrto_list_available_metrics to find valid slugs.The radar positioning slugs radar_efficiency and radar_size are supported here too, and come back on the same 0-100 scale as every other radar tool.
integer
required
Fiscal year for comparison (e.g. 2023).
string
"en" for English (default) or "it" for Italian.

Returns

A JSON object with per-company results and a list of any unrecognized company IDs.
object[]
One entry per requested company (in the same order as company_ids), each with company_id, legal_name, consolidated, and a years array.consolidated is false for that company’s own individual accounts and true for its group’s consolidated ones. A comparison can mix the two, so check it before treating a gap between companies as real.
object[]
One entry per fiscal year. Each contains:
  • year - fiscal year
  • financial_statement_date - ISO 8601 date of the statement the figures come from (the statement’s own date, normally the fiscal year end, not the deposit date). Omitted when not on record.
  • size - EU SME classification
  • employee_count - headcount (null if unavailable)
  • metrics - list of metric objects
An empty years array means the company returned an overview but has nothing for the requested year. warning names the years that company did file.
object[]
One entry per requested metric slug, each with:
  • name - human-readable metric name
  • slug - internal identifier
  • value - numeric value (or null if unavailable)
  • better_when - object with when_type: "HIGHER", "LOWER", "NEAR_TARGET", or null
  • score - integer 1-5 (or null) rating the value against that company’s own reference market, already normalised for direction so 5 is best for every metric. This is the field to compare across companies in different sectors - raw values are not comparable that way. Absent for metrics with no scoring strategy.
A metric missing from a year’s list means that company has no value for it.
Each company’s reference market is its own: companies in the same NACE class (4-digit) and size band (XS/S/M/L) in the same year, within that company’s own NUTS 1 macro-region - country-wide for size L.So two companies in one sector but different macro-regions, or in different size bands, are rated against different peer groups. Say so when a score gap is the finding. No field in the response names either market.
string[]
Company IDs for which the API returned no financial overview. That is all it establishes - the company may well exist. Invalid or malformed IDs raise an error instead.
string | null
Present whenever the comparison came back short. It counts the IDs with no overview and names the companies affected by the other two gaps.
A comparison can be incomplete in three different ways, and missing_company_ids covers only the first:So an empty missing_company_ids does not mean every cell is populated. warning is the one field that flags all three - read it before presenting the table.
Beside result, the response carries the fields every tool returns. Here display_title counts the companies compared - or names the company when only one came back - and subtitle says how many IDs returned no overview.

Example

Compare EBITDA and ROE for two companies:
Result:
  • Returns each company with the requested metrics for the specified year
  • Check missing_company_ids to verify all requested companies were found