OpenCorporates alternative · Italy

OpenCorporates Italy alternative

Italy's commercial register is the Registro delle Imprese, run by the InfoCamere consortium of Camere di Commercio. The bad news: InfoCamere's own per-query API requires a signed commercial contract, registroimprese.it is F5-WAF-blocked to non-browser clients, and the SPID-gated impresa.italia.it Cassetto Digitale only opens to a company's own legal representative. The good news: under EU Directive 2017/1132, the same minimum mandatory dataset is exposed at the EU's BRIS gateway. Real-time, free, no auth. OpenRegistry uses BRIS directly.

OpenRegistry on Italy

Out of scope for now

The richer Italian dataset (filings, officers, shareholders, charges, document bodies, beneficial owners) is paid (Visura €5, Bilancio €2.50) or SPID-gated. Those routes return a structured 501 with the registroimprese.it or titolareffettivo.registroimprese.it alternative_url. The titolare-effettivo register itself is currently CJEU-frozen, after the Consiglio di Stato's 2024-10 referral of C-37/20 plus C-601/20.

status always comes back "unknown" because BRIS does not publish the Italian active / cessata / in-liquidazione field; that lives in the paid Visura. We do not fabricate it.

What OpenCorporates has for Italy

OpenCorporates includes Italian company records in its catalogue, mostly at identifier-and-name level. That is roughly the same minimum surface as BRIS, but as a periodic crawl rather than a live call. For a workflow that needs a live CF lookup against the EU's own gateway, OpenRegistry hits BRIS directly.

Why direct BRIS matters

Worked example

// MCP — find ENI (oil major) by name, then look up by CF
search_companies({ jurisdiction: "IT", query: "ENI" })
// → CF 00484960588

get_company_profile({ jurisdiction: "IT", company_id: "00484960588" })
// → legal name "ENI SPA", legal form "Società per azioni",
//   registered office, capital, EUID "ITRI.00484960588"

Note that list_filings, get_officers, get_shareholders, get_persons_with_significant_control, and get_charges on Italy return a 501 with paid-portal pointers. The BRIS minimum mandatory dataset does not include those fields.