DEV Community

Matías Maquieira
Matías Maquieira

Posted on Originally published at prometiam.com

Estonian Company Data via API: e-Business Register Lookups by Registry Code, KMKR or Name (2026)

Estonian Company Data via API: e-Business Register Lookups by Registry Code, KMKR or Name (2026)

Estonia publishes its company register as open data, which is great, and as a set of bulk files and a separate XML service, which is less great when all you want is "give me this company as JSON". This guide shows how to look up an Estonian company by name, by its 8-digit registry code (registrikood) or by its VAT number (KMKR) in one REST call, what comes back, and the limits of the data.

What is the Estonian e-Business Register?

The e-Business Register (e-äriregister, run by the Centre of Registers and Information Systems, RIK) is where every Estonian company is registered. Each one gets an 8-digit registry code. A VAT-registered company also has a KMKR number, written EE plus 9 digits, which is not the registry code.

Query it in one call

You need a key. The free plan is a 14-day trial with 1,000 requests, and a key takes about a minute at prometiam.com/signup. Then search by name:

curl "https://api.prometiam.com/functions/v1/risk-api/companies/search?country=EE&name=swedbank" \
  -H "Authorization: Bearer $PROMETIAM_API_KEY"
Enter fullscreen mode Exit fullscreen mode

By registry code, or by VAT number:

curl "https://api.prometiam.com/functions/v1/risk-api/companies/search?country=EE&company_number=10060701" \
  -H "Authorization: Bearer $PROMETIAM_API_KEY"

curl "https://api.prometiam.com/functions/v1/risk-api/companies/search?country=EE&vat=EE100354546" \
  -H "Authorization: Bearer $PROMETIAM_API_KEY"
Enter fullscreen mode Exit fullscreen mode

Each hit carries an id. The detail call returns the full company object:

curl "https://api.prometiam.com/functions/v1/risk-api/companies/12000010060701?country=EE" \
  -H "Authorization: Bearer $PROMETIAM_API_KEY"
Enter fullscreen mode Exit fullscreen mode

What you get back

This is Swedbank AS as the API returned it on 7 October 2026 (trimmed to the main keys):

{
  "id": 12000010060701,
  "country": "EE",
  "company_number": "10060701",
  "company_name": "SWEDBANK AS",
  "identifiers": [
    { "type": "registry_code", "value": "10060701" },
    { "type": "vat", "value": "EE100354546" }
  ],
  "vat_number": "EE100354546",
  "vat_number_source": "register",
  "legal_form": "AS",
  "legal_form_family": "public_limited_company",
  "status": "active",
  "founding_date": "1996-07-11",
  "activity_code": "64191",
  "activity_code_scheme": "EMTAK-2025",
  "activity_description": "Krediidiasutused",
  "activity_description_en": "Other monetary intermediation",
  "nace_class": "64.19",
  "address": "LIIVALAIA TN 34",
  "postal_code": "15040",
  "city": "TALLINN",
  "region": "HARJU MAAKOND",
  "capital_amount": 85000000,
  "capital_currency": "EUR",
  "employees": 1392,
  "register": "Estonian e-Business Register (RIK)"
}
Enter fullscreen mode Exit fullscreen mode

A few things worth knowing:

  • Two activity-code vintages. Estonian companies report EMTAK codes, and the register holds both EMTAK 2008 and EMTAK 2025 codes depending on when the company last reported. activity_code_scheme tells you which one you got, and nace_class maps either to the NACE class, so you can compare across countries.
  • The KMKR comes from the register. vat_number_source: "register" means the register published it. There is no rule that turns a registry code into a KMKR, so a company without one has vat_number: null.
  • Status is standardised. status uses the same values in every country (active, in_liquidation, in_liquidation_insolvent, ...), and local_status keeps the register's own value.

Python in ten lines

import os, requests

BASE = "https://api.prometiam.com/functions/v1/risk-api"
HEAD = {"Authorization": f"Bearer {os.environ['PROMETIAM_API_KEY']}"}

hits = requests.get(f"{BASE}/companies/search", headers=HEAD,
                    params={"country": "EE", "company_number": "10060701"}).json()["data"]
company = requests.get(f"{BASE}/companies/{hits[0]['id']}", headers=HEAD,
                       params={"country": "EE"}).json()["data"]
print(company["company_name"], company["status"], company["vat_number"])
Enter fullscreen mode Exit fullscreen mode

Limits, stated plainly

  • Company records only: no officers or shareholders, and no registry-compliance signal.
  • Status includes liquidation and bankruptcy, but there are no insolvency notices for Estonia.
  • Sole traders (FIE) are never served.
  • Monitoring (status changes, dissolution, sanctions matches) and register-change events (name, status, legal form, registered address) cover Estonia, dated when the change first appears in the register data.
  • Contains data from the Estonian e-Business Register (RIK), CC BY 4.0.

Same call, other countries

The same country= pattern works for Spain, France, the UK, Ireland, Poland, Norway, Finland, Sweden, Belgium, Croatia, Denmark and Slovakia, with the same response shape, so a Baltic or Nordic onboarding flow does not need a separate integration per register. The full field list is in the API docs, and there is a free registry code lookup if you just need to check one company.

Top comments (0)