Company lookup API: any national 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), 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.

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, 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.

Company registry API and company search by name

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.

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 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"}]}'

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 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.

Scope

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.

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 · Sign up

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)
Estonia (EE)Registry code, 10060701Eight 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, 35763469Eight 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.266CHE 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, 4000303294911 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, HE165HE (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, 50226702 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)

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. status is the standard reading and local_status the register's own word. Read local_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 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, 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, Denmark (sole proprietorships and estates), Estonia (sole traders), Slovakia (sole traders and other natural persons), Switzerland (sole proprietorships and other natural persons), Latvia (individual merchants and other natural persons), Cyprus (trade names and partnerships), Romania (natural persons and sole traders) and the United States, 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, Denmark, Estonia, Switzerland, Latvia and Romania, 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, EE plus the nine digits of the KMKR number, CH the UID followed by MWST, TVA or IVA (CHE-103.867.266 MWST), LV plus the eleven digits of the registration number (LV40003032949), RO plus the CUI (RO5022670). The Slovak and Cypriot registers publish no VAT number, so vat is refused for Slovakia and Cyprus. 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.
Do I need this if the register has a free API?
Many registers publish a free API or open data, and the official source is the right place to start for a single country. What you pay for here is one response shape, one key and one set of limits across every live register, a standard status next to the register's own word, check-digit validation, batches of 100 and the calls that follow a lookup: monitoring with webhooks, insolvency notices, financial statements and sanctions screening (beta).
What does a lookup cost?
A lookup costs 1 credit and each 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 with a card required and nothing charged for 14 days. Starter is 9.99 euros a month for 1,000 credits, Professional 29.99 euros for 10,000 and Scale 99.99 euros for 50,000.