Enterprises

The API has been replaced by the new endpoints available in Company

To access all the data, information on the activity, shareholders and economic data of an Italian company, discover the new services of Company.

Deprecated starting from 2025-12-31

All the knowledge you need

Here you can find some advice to consider to approach this API. If you prefer, we provide code samples, OAS3 documentation, the ability to try the API live via the Swagger UI or import the entire collection into Postman. We also offer a Sandbox environment where you can experiment with all kinds of requests completely free of charge.

Useful tips to start with Enterprises

Get the token in the appropriate section before you start.

Use the the online tool or generate it via API. Set the expire date, a usefull name and now add a bunch of scopes to limit the possible actions your token can do.

Already know the VAT number or the TAX code?

Get company informations with a single request using one of the available End points:
/base, /pec, /soci, /closed and /gruppoiva. Each one returns specific information so you can pay only for what you need.
If you need all infos at once you can use /advance.

Searching for a company?

We expose two ways to find out a company. If you need a way to make fast text search over millions of companies we suggest /autocomplete. With it you can refine your results by georeferencing the request.
If you need better filter options we expose /advance. It allows you to filter for: company name, province, ateco code, cciaa code, rea code, annual revenue, employees, latitude, longitude and radius. Each result contains all the /base data unless you use the "dry_run" option that only returns the record count for free.

Imprese (1.0.0)

This service provides REST calls to extract information on businesses and companies from simple parameters such as denomination or VAT number.

At this link you can find a list of companies that allow you to try the service in a sandbox environment.

Company Information

Starting from basic data of a company such as VAT number, tax code or denomination, detailed information on the company itself is extracted

Basic data

This enpoint returns basic information of a company such as company name and address.

Authorizations:
bearerAuth
path Parameters
piva_cf_or_id
required
string
Example: 12485671007

VAT number, tax code or company ID

Responses

Response Schema: application/json
object (Base)
success
boolean
message
string
error
integer

Request samples

CURL *hnd = curl_easy_init();

curl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, "GET");
curl_easy_setopt(hnd, CURLOPT_URL, "https://imprese.openapi.it/base/%7Bpiva_cf_or_id%7D");

struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, "Authorization: Bearer REPLACE_BEARER_TOKEN");
curl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);

CURLcode ret = curl_easy_perform(hnd);

Response samples

Content type
application/json
{
  • "data": {
    },
  • "success": true,
  • "message": "",
  • "error": null
}

Advanced search and data

With this endpoint we can draw up a list of companies that correspond to certain parameters described below. The call returns a maximum of 100 results even if you set a higher limit.

Authorizations:
bearerAuth
query Parameters
denominazione
string
Example: denominazione=altravia

name of the company (you can search for parts of the name as long as they are whole words)

provincia
string
Example: provincia=RM

the code of the region you want to search in

codice_ateco
string
Example: codice_ateco=6201

ateco code

cciaa
string
Example: cciaa=RM

Chamber of Commerce

rea
string
Example: rea=1378273

rea code

fatturato_min
integer
Example: fatturato_min=100000

minimum revenue value

fatturato_max
integer
Example: fatturato_max=1000000

maximum revenue value

dipendenti_min
integer
Example: dipendenti_min=1

minimum value of employees

dipendenti_max
integer
Example: dipendenti_max=5

maximum value of employees

skip
integer
Example: skip=50

to set the number of records you want to skip from the result set

limit
integer [ 1 .. 100 ]
Example: limit=10

number of results you want to receive; if not set, the call will return a maximum of 100 results

dry_run
integer
Enum: 1 0
Example: dry_run=0

simulates a request by returning only the number of records found and the price

lat
number <double> [ -90 .. 90 ]
Example: lat=13.5478

latitude

lng
number <double> [ -180 .. 180 ]
Example: lng=42.859

longitude

radius
integer ( 0 .. 3000 ]
Example: radius=100

radius in meters

Responses

Response Schema: application/json
Array of objects (BaseElenco)
success
boolean
message
string
error
integer

Request samples

CURL *hnd = curl_easy_init();

curl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, "GET");
curl_easy_setopt(hnd, CURLOPT_URL, "https://imprese.openapi.it/advance?denominazione=altravia&provincia=RM&codice_ateco=6201&cciaa=RM&rea=1378273&fatturato_min=100000&fatturato_max=1000000&dipendenti_min=1&dipendenti_max=5&skip=50&limit=10&dry_run=0&lat=13.5478&lng=42.859&radius=100");

struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, "Authorization: Bearer REPLACE_BEARER_TOKEN");
curl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);

CURLcode ret = curl_easy_perform(hnd);

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "success": true,
  • "message": "",
  • "error": null
}

Advanced search and data

This endpoint gets advanced information about a company such as ateco code, balance sheet and pec.

Authorizations:
bearerAuth
path Parameters
piva_cf_or_id
required
string
Example: 12485671007

VAT number, tax code or ID

Responses

