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.
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.
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"
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.
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"}]}'
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.
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.
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.
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
| Country | Identifier and example | Checked before the call | Parameter |
|---|---|---|---|
| Spain (ES) | NIF or CIF, A46103834 | A 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 digits | Luhn 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 SC095237 | Format only: eight digits, or two letters and six digits. There is no check digit. | company_number |
| Ireland (IE) | CRO number, 104547 | Format only: a plain integer, typically five to seven digits. There is no check digit. | company_number |
| Poland (PL) | KRS 0000028860, NIP 7740001454, REGON 610188201 | NIP: 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, 923609016 | Nine digits, weighted mod-11. | company_number |
| Finland (FI) | Y-tunnus, 0112038-9 | Seven 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-5790 | Ten 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.106 | Ten 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, 24256790 | Eight 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) |
| stage | What it means |
|---|---|
active | Registered and trading, as the register states it. |
distress | A formal rescue, administration or insolvency proceeding is open; the company still exists. |
winding_up | Dissolved or in liquidation; the company exists only to be wound up. |
closed | The company no longer exists. |
unknown | The register does not disclose the state. |
| Field | What it holds |
|---|---|
data[].index, data[].input | The item's position in the request and the item as sent. Results come back in request order. |
data[].status | found, not_found, error or timeout. |
data[].company | The same object GET /companies/search returns, or null. |
data[].match_score | 0 to 100 for name items, null for exact identifier items. |
data[].error | Set when the status is error or timeout. |
meta | The counts (items, found, not_found, errors), query_ms and your rate_limit. |