Company lookup API: any European company number, one call

Send a national company identifier and a country, and get the official record back: legal name, legal form, status and registered address. The identifiers are the NIF or CIF (Spain), SIREN or SIRET (France), Companies House number (United Kingdom), CRO number (Ireland), KRS number, NIP or REGON (Poland), organisasjonsnummer (Norway), Y-tunnus (Finland), organisationsnummer (Sweden), enterprise number from the KBO/BCE (Belgium), MBS or OIB (Croatia) and CVR number (Denmark). One key and one response shape for every live register; the country is a parameter. The page carries a live demo with a country picker.

Validate a company registration number

Most identifiers carry a check digit, so a typo can be rejected in your own code before it costs a call: Luhn for a SIREN, a SIRET and a Swedish organisationsnummer, weighted mod-11 for the Norwegian and Finnish numbers and the Polish NIP, mod-97 for the Belgian enterprise number, ISO 7064 for the Croatian OIB and MBS, mod-11 for the Danish CVR number, a control character for the Spanish NIF. UK and Irish numbers carry no check digit, so only the format can be checked. A passing check says the number is well-formed, never that the company exists; the lookup is what tells you that. For Finland, Sweden, Belgium and the Croatian OIB the API verifies the check digit as well and answers a wrong one with a 400 instead of an empty list; for the Danish CVR number and the Croatian MBS the check is advisory.

Look up by identifier

GET /companies/search takes the identifier as company_number, or as nif, siren, siret, nip, regon, oib or vat where a country has its own name for it, plus country. An unknown number returns an empty data array.

curl "https://api.prometiam.com/functions/v1/risk-api/companies/search?company_number=A46103834&country=ES&limit=1" -H "Authorization: Bearer $PROMETIAM_API_KEY"

Check whether a company is active

Every record carries status, the register's own word; status_canonical, a cross-country reading of it; and stage, one of active, distress, winding_up, closed or unknown. In Spain and France a status of dissolved means the company still exists pending liquidation; in the United Kingdom, Ireland, Poland, Norway and Finland it means the company no longer exists. France also returns non_diffusible for entities whose publication is restricted: treat it as unknown, not as inactive.

Bulk company lookup

POST /companies/lookup resolves up to 100 companies in one call. Each item carries a country and either an identifier or a name; results come back in request order with a status of found, not_found, error or timeout. Every item counts as one request against your limits, and a batch that does not fit is refused up front with 429 batch_exceeds_quota and max_items_now. An Idempotency-Key header makes a retry of the same batch free.

curl -X POST "https://api.prometiam.com/functions/v1/risk-api/companies/lookup" -H "Authorization: Bearer $PROMETIAM_API_KEY" -H "Content-Type: application/json" -d '{"items":[{"country":"ES","company_number":"A46103834"},{"country":"FR","siren":"552032534"},{"country":"ES","name":"Inditex"}]}'

Try it without a key

Free lookup tools, one per register, run the same call with a shared key: NIF and CIF, SIREN and SIRET, Companies House number, CRO number, KRS, NIP and REGON, organisasjonsnummer, Y-tunnus, organisationsnummer, enterprise number, MBS and OIB and CVR number.

What it costs

A lookup is one call and a batch item is one call; a request that fails with a 4xx or 5xx is not counted. The free tier is a 14-day trial of 1,000 calls a month, no card. Starter is EUR 9.99 a month for 10,000 calls, Professional EUR 29.99 for 100,000 and Scale EUR 99.99 for 1,000,000.

Scope

A lookup returns company records. Officers and directors exist for Spain, France, the United Kingdom and Norway only, on other endpoints. Ireland and Poland are company-level, with no officers yet. Finland, Sweden, Belgium, Croatia and Denmark are company records only, with no officers, no corporate-event stream and no monitoring; Sweden, Belgium, Croatia and Denmark also have no registry-compliance signal and no insolvency notices, and their sole traders are never served (in Denmark, sole proprietorships and estates). Denmark carries no share capital, and its status includes the register's bankruptcy state. Natural persons are never returned.

Related

Company autocomplete API with a live demo · For invoicing and e-invoicing software · Company lookup for onboarding forms, invoicing and CRMs · Identifier validator · API documentation for POST /companies/lookup · Pricing

Read the full page and try the live demo · Get a free API key

One identifier per country