Response Schema: application/json
object (Advance)
success
boolean
message
string
error
integer

Request samples

CURL *hnd = curl_easy_init();

curl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, "GET");
curl_easy_setopt(hnd, CURLOPT_URL, "https://imprese.openapi.it/advance/%7Bpiva_cf_or_id%7D");

struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, "Authorization: Bearer REPLACE_BEARER_TOKEN");
curl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);

CURLcode ret = curl_easy_perform(hnd);

Response samples

Content type
application/json
{
  • "data": {
    },
  • "success": true,
  • "message": "",
  • "error": null
}

Cessation of activity

Simple endpoint to understand in real time if a VAT number has ceased or not according to the Tax Office.

Authorizations:
bearerAuth
path Parameters
piva_cf_or_id
required
string
Example: 12485671007

VAT number, tax code or ID

Responses

Response Schema: application/json
object
success
boolean
message
string
error
integer

Request samples

CURL *hnd = curl_easy_init();

curl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, "GET");
curl_easy_setopt(hnd, CURLOPT_URL, "https://imprese.openapi.it/closed/%7Bpiva_cf_or_id%7D");

struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, "Authorization: Bearer REPLACE_BEARER_TOKEN");
curl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);

CURLcode ret = curl_easy_perform(hnd);

Response samples

Content type
application/json
{
  • "data": {
    },
  • "success": true,
  • "message": "",
  • "error": null
}

Membership of a VAT group

From this endpoint you can understand if a company is part of a VAT group and if the tax code is consistent with the VAT number taken as input.

Authorizations:
bearerAuth
path Parameters
piva_or_cf
required
string
Example: 12485671007

VAT number or tax code

query Parameters
cf
string
Example: cf=12345678910

if a tax code is given, this service will return additional information about the relationship between the VAT group and the tax code

Responses

Response Schema: application/json
object
success
boolean
message
string
error
integer

Request samples

CURL *hnd = curl_easy_init();

curl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, "GET");
curl_easy_setopt(hnd, CURLOPT_URL, "https://imprese.openapi.it/gruppoiva/%7Bpiva_or_cf%7D?cf=12345678910");

struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, "Authorization: Bearer REPLACE_BEARER_TOKEN");
curl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);

CURLcode ret = curl_easy_perform(hnd);

Response samples

Content type
application/json
Example
{
  • "data": {
    },
  • "success": true,
  • "message": "",
  • "error": null
}

Certified e-mail

Starting from a VAT number it extracts the pec of the company.

Authorizations:
bearerAuth
path Parameters
piva_cf_or_id
required
string
Example: 12485671007

VAT number, tax code or ID

Responses

Response Schema: application/json
object
success
boolean
message
string
error
integer

Request samples

CURL *hnd = curl_easy_init();

curl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, "GET");
curl_easy_setopt(hnd, CURLOPT_URL, "https://imprese.openapi.it/pec/%7Bpiva_cf_or_id%7D");

struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, "Authorization: Bearer REPLACE_BEARER_TOKEN");
curl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);

CURLcode ret = curl_easy_perform(hnd);

Response samples

Content type
application/json
{}

Search by name

This endpoint performs a search on the list of all the available companies with the given query.

Authorizations:
bearerAuth
path Parameters
query
required
string
Examples:
  • altravia* - Starts with
  • *altravia - Ends with
  • *altravia* - Contains

A search query; '*' can be used as a wildcard to search for strings that start, contain or end with the given query.

query Parameters
lat
number <double> [ -90 .. 90 ]
Example: lat=13.5478

latitude

lng
number <double> [ -180 .. 180 ]
Example: lng=42.859

longitude

radius
integer ( 0 .. 3000 ]
Example: radius=100

radius in meters

Responses

Response Schema: application/json
Array of objects (Autocomplete)
success
boolean
message
string
error
integer

Request samples

CURL *hnd = curl_easy_init();

curl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, "GET");
curl_easy_setopt(hnd, CURLOPT_URL, "https://imprese.openapi.it/autocomplete/%7Bquery%7D?lat=13.5478&lng=42.859&radius=100");

struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, "Authorization: Bearer REPLACE_BEARER_TOKEN");
curl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);

CURLcode ret = curl_easy_perform(hnd);

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "success": true,
  • "message": "",
  • "error": null
}

All legal forms

With this endpoint you can see all the legal forms registered.

Authorizations:
bearerAuth

Responses

Response Schema: application/json
Array of objects (FormaGiuridica)
success
boolean
message
string
error
integer

Request samples

CURL *hnd = curl_easy_init();

curl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, "GET");
curl_easy_setopt(hnd, CURLOPT_URL, "https://imprese.openapi.it/forma_giuridica");

struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, "Authorization: Bearer REPLACE_BEARER_TOKEN");
curl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);

CURLcode ret = curl_easy_perform(hnd);

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "success": true,
  • "message": "",
  • "error": null
}

Specific legal form

