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), registry code (Estonia), IČO (Slovakia), UID (Switzerland), registration number (Latvia), registration number (Cyprus), CUI (Romania), juridinio asmens kodas (Lithuania), corporation number (Canada), ACN or ARBN (Australia), corporate number (Japan), company number (Israel), UEN (Singapore), NIT (Colombia), unified business number (Taiwan), IČO (Czech Republic), CNPJ (Brazil), CUIT (Argentina), LEI (Germany) or a state-prefixed number such as NY-4424185 (United States). 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, a standard reading that means the same in every country; stage, one of active, distress, winding_up, closed or unknown; and local_status, the register's own word. In Spain and France a local_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.
A company registry API is the same lookup seen from the other side: instead of learning the format, keys and limits of each national register, you send the identifier and a country and read one schema back. The register-specific parts stay in the response, in local_status, local_legal_form and registry_details. A company search API by name uses the same endpoint: GET /companies/search with name and country returns ranked candidates, and the record you pick is read by its id.
After a lookup, the same key adds monitoring with webhooks (every live country except France and Chile), insolvency notices in sixteen markets, filed annual accounts on the Scale plan, sanctions screening (beta) and an MCP server for Claude and Cursor.
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 rate limits and costs 1 credit, 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 costs 1 credit and a batch item costs 1 credit; a request that fails with a 4xx or 5xx costs nothing. Starter begins with a 14-day trial of 500 credits, card required, nothing charged for 14 days. Starter is EUR 9.99 a month for 1,000 credits, Professional EUR 29.99 for 10,000 and Scale EUR 99.99 for 50,000.
A lookup returns company records. Officers and directors exist for Spain, France, the United Kingdom, Norway, Poland and the Czech Republic (Polish natural persons are masked by the register itself; Czech natural persons are the name and the month and year of birth only) only, on other endpoints. Ireland is company-level, with no officers yet. Finland, Sweden, Belgium, Croatia, Denmark, Estonia, Slovakia, Switzerland, Latvia, Cyprus, Romania, Lithuania, Canada, Australia, Japan, Israel, Singapore, Colombia (apart from the name of its legal representative), Taiwan, Germany, Argentina, Ukraine, Serbia, Slovenia, Ecuador, the Netherlands, Brazil and the United States are company records only, with register-change events and monitoring (Argentina has no dissolution alert, and Mexico covers its LEI-registered entities only), but no officers and no registry-compliance signal; corporate insolvency notices cover Finland, Denmark, Croatia, Sweden and Switzerland (a Swiss notice is linked to the company by its UID where the notice names it) but not Belgium, Estonia or Slovakia, 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. Chile is company records only, with no events and no monitoring. 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
| 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) |
| Estonia (EE) | Registry code, 10060701 | Eight digits, the first being 1, 7, 8 or 9, with a mod-11 check digit that is enforced: a wrong one is a 400. Spaces and hyphens are optional. | company_number or vat (EE100354546, the KMKR number, where the register publishes it) |
| Slovakia (SK) | IČO, 35763469 | Eight digits (a six or seven digit number is read with leading zeros), with a mod-11 check that is advisory: a mismatch is not an error, and only a number that is not six to eight digits is a 400. | company_number only: the register carries no VAT number, so vat is refused |
| Switzerland (CH) | UID, CHE-103.867.266 | CHE plus nine digits (separators and a MWST, TVA or IVA suffix are optional), with a mod-11 check digit that is enforced: a wrong one is a 400. | company_number, or vat with the UID followed by MWST, TVA or IVA (CHE-103.867.266 MWST) |
| Latvia (LV) | Registration number, 40003032949 | 11 digits (an LV prefix is optional), with a mod-11 check that is enforced: a wrong one is a 400; the oldest 9-digit codes carry no check digit. | company_number, or vat with LV and the eleven digits (LV40003032949) |
| Cyprus (CY) | Registration number, HE165 | HE (company) or AE (overseas company) and up to nine digits without a leading zero; bare digits mean HE. No check digit. | company_number only: the register carries no VAT number, so vat is refused |
| Romania (RO) | CUI, 5022670 | 2 to 10 digits without a leading zero (an RO prefix is optional); the check digit is advisory, so a mismatch is a warning; a 13-digit personal code is refused. | company_number, or vat with RO plus the CUI (RO5022670) |
| 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. |