Type a few letters of a company name and get the official record back: legal name, identifier, legal form, status and registered address, from the register of the country you pick. One endpoint, one response shape and one key for Spain, France, the United Kingdom, Ireland, Poland, Norway, Finland, Sweden, Belgium, Croatia and Denmark; the country is a parameter. The page carries a live demo that runs in the browser.
GET /companies/search takes the typed letters as name, a country and a limit, and returns a ranked list: a normalised, partial match on the registered name, best match first, each record with a match_score from 0 to 100. Give it an identifier instead of a name (a NIF, a SIREN, a Companies House number) and the same call becomes an exact lookup. Nothing is returned for natural persons.
The browser calls your own server, which holds the key and forwards the search. The React field waits 350 ms after the last keystroke, sends nothing under three characters and aborts the previous request. The server proxy in Node:
app.get('/api/company-lookup', async (req, res) => {
const q = String(req.query.q || '').trim()
const country = String(req.query.country || 'ES').toUpperCase()
if (q.length < 3) return res.json([])
const isId = /^[A-Z]{0,2}\d{4,}[A-Z]?$/i.test(q.replace(/[\s.-]/g, ''))
const params = new URLSearchParams({ country, limit: '6', [isId ? 'company_number' : 'name']: q })
const r = await fetch('https://api.prometiam.com/functions/v1/risk-api/companies/search?' + params,
{ headers: { Authorization: 'Bearer ' + process.env.PROMETIAM_API_KEY } })
if (!r.ok) return res.status(r.status === 429 ? 429 : 502).json([])
const { data } = await r.json()
res.json(data.map((c) => ({ id: c.id, name: c.company_name, number: c.company_number, form: c.legal_form,
status: c.status, city: c.city, postal_code: c.postal_code, address: c.address })))
})
The same call from a shell:
curl "https://api.prometiam.com/functions/v1/risk-api/companies/search?name=telefonica&country=ES&limit=6" -H "Authorization: Bearer $PROMETIAM_API_KEY"
Legal name (company_name), the register's own identifier (company_number), legal form (legal_form and legal_form_full), status (status, status_canonical and stage), address (address, postal_code, city and province), activity (activity_code and activity_description), founding_date, share capital where the register publishes it, match_score for name searches and last_seen_date. A field the register does not publish is null, never omitted.
Spain: NIF or CIF. France: SIREN or SIRET. United Kingdom: Companies House number. Ireland: CRO number. Poland: KRS number, with NIP and REGON. Norway: organisasjonsnummer. Finland: Y-tunnus. Sweden: organisationsnummer. Belgium: enterprise number (KBO/BCE). Croatia: MBS and OIB. Denmark: CVR number.
Derived from the public tier prices, the monthly price divided by the monthly calls: Starter, EUR 9.99 for 10,000 calls, is about EUR 1.00 per 1,000 calls; Professional, EUR 29.99 for 100,000, about EUR 0.30; Scale, EUR 99.99 for 1,000,000, about EUR 0.10. The free tier is a 14-day trial of 1,000 calls a month, no card. A search that fires is one call, a batch item is one call, and a request that fails with a 4xx or 5xx is not counted.
The autocomplete 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.
Company lookup API: validation, status and batches · Company lookup for onboarding forms, invoicing and CRMs · Free lookup tools, from the NIF lookup to the CVR lookup · API documentation for GET /companies/search · Pricing
Read the full page and try the live demo · Get a free API key
| Form field | Response field | What it holds |
|---|---|---|
| Legal name | company_name | The registered name. |
| Tax or registration number | company_number | The register's own number for the country: NIF, SIREN, Companies House number, CRO number, KRS, organisasjonsnummer and the equivalents for the other countries. nif and siren stay as native aliases. |
| Legal form | legal_form, legal_form_full | The register's code or label, with legal_form_canonical, legal_form_abbreviation and legal_form_family to compare forms across countries. The full label only where the register publishes it. |
| Status | status, status_canonical, stage | The register's own word, a cross-country reading of it, and a lifecycle stage: active, distress, winding_up, closed or unknown. |
| Address | address, postal_code, city, province | The registered address. Province is the register's region: province, département, county, voivodeship or municipality. |
| Activity | activity_code, activity_description | The register's own classification (CNAE, NAF, SIC, PKD, NACE); the description only where the register publishes a text. |
| Dates | founding_date, dissolution_date | Incorporation and, where it applies, dissolution. |
| Share capital | capital_amount, capital_currency | Where the register publishes it; capital_euros is set when the currency is EUR. |
| Match quality | match_score | 0 to 100 for a name search, best first. Null for an identifier lookup. |
| Freshness | last_seen_date | The most recent register publication or snapshot in which the record appeared. |
| Follow-up call | id | The record id, which is the input of the company detail endpoint (GET /companies/ followed by the id). |
| Country | Register | Identifier | Parameter |
|---|---|---|---|
| Spain (ES) | Registro Mercantil, as published in the BORME | NIF or CIF | company_number (alias nif) |
| France (FR) | INPI and Sirene | SIREN or SIRET | siren, siret |
| United Kingdom (GB) | Companies House | Company number, such as 00445790 or SC095237 | company_number |
| Ireland (IE) | Companies Registration Office (CRO) | CRO number | company_number |
| Poland (PL) | KRS, the National Court Register | KRS number; NIP and REGON also resolve | company_number, nip, regon |
| Norway (NO) | Brønnøysundregistrene | Organisasjonsnummer | company_number |
| Finland (FI) | Trade Register (PRH and YTJ) | Y-tunnus | company_number or vat |
| Sweden (SE) | Bolagsverket | Organisationsnummer | company_number or vat |
| Belgium (BE) | Crossroads Bank for Enterprises (KBO/BCE) | Enterprise number | company_number or vat |
| Croatia (HR) | Sudski registar, the court register | MBS or OIB | company_number (MBS), oib or vat |
| Denmark (DK) | Central Business Register (CVR) | CVR number | company_number or vat |
| Tier | Price a month | Calls a month | Derived, per 1,000 calls |
|---|---|---|---|
| Free, 14-day trial | €0, no card | 1,000 | Not billed |
| Starter | €9.99 | 10,000 | About €1.00 |
| Professional | €29.99 | 100,000 | About €0.30 |
| Scale | €99.99 | 1,000,000 | About €0.10 |