CountryIdentifier and exampleChecked before the callParameter
Spain (ES)NIF or CIF, A46103834A letter for the legal form, seven digits and a control character that is a digit or a letter depending on the form.company_number (alias nif)
France (FR)SIREN, 552032534; SIRET, 14 digitsLuhn check on both. A SIRET is the SIREN plus a five-digit establishment number; La Poste SIRETs follow their own digit-sum rule.siren, siret
United Kingdom (GB)Companies House number, 00445790 or SC095237Format only: eight digits, or two letters and six digits. There is no check digit.company_number
Ireland (IE)CRO number, 104547Format only: a plain integer, typically five to seven digits. There is no check digit.company_number
Poland (PL)KRS 0000028860, NIP 7740001454, REGON 610188201NIP: ten digits, weighted mod-11. REGON: nine or fourteen digits, weighted check digit. KRS: ten digits with leading zeros, so only the shape is checked.company_number (KRS), nip, regon
Norway (NO)Organisasjonsnummer, 923609016Nine digits, weighted mod-11.company_number
Finland (FI)Y-tunnus, 0112038-9Seven digits, a hyphen and a mod-11 check digit. The hyphen is optional in the API, and a wrong check digit is a 400.company_number or vat (FI01120389)
Sweden (SE)Organisationsnummer, 556012-5790Ten digits, Luhn; the third digit is 2 or higher, which keeps personal identity numbers out. The hyphen is optional, and a wrong check digit is a 400.company_number or vat (SE556012579001)
Belgium (BE)Enterprise number (KBO/BCE), 0417.497.106Ten digits starting 0 or 1; the last two are 97 minus the first eight modulo 97. The dots are optional, and a wrong check digit is a 400.company_number or vat (BE0417497106)
Croatia (HR)MBS, 080000604 (nine digits); OIB, 27759560625 (eleven)ISO 7064 MOD 11,10 on both. The OIB check is enforced with a 400. The MBS check is advisory, because some legacy numbers fail it.company_number (MBS), oib or vat (HR27759560625)
Denmark (DK)CVR number, 24256790Eight digits, with a mod-11 check that is advisory: a mismatch is not an error, and only a number that is not eight digits is a 400. Spaces and hyphens are optional.company_number or vat (DK24256790)

Check whether a company is active

stageWhat it means
activeRegistered and trading, as the register states it.
distressA formal rescue, administration or insolvency proceeding is open; the company still exists.
winding_upDissolved or in liquidation; the company exists only to be wound up.
closedThe company no longer exists.
unknownThe register does not disclose the state.

Bulk company lookup: POST /companies/lookup

FieldWhat it holds
data[].index, data[].inputThe item's position in the request and the item as sent. Results come back in request order.
data[].statusfound, not_found, error or timeout.
data[].companyThe same object GET /companies/search returns, or null.
data[].match_score0 to 100 for name items, null for exact identifier items.
data[].errorSet when the status is error or timeout.
metaThe counts (items, found, not_found, errors), query_ms and your rate_limit.

Frequently asked questions

How do I validate a company registration number with an API?
Check the format and check digit in your own code first; the free identifier validator on this site runs the same arithmetic. Then call GET /companies/search with the number and the country: a hit means the number is on that register. For Finland, Sweden, Belgium and the Croatian OIB the API verifies the check digit too and answers a wrong one with a 400 validation error rather than an empty list; for the Danish CVR number and the Croatian MBS the check is advisory. UK and Irish numbers carry no check digit, so only a lookup tells you whether they exist.
How do I check if a company is active?
Read stage on the record: active means registered and trading as the register states it, distress means a formal rescue, administration or insolvency proceeding is open, winding_up means dissolved or in liquidation, closed means the company no longer exists, and unknown means the register does not say. The register's own word is in status and a cross-country reading in status_canonical. Read status per country: in Spain and France, dissolved means the company still exists pending liquidation; in the United Kingdom, Ireland, Poland, Norway and Finland it means the company no longer exists. France also returns non_diffusible for entities whose publication is restricted; treat that as unknown, not inactive.
Can I look up companies in bulk?
Yes. POST /companies/lookup takes up to 100 items in one call, each with a country and either an identifier or a name, and returns one result per item in request order with the status found, not_found, error or timeout. Every item counts as one request against your limits, and a batch that does not fit is refused up front with 429 batch_exceeds_quota and max_items_now, the number of items that would fit right now. Resend items that come back as timeout.
What if a valid number returns nothing?
The register may not hold the entity. A company registered in the last few days can take a few days to appear, and natural persons and sole traders are never returned: by design in Sweden, Belgium, Croatia and Denmark (sole proprietorships and estates), and because the Finnish records exclude them. Check the country parameter, send a Companies House number with its leading zeros (00445790), and try a name search. An empty data array on a single search, or not_found in a batch, is the answer.
Can I look up a company by VAT number?
For Finland, Sweden, Belgium, Croatia and Denmark pass the VAT number as vat: FI plus the eight digits of the Y-tunnus, SE plus the ten digits and 01, BE plus the ten digits, HR plus the OIB, DK plus the eight digits of the CVR number. In Spain vat is an alias of company_number. To check whether a VAT number is registered with VIES, use the VAT validation endpoint, GET /vat/ followed by the VAT number.
What does a lookup cost?
A lookup is one call and each batch item is one call; a request that fails with a 4xx or 5xx is not counted. The free tier is a 14-day trial of 1,000 calls a month with no card. Starter is 9.99 euros a month for 10,000 calls, Professional 29.99 euros for 100,000 and Scale 99.99 euros for 1,000,000.