With this endpoint you can see the value of the legal code passed as a parameter.

Authorizations:
bearerAuth
path Parameters
codice_natura_giuridica
required
string
Example: SP

legal code

Responses

Response Schema: application/json
object (FormaGiuridica)
success
boolean
message
string
error
integer

Request samples

CURL *hnd = curl_easy_init();

curl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, "GET");
curl_easy_setopt(hnd, CURLOPT_URL, "https://imprese.openapi.it/forma_giuridica/%7Bcodice_natura_giuridica%7D");

struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, "Authorization: Bearer REPLACE_BEARER_TOKEN");
curl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);

CURLcode ret = curl_easy_perform(hnd);

Response samples

Content type
application/json
{
  • "data": {
    },
  • "success": true,
  • "message": "",
  • "error": null
}

A list of updated companies

This endpoint returns the list of all companies (just the id).

Authorizations:
bearerAuth
query Parameters
lat
number <double> [ -90 .. 90 ]
Example: lat=13.5478

latitude

lng
number <double> [ -180 .. 180 ]
Example: lng=42.859

longitude

radius
integer ( 0 .. 3000 ]
Example: radius=100

radius in meters

skip
integer
Example: skip=50

you can set a number of records you want to skip or the id of a company you want to start from

limit
integer
Example: limit=5000

is used to set the maximum number of results required

dry_run
integer
Enum: 1 0
Example: dry_run=0

simulates a request by returning only the number of records found

Responses

Response Schema: application/json
Array of objects
success
boolean
message
string
error
integer

Request samples

CURL *hnd = curl_easy_init();

curl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, "GET");
curl_easy_setopt(hnd, CURLOPT_URL, "https://imprese.openapi.it/updates?lat=13.5478&lng=42.859&radius=100&skip=50&limit=5000&dry_run=0");

struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, "Authorization: Bearer REPLACE_BEARER_TOKEN");
curl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);

CURLcode ret = curl_easy_perform(hnd);

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "success": true,
  • "message": "",
  • "error": null
}

A list of updated companies

This endpoint returns the list of all companies that have had updates after the time threshold passed via timestamp (just the id).

Authorizations:
bearerAuth
path Parameters
timestamp
required
integer
Example: 1645021792

timestamp

query Parameters
lat
number <double> [ -90 .. 90 ]
Example: lat=13.5478

latitude

lng
number <double> [ -180 .. 180 ]
Example: lng=42.859

longitude

radius
integer ( 0 .. 3000 ]
Example: radius=100

radius in meters

skip
integer
Example: skip=50

you can set a number of records you want to skip or the id of a company you want to start from

limit
integer
Example: limit=5000

is used to set the maximum number of results required

dry_run
integer
Enum: 1 0
Example: dry_run=0

simulates a request by returning only the number of records found

Responses

Response Schema: application/json
Array of objects
success
boolean
message
string
error
integer

Request samples

CURL *hnd = curl_easy_init();

curl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, "GET");
curl_easy_setopt(hnd, CURLOPT_URL, "https://imprese.openapi.it/updates/%7Btimestamp%7D?lat=13.5478&lng=42.859&radius=100&skip=50&limit=5000&dry_run=0");

struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, "Authorization: Bearer REPLACE_BEARER_TOKEN");
curl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);

CURLcode ret = curl_easy_perform(hnd);

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "success": true,
  • "message": "",
  • "error": null
}

Shareholders of a company

This endpoint returns the list of shareholders of a company who have a share of the company greater than 10 percent.

Authorizations:
bearerAuth
path Parameters
piva_cf_or_id
required
string
Example: 12485671007

VAT number, tax code or company ID

Responses

Response Schema: application/json
Array of objects (Soci)
success
boolean
message
string
error
integer

Request samples

CURL *hnd = curl_easy_init();

curl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, "GET");
curl_easy_setopt(hnd, CURLOPT_URL, "https://imprese.openapi.it/soci/%7Bpiva_cf_or_id%7D");

struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, "Authorization: Bearer REPLACE_BEARER_TOKEN");
curl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);

CURLcode ret = curl_easy_perform(hnd);

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "success": true,
  • "message": "",
  • "error": null
}

SDI code of a company

This endpoint returns the company's SDI code updated in real time.

Authorizations:
bearerAuth
path Parameters
piva_cf_or_id
required
string
Example: 12485671007

VAT number, tax code or company ID

Responses

Response Schema: application/json
object
success
boolean
message
string
error
integer

Request samples

CURL *hnd = curl_easy_init();

curl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, "GET");
curl_easy_setopt(hnd, CURLOPT_URL, "https://imprese.openapi.it/codice_destinatario/%7Bpiva_cf_or_id%7D");

struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, "Authorization: Bearer REPLACE_BEARER_TOKEN");
curl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);

CURLcode ret = curl_easy_perform(hnd);

Response samples

Content type
application/json
{
  • "data": {
    },
  • "success": true,
  • "message": "",
  • "error": null
}