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. Invalid slugs silently return no data.

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.
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. Only its five most recent filed years are searched, so an older year reads as empty even if the company filed it.
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.
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
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.
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.

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