Regia API · v1.0

Estonian company data, over HTTP.

Estonian company data: registry profiles, people and ownership, annual reports, taxes, credit scores, court and enforcement records, real estate and more. One key, JSON responses, 45 endpoints grouped like the sections of a company page on regia.ee.

Quickstart

  1. Get an API key from Regia (see Authentication).
  2. Send it in the X-API-Key header with every request.
  3. Find companies by name, registry code or VAT number, then fetch the sections you need, or embed them with include.
Every response has the same envelope: success, data and meta. Errors replace data with error.
First request
curl --request GET \
  --url 'https://api.regia.ee/companies?q=energia&limit=5' \
  --header 'X-API-Key: YOUR_API_KEY'
Response envelope
{
  "success": true,
  "data": [
    {
      "registry_code": "10421629",
      "name": "Eesti Energia AS"
    }
  ],
  "meta": {
    "request_id": "9d2f6c1e-5b7a-4e0c-8f3d-2a1b0c9e8d7f",
    "pagination": {
      "page": 1,
      "limit": 25,
      "total": 1,
      "has_more": false
    }
  }
}

Conventions

Companies
Identified by the 8-digit registry code, e.g. /companies/10421629. Codes are strings in responses. Find a code by name with search, or resolve many names, codes and VAT numbers at once with lookup.
Sections
Everything about one company is a section under it: /companies/{code}/shareholders, /credit-score and so on. Get several in one request with ?include=shareholders,credit_score on the company.
Lists
Lists page with page and limit (1-100, default 25); meta.pagination gives the total and has_more. Relations (representatives, shareholders, ...) are current ones unless you add history=true.
Language
lang=en or lang=ru translates labels and classifier values; Estonian is the default. Codes, names and free text are never translated, so filter and match on codes.
Values
Dates are YYYY-MM-DD, amounts are euros as numbers, and unknown values are null rather than missing.
Limits
10 requests per second per key by default; above it you get 429 rate_limited with Retry-After. Every response carries a request_id; quote it when contacting us.

Companies

Companies

Search companies, match many at once by registry code, VAT number or name, and fetch registry profiles.

Base path /companies

Search and list companies

Find companies by name or registry code, with optional filters. With q, results are ranked like the regia.ee search box: exact names first, legal form words (OÜ, AS, MTÜ ...) optional, previous names matched too, large and active companies ahead of small or deleted ones; at most 200 results. Without q, every company matching the filters is listed, newest registrations first.

GEThttps://api.regia.ee/companies

Parameters

qquery
string·Name (or part of it) or a registry code prefix of 3-8 digits.
statusquery
string·R, L, N or D. Comma-separate or repeat for several.
legal_formquery
string·Legal form by name or abbreviation: Osaühing or OÜ, Aktsiaselts or AS, MTÜ, FIE, KÜ ... Several allowed.
activityquery
string·EMTAK code prefix of a current activity, e.g. 62 or 62101. Several allowed.
countyquery
string·County of the legal address, e.g. Harju or Tartu. Several allowed.
vat_numberquery
string·Current VAT number, e.g. EE100366327. Lists every company holding it: the members of a VAT group share one number. Several allowed.
registered_from, registered_toquery
date·Registration date range, YYYY-MM-DD, both inclusive.
pagequery
integer·Page number, from 1. Default 1.
limitquery
integer·Items per page, 1-100. Default 25.
langquery
string·Language of labels and classifier values: et (default), en or ru. Names and free text stay as registered.

Request

curl
curl --request GET \
  --url 'https://api.regia.ee/companies?q=energia&status=R&limit=2' \
  --header 'X-API-Key: YOUR_API_KEY'

Response

200 OK
{
  "success": true,
  "data": [
    {
      "registry_code": "11641009",
      "name": "Energia Nord OÜ",
      "legal_form": {
        "name": "Osaühing",
        "label": "Osaühing"
      },
      "status": {
        "code": "R",
        "label": "Registreeritud"
      },
      "registered_on": "2009-04-27",
      "deleted_on": null,
      "vat_number": "EE101351030",
      "address": {
        "full": "Harju maakond, Tallinn, Kesklinna linnaosa, Roseni tn 11",
        "postal_code": "10111"
      },
      "url": "https://regia.ee/entity/11641009-energia-nord-ou",
      "matched_previous_name": null
    },
    {
      "registry_code": "11487593",
      "name": "OÜ Energia ja Ehitus",
      "legal_form": {
        "name": "Osaühing",
        "label": "Osaühing"
      },
      "status": {
        "code": "R",
        "label": "Registreeritud"
      },
      "registered_on": "2008-03-27",
      "deleted_on": null,
      "vat_number": "EE101217831",
      "address": {
        "full": "Tartu maakond, Elva vald, Elva linn, Laane tn 15",
        "postal_code": "61504"
      },
      "url": "https://regia.ee/entity/11487593-ou-energia-ja-ehitus",
      "matched_previous_name": null
    }
  ],
  "meta": {
    "request_id": "9d2f6c1e-5b7a-4e0c-8f3d-2a1b0c9e8d7f",
    "pagination": {
      "page": 1,
      "limit": 2,
      "total": 200,
      "has_more": true
    }
  }
}

Response fields

registry_code
8-digit registry code, as a string.
name
Registered name.
legal_form
name (Estonian, as used in filters) and label (in lang).
status
code and label: R registered, L in liquidation, N bankrupt, D deleted.
registered_on, deleted_on
Registration and deletion dates (YYYY-MM-DD).
vat_number
Current VAT number, or null when not VAT registered.
address
full legal address and postal_code.
url
The company page on regia.ee.
matched_previous_name
With q: the previous name that matched, when the current name did not.
meta.pagination
page, limit, total (all matching rows) and has_more.

Look up many companies

Resolve up to 100 companies in one request, e.g. to match a customer list. Each query is handled on its own: 8 digits is a registry code, EE plus 9 digits (or 9 digits) a VAT number, anything else a name search returning the best matches. A VAT number returns every company holding it now, since the members of a VAT group share one number; with no current holder, the company that held it last. Guaranteed: data has one answer per query, in the order of the queries, and each answer's query is the query exactly as sent. Billed per query.

POSThttps://api.regia.ee/companies/lookup

Parameters

langquery
string·Language of labels and classifier values: et (default), en or ru. Names and free text stay as registered.

Body

queriesbodyrequired
string[]·1-100 registry codes, VAT numbers or names, mixed freely.
limitbody
integer·Matches per name or VAT number query, 1-10. Default 1 (the best match, or one holder of a VAT number; see vat_holders).

Request

curl
curl --request POST \
  --url 'https://api.regia.ee/companies/lookup' \
  --header 'X-API-Key: YOUR_API_KEY' \
  --header 'Content-Type: application/json' \
  --data '{"queries":["10421629","EE100366327","telia eesti"],"limit":1}'

Response

200 OK
{
  "success": true,
  "data": [
    {
      "query": "10421629",
      "type": "registry_code",
      "matches": [
        {
          "registry_code": "10421629",
          "name": "Eesti Energia AS",
          "legal_form": {
            "name": "Aktsiaselts",
            "label": "Aktsiaselts"
          },
          "status": {
            "code": "R",
            "label": "Registreeritud"
          },
          "registered_on": "1998-03-31",
          "deleted_on": null,
          "vat_number": "EE100366327",
          "address": {
            "full": "Harju maakond, Tallinn, Kesklinna linnaosa, Lelle tn 22",
            "postal_code": "11318"
          },
          "url": "https://regia.ee/entity/10421629-eesti-energia-as"
        }
      ]
    },
    {
      "query": "EE100366327",
      "type": "vat_number",
      "matches": [
        {
          "registry_code": "10421629",
          "name": "Eesti Energia AS",
          "legal_form": {
            "name": "Aktsiaselts",
            "label": "Aktsiaselts"
          },
          "status": {
            "code": "R",
            "label": "Registreeritud"
          },
          "registered_on": "1998-03-31",
          "deleted_on": null,
          "vat_number": "EE100366327",
          "address": {
            "full": "Harju maakond, Tallinn, Kesklinna linnaosa, Lelle tn 22",
            "postal_code": "11318"
          },
          "url": "https://regia.ee/entity/10421629-eesti-energia-as"
        }
      ]
    }
  ],
  "meta": {
    "request_id": "9d2f6c1e-5b7a-4e0c-8f3d-2a1b0c9e8d7f",
    "queries": 3,
    "matched": 3
  }
}

Response fields

query
The query exactly as sent (not trimmed or normalised).
type
How it was read: registry_code, vat_number or name.
matches
Company summaries, best first; empty when nothing matched.
skipped
query_too_short when a name query had no word of 3+ characters and was not searched.
vat_holders
VAT number queries: how many companies hold the number now. More than 1 is a VAT group; raise limit to get them all. 0 means no current holder, and matches has the last one.
meta.queries, meta.matched
Number of queries and of queries with at least one match.

Get a company by VAT number

The company that holds a VAT number, or held it last if the registration has ended. Returns the same profile as Get a company, and takes the same include parameter. The members of a VAT group share one number: then this returns one of them (registered companies first), meta.vat_holders counts them all, and Search and list companies with vat_number lists every one.

GEThttps://api.regia.ee/companies/by-vat/{vat_number}

Parameters

vat_numberpathrequired
string·Estonian VAT number: EE100366327, ee 100366327 or 100366327.
includequery
string·Sections to embed, as for Get a company.
langquery
string·Language of labels and classifier values: et (default), en or ru. Names and free text stay as registered.

Request

curl
curl --request GET \
  --url 'https://api.regia.ee/companies/by-vat/EE100366327' \
  --header 'X-API-Key: YOUR_API_KEY'

Response

200 OK
{
  "success": true,
  "data": {
    "registry_code": "10421629",
    "name": "Eesti Energia AS",
    "legal_form": {
      "name": "Aktsiaselts",
      "label": "Aktsiaselts"
    },
    "status": {
      "code": "R",
      "label": "Registreeritud"
    },
    "registered_on": "1998-03-31",
    "deleted_on": null,
    "vat_number": "EE100366327",
    "address": {
      "full": "Harju maakond, Tallinn, Kesklinna linnaosa, Lelle tn 22",
      "postal_code": "11318"
    },
    "url": "https://regia.ee/entity/10421629-eesti-energia-as",
    "share_capital": {
      "amount": 846645750,
      "currency": "EUR"
    },
    "financial_year": {
      "start": "01-01",
      "end": "12-31"
    },
    "accounting_required": true,
    "previous_names": [
      "Eesti Energia Aktsiaselts"
    ],
    "contacts": [
      {
        "type": "email",
        "value": "info@enefit.com"
      },
      {
        "type": "phone",
        "value": "+372 4652222"
      }
    ],
    "activities": [
      {
        "code": "35151",
        "title": "Elektrienergia müük",
        "emtak_version": 2025,
        "main": true
      },
      {
        "code": "35231",
        "title": "Gaasimüük magistraalvõrkude kaudu",
        "emtak_version": 2025,
        "main": false
      }
    ],
    "vat_registrations": [
      {
        "vat_number": "EE100366327",
        "from": "1994-01-01",
        "until": null
      }
    ],
    "einvoice_providers": [
      "Arvekeskus"
    ],
    "consumer_blacklist_since": null,
    "updated_at": "2026-09-27T01:11:39"
  },
  "meta": {
    "request_id": "9d2f6c1e-5b7a-4e0c-8f3d-2a1b0c9e8d7f",
    "vat_number": "EE100366327"
  }
}

Response fields

data
Company profile; see Get a company.
meta.vat_number
The VAT number as normalised.
meta.vat_holders
Companies holding the number now: more than 1 is a VAT group, 0 means the registration has ended.

Get a company

Registry profile of one company. Add include to embed any sections in the same request: lists embed their first 25 rows with the total, objects in full. include=all embeds everything.

GEThttps://api.regia.ee/companies/{registry_code}

Parameters

registry_codepathrequired
string·8-digit registry code (registrikood), e.g. 10421629.
includequery
string·Comma-separated sections: representatives, shareholders, beneficial_owners, other_parties, holdings, financials, annual_reports, quarterly_taxes, tax_debt, tax_declarations, credit_score, court_cases, payment_orders, enforcements, rulings, announcements, consumer_disputes, properties, domains, permits, state_payments, or all.
historyquery
boolean·For embedded people sections: include ended relations.
langquery
string·Language of labels and classifier values: et (default), en or ru. Names and free text stay as registered.

Request

curl
curl --request GET \
  --url 'https://api.regia.ee/companies/10421629?include=credit_score&lang=en' \
  --header 'X-API-Key: YOUR_API_KEY'

Response

200 OK
{
  "success": true,
  "data": {
    "registry_code": "10421629",
    "name": "Eesti Energia AS",
    "legal_form": {
      "name": "Aktsiaselts",
      "label": "Public limited company"
    },
    "status": {
      "code": "R",
      "label": "Registered"
    },
    "registered_on": "1998-03-31",
    "deleted_on": null,
    "vat_number": "EE100366327",
    "address": {
      "full": "Harju maakond, Tallinn, Kesklinna linnaosa, Lelle tn 22",
      "postal_code": "11318"
    },
    "url": "https://regia.ee/en/entity/10421629-eesti-energia-as",
    "share_capital": {
      "amount": 846645750,
      "currency": "EUR"
    },
    "financial_year": {
      "start": "01-01",
      "end": "12-31"
    },
    "accounting_required": true,
    "previous_names": [
      "Eesti Energia Aktsiaselts"
    ],
    "contacts": [
      {
        "type": "email",
        "value": "info@enefit.com"
      },
      {
        "type": "phone",
        "value": "+372 4652222"
      }
    ],
    "activities": [
      {
        "code": "35151",
        "title": "Sale of electricity",
        "emtak_version": 2025,
        "main": true
      },
      {
        "code": "35231",
        "title": "Gas sale via mains networks",
        "emtak_version": 2025,
        "main": false
      }
    ],
    "vat_registrations": [
      {
        "vat_number": "EE100366327",
        "from": "1994-01-01",
        "until": null
      }
    ],
    "einvoice_providers": [
      "Arvekeskus"
    ],
    "consumer_blacklist_since": null,
    "updated_at": "2026-09-27T01:11:39",
    "credit_score": {
      "rated": true,
      "date": "2026-09-27",
      "score": 100,
      "rating": "AAA",
      "probability_of_default": 0.0032,
      "rule": null,
      "groups": [
        {
          "group": "payment",
          "label": "Payment behaviour",
          "score": 100
        },
        {
          "group": "financial",
          "label": "Financial position",
          "score": 47
        },
        {
          "group": "filing",
          "label": "Reporting",
          "score": 96
        }
      ],
      "risks": [
        {
          "factor": "rep_failed_share",
          "label": "Failures of the directors' other companies",
          "value": "83 / 5 723 (1%)",
          "group": "people",
          "effect": -1
        }
      ],
      "strengths": [
        {
          "factor": "section",
          "label": "Industry",
          "value": "Electricity, gas and steam supply",
          "group": "profile",
          "effect": 6.6
        },
        {
          "factor": "tax_to_rev",
          "label": "Taxes / turnover (4 quarters)",
          "value": "5,4%",
          "group": "payment",
          "effect": 5.7
        },
        {
          "factor": "report_overdue_months",
          "label": "Annual report",
          "value": "2025 · up to date",
          "group": "filing",
          "effect": 5.3
        }
      ]
    }
  },
  "meta": {
    "request_id": "9d2f6c1e-5b7a-4e0c-8f3d-2a1b0c9e8d7f"
  }
}

Response fields

registry_code
8-digit registry code, as a string.
name
Registered name.
legal_form
name (Estonian, as used in filters) and label (in lang).
status
code and label: R registered, L in liquidation, N bankrupt, D deleted.
registered_on, deleted_on
Registration and deletion dates (YYYY-MM-DD).
vat_number
Current VAT number, or null when not VAT registered.
address
full legal address and postal_code.
url
The company page on regia.ee.
share_capital
amount and currency.
financial_year
start and end as MM-DD.
accounting_required
Whether the company must file annual reports.
previous_names
Earlier registered names.
contacts
Current contacts: type is email, phone, mobile, website or other.
activities
Current EMTAK activities with code, title, emtak_version and main.
vat_registrations
VAT registration periods, newest first; until is null while active.
einvoice_providers
Operators the company receives e-invoices through.
consumer_blacklist_since
Date the consumer protection authority listed the company, or null.
updated_at
When the registry data last changed.
<section>
Each included section, under its name with underscores.

People & ownership

People & ownership

Representatives, shareholders, beneficial owners, holdings, and the roles of a person across companies.

Base path /companies/{registry_code}

Representatives

Board members and other people who may represent the company.

GEThttps://api.regia.ee/companies/{registry_code}/representatives

Parameters

registry_codepathrequired
string·8-digit registry code (registrikood), e.g. 10421629.
historyquery
boolean·true to include ended relations as well. Default false: current ones only.
qquery
string·Only rows whose text columns contain this (names, numbers, roles).
pagequery
integer·Page number, from 1. Default 1.
limitquery
integer·Items per page, 1-100. Default 25.
langquery
string·Language of labels and classifier values: et (default), en or ru. Names and free text stay as registered.

Request

curl
curl --request GET \
  --url 'https://api.regia.ee/companies/10421629/representatives?limit=2' \
  --header 'X-API-Key: YOUR_API_KEY'

Response

200 OK
{
  "success": true,
  "data": [
    {
      "party": {
        "type": "person",
        "name": "Gerrit Mäesalu",
        "registry_code": null,
        "person_id": 111336,
        "personal_code": "38210186525",
        "birth_date": "1982-10-18",
        "url": "https://regia.ee/affiliate/111336-gerrit-maesalu"
      },
      "role": {
        "code": "JUHL",
        "label": "Juhatuse liige"
      },
      "from": "2026-06-22",
      "until": null
    },
    {
      "party": {
        "type": "person",
        "name": "Lauri Karp",
        "registry_code": null,
        "person_id": 73616,
        "personal_code": "37404170212",
        "birth_date": "1974-04-17",
        "url": "https://regia.ee/affiliate/73616-lauri-karp"
      },
      "role": {
        "code": "JUHL",
        "label": "Juhatuse liige"
      },
      "from": "2024-09-10",
      "until": null
    }
  ],
  "meta": {
    "request_id": "9d2f6c1e-5b7a-4e0c-8f3d-2a1b0c9e8d7f",
    "pagination": {
      "page": 1,
      "limit": 2,
      "total": 4,
      "has_more": true
    }
  }
}

Response fields

party
Who holds the role. type is person, company (an Estonian registry entry, with registry_code) or organisation (foreign or unregistered). People have person_id (for /persons/{id}), personal_code and birth_date.
role
Role code and label, e.g. JUHL (board member). Codes: /classifiers/{type}.
from, until
Start and end date. until is null while the role is current.
meta.pagination
page, limit, total (all matching rows) and has_more.

Shareholders

Owners with their stakes, largest first. Includes foreign and non-registry owners.

GEThttps://api.regia.ee/companies/{registry_code}/shareholders

Parameters

registry_codepathrequired
string·8-digit registry code (registrikood), e.g. 10421629.
historyquery
boolean·true to include ended relations as well. Default false: current ones only.
qquery
string·Only rows whose text columns contain this (names, numbers, roles).
pagequery
integer·Page number, from 1. Default 1.
limitquery
integer·Items per page, 1-100. Default 25.
langquery
string·Language of labels and classifier values: et (default), en or ru. Names and free text stay as registered.

Request

curl
curl --request GET \
  --url 'https://api.regia.ee/companies/10421629/shareholders?lang=en' \
  --header 'X-API-Key: YOUR_API_KEY'

Response

200 OK
{
  "success": true,
  "data": [
    {
      "party": {
        "type": "company",
        "name": "Rahandusministeerium",
        "registry_code": "70000272",
        "person_id": null,
        "personal_code": null,
        "birth_date": null,
        "url": "https://regia.ee/en/entity/70000272-rahandusministeerium"
      },
      "role": {
        "code": "S",
        "label": "Shareholder"
      },
      "share": {
        "percent": 100,
        "amount": 846645750,
        "currency": "EUR",
        "ownership": {
          "code": "L",
          "label": "Sole ownership"
        }
      },
      "from": "2025-07-14",
      "until": null
    }
  ],
  "meta": {
    "request_id": "9d2f6c1e-5b7a-4e0c-8f3d-2a1b0c9e8d7f",
    "pagination": {
      "page": 1,
      "limit": 25,
      "total": 1,
      "has_more": false
    }
  }
}

Response fields

party
Who holds the role. type is person, company (an Estonian registry entry, with registry_code) or organisation (foreign or unregistered). People have person_id (for /persons/{id}), personal_code and birth_date.
role
Role code and label, e.g. JUHL (board member). Codes: /classifiers/{type}.
from, until
Start and end date. until is null while the role is current.
share
percent, amount, currency and ownership type (sole, joint, ...).
meta.pagination
page, limit, total (all matching rows) and has_more.

Beneficial owners

Ultimate beneficial owners as declared to the register, with how they exercise control.

GEThttps://api.regia.ee/companies/{registry_code}/beneficial-owners

Parameters

registry_codepathrequired
string·8-digit registry code (registrikood), e.g. 10421629.
historyquery
boolean·true to include ended relations as well. Default false: current ones only.
qquery
string·Only rows whose text columns contain this (names, numbers, roles).
pagequery
integer·Page number, from 1. Default 1.
limitquery
integer·Items per page, 1-100. Default 25.
langquery
string·Language of labels and classifier values: et (default), en or ru. Names and free text stay as registered.

Request

curl
curl --request GET \
  --url 'https://api.regia.ee/companies/10421629/beneficial-owners?limit=1&lang=en' \
  --header 'X-API-Key: YOUR_API_KEY'

Response

200 OK
{
  "success": true,
  "data": [
    {
      "party": {
        "type": "person",
        "name": "Janek Stalmeister",
        "registry_code": null,
        "person_id": 5974,
        "personal_code": "37403310308",
        "birth_date": "1974-03-31",
        "url": "https://regia.ee/en/affiliate/5974-janek-stalmeister"
      },
      "role": {
        "code": "J",
        "label": "Member of higher governing body (board or supervisory board)"
      },
      "from": "2026-09-03",
      "until": null
    }
  ],
  "meta": {
    "request_id": "9d2f6c1e-5b7a-4e0c-8f3d-2a1b0c9e8d7f",
    "pagination": {
      "page": 1,
      "limit": 1,
      "total": 11,
      "has_more": true
    }
  }
}

Response fields

party
Who holds the role. type is person, company (an Estonian registry entry, with registry_code) or organisation (foreign or unregistered). People have person_id (for /persons/{id}), personal_code and birth_date.
role
Role code and label, e.g. JUHL (board member). Codes: /classifiers/{type}.
from, until
Start and end date. until is null while the role is current.
meta.pagination
page, limit, total (all matching rows) and has_more.

Other parties

Other registered roles without a stake: supervisory board members, auditors, founders, liquidators and similar.

GEThttps://api.regia.ee/companies/{registry_code}/other-parties

Parameters

registry_codepathrequired
string·8-digit registry code (registrikood), e.g. 10421629.
historyquery
boolean·true to include ended relations as well. Default false: current ones only.
qquery
string·Only rows whose text columns contain this (names, numbers, roles).
pagequery
integer·Page number, from 1. Default 1.
limitquery
integer·Items per page, 1-100. Default 25.
langquery
string·Language of labels and classifier values: et (default), en or ru. Names and free text stay as registered.

Request

curl
curl --request GET \
  --url 'https://api.regia.ee/companies/10421629/other-parties?limit=1&lang=en' \
  --header 'X-API-Key: YOUR_API_KEY'

Response

200 OK
{
  "success": true,
  "data": [
    {
      "party": {
        "type": "person",
        "name": "Tarmo Porgand",
        "registry_code": null,
        "person_id": 870861,
        "personal_code": "37708274224",
        "birth_date": "1977-08-27",
        "url": "https://regia.ee/en/affiliate/870861-tarmo-porgand"
      },
      "role": {
        "code": "N",
        "label": "Supervisory-board member"
      },
      "from": "2026-08-01",
      "until": null
    }
  ],
  "meta": {
    "request_id": "9d2f6c1e-5b7a-4e0c-8f3d-2a1b0c9e8d7f",
    "pagination": {
      "page": 1,
      "limit": 1,
      "total": 10,
      "has_more": true
    }
  }
}

Response fields

party
Who holds the role. type is person, company (an Estonian registry entry, with registry_code) or organisation (foreign or unregistered). People have person_id (for /persons/{id}), personal_code and birth_date.
role
Role code and label, e.g. JUHL (board member). Codes: /classifiers/{type}.
from, until
Start and end date. until is null while the role is current.
meta.pagination
page, limit, total (all matching rows) and has_more.

Holdings

Companies in which this company holds shares.

GEThttps://api.regia.ee/companies/{registry_code}/holdings

Parameters

registry_codepathrequired
string·8-digit registry code (registrikood), e.g. 10421629.
historyquery
boolean·true to include ended relations as well. Default false: current ones only.
qquery
string·Only rows whose text columns contain this (names, numbers, roles).
pagequery
integer·Page number, from 1. Default 1.
limitquery
integer·Items per page, 1-100. Default 25.
langquery
string·Language of labels and classifier values: et (default), en or ru. Names and free text stay as registered.

Request

curl
curl --request GET \
  --url 'https://api.regia.ee/companies/10421629/holdings?limit=2' \
  --header 'X-API-Key: YOUR_API_KEY'

Response

200 OK
{
  "success": true,
  "data": [
    {
      "company": {
        "registry_code": "12894095",
        "name": "Attarat Holding OÜ",
        "url": "https://regia.ee/entity/12894095-attarat-holding-ou"
      },
      "role": {
        "code": "OSAN",
        "label": "Osanik"
      },
      "share": {
        "percent": 100,
        "amount": 2502,
        "currency": "EUR",
        "ownership": {
          "code": "L",
          "label": "Ainuomand"
        }
      },
      "from": "2023-09-01",
      "until": null
    },
    {
      "company": {
        "registry_code": "11050857",
        "name": "Elektrilevi OÜ",
        "url": "https://regia.ee/entity/11050857-elektrilevi-ou"
      },
      "role": {
        "code": "OSAN",
        "label": "Osanik"
      },
      "share": {
        "percent": 100,
        "amount": 161779121,
        "currency": "EUR",
        "ownership": {
          "code": "L",
          "label": "Ainuomand"
        }
      },
      "from": "2024-01-02",
      "until": null
    }
  ],
  "meta": {
    "request_id": "9d2f6c1e-5b7a-4e0c-8f3d-2a1b0c9e8d7f",
    "pagination": {
      "page": 1,
      "limit": 2,
      "total": 6,
      "has_more": true
    }
  }
}

Response fields

company
registry_code, name and url of the company owned.
role, share, from, until
As in Shareholders.
meta.pagination
page, limit, total (all matching rows) and has_more.

Search people

Find people (and foreign organisations) linked to Estonian companies by name, best matches first; at most 200 results.

GEThttps://api.regia.ee/persons

Parameters

qqueryrequired
string·Name, at least 3 characters.
pagequery
integer·Page number, from 1. Default 1.
limitquery
integer·Items per page, 1-100. Default 25.
langquery
string·Language of labels and classifier values: et (default), en or ru. Names and free text stay as registered.

Request

curl
curl --request GET \
  --url 'https://api.regia.ee/persons?q=lauri%20karp&limit=1' \
  --header 'X-API-Key: YOUR_API_KEY'

Response

200 OK
{
  "success": true,
  "data": [
    {
      "id": 73616,
      "type": "person",
      "name": "Lauri Karp",
      "personal_code": "37404170212",
      "registry_code": null,
      "birth_date": "1974-04-17",
      "url": "https://regia.ee/affiliate/73616-lauri-karp",
      "active_roles": 14
    }
  ],
  "meta": {
    "request_id": "9d2f6c1e-5b7a-4e0c-8f3d-2a1b0c9e8d7f",
    "pagination": {
      "page": 1,
      "limit": 1,
      "total": 1,
      "has_more": false
    }
  }
}

Response fields

id
Person id, for /persons/{id}.
type
person or organisation.
name, personal_code, birth_date
As registered. Organisations have registry_code instead.
active_roles
Number of current roles in companies.
meta.pagination
page, limit, total (all matching rows) and has_more.

Get a person

A person and their roles in companies: representative, shareholder, beneficial owner or other.

GEThttps://api.regia.ee/persons/{id}

Parameters

idpathrequired
integer·Person id from a search or a party.person_id.
historyquery
boolean·true to include ended relations as well. Default false: current ones only.
langquery
string·Language of labels and classifier values: et (default), en or ru. Names and free text stay as registered.

Request

curl
curl --request GET \
  --url 'https://api.regia.ee/persons/73616?lang=en' \
  --header 'X-API-Key: YOUR_API_KEY'

Response

200 OK
{
  "success": true,
  "data": {
    "id": 73616,
    "type": "person",
    "name": "Lauri Karp",
    "personal_code": "37404170212",
    "registry_code": null,
    "birth_date": "1974-04-17",
    "url": "https://regia.ee/en/affiliate/73616-lauri-karp",
    "roles_total": 14,
    "roles": [
      {
        "company": {
          "registry_code": "17209649",
          "name": "Enefit Power OÜ",
          "legal_form": {
            "name": "Osaühing",
            "label": "Private limited company"
          },
          "status": {
            "code": "R",
            "label": "Registered"
          },
          "url": "https://regia.ee/en/entity/17209649-enefit-power-ou"
        },
        "relation": "beneficial_owner",
        "role": {
          "code": "J",
          "label": "Member of higher governing body (board or supervisory board)"
        },
        "share": null,
        "from": "2026-07-16",
        "until": null
      },
      {
        "company": {
          "registry_code": "11693868",
          "name": "Enefit Outotec Technology OÜ",
          "legal_form": {
            "name": "Osaühing",
            "label": "Private limited company"
          },
          "status": {
            "code": "R",
            "label": "Registered"
          },
          "url": "https://regia.ee/en/entity/11693868-enefit-outotec-technology-ou"
        },
        "relation": "other",
        "role": {
          "code": "N",
          "label": "Supervisory-board member"
        },
        "share": {
          "percent": 0,
          "amount": 0,
          "currency": null,
          "ownership": {
            "code": "L",
            "label": "Sole ownership"
          }
        },
        "from": "2026-05-27",
        "until": null
      }
    ]
  },
  "meta": {
    "request_id": "9d2f6c1e-5b7a-4e0c-8f3d-2a1b0c9e8d7f"
  }
}

Response fields

id, type, name, personal_code, birth_date, url
The person.
roles
Roles, current first (up to 1000): company, relation, role, share, from and until.
roles_total
Number of roles; more than the roles returned only past 1000.

Financials

Financials

Annual report figures, ratios and statements, and quarterly taxes and turnover.

Base path /companies/{registry_code}

Financials

Key figures and ratios per report year from the annual reports, and revenue split by activity.

GEThttps://api.regia.ee/companies/{registry_code}/financials

Parameters

registry_codepathrequired
string·8-digit registry code (registrikood), e.g. 10421629.
langquery
string·Language of labels and classifier values: et (default), en or ru. Names and free text stay as registered.

Request

curl
curl --request GET \
  --url 'https://api.regia.ee/companies/10421629/financials' \
  --header 'X-API-Key: YOUR_API_KEY'

Response

200 OK
{
  "success": true,
  "data": {
    "years": [
      {
        "year": 2025,
        "figures": {
          "revenue": 342713280,
          "net_profit": null,
          "current_assets": null,
          "non_current_assets": null,
          "total_assets": 2541460224,
          "current_liabilities": null,
          "non_current_liabilities": null,
          "total_liabilities": null,
          "share_capital": null,
          "retained_earnings": null,
          "equity": null
        },
        "ratios": null
      },
      {
        "year": 2024,
        "figures": {
          "revenue": 338182688,
          "net_profit": null,
          "current_assets": null,
          "non_current_assets": null,
          "total_assets": 2764376576,
          "current_liabilities": null,
          "non_current_liabilities": null,
          "total_liabilities": null,
          "share_capital": null,
          "retained_earnings": null,
          "equity": null
        },
        "ratios": {
          "ebitda": -166700000,
          "current_ratio": 4.7935,
          "quick_ratio": 4.7271,
          "cash_ratio": 1.0978,
          "days_sales_outstanding": 1410.3009,
          "asset_turnover": 0.1204,
          "debt_ratio": 0.4462,
          "operating_margin": -50.9462,
          "net_margin": -43.081,
          "return_on_assets": -5.1857,
          "return_on_equity": -9.5179
        }
      }
    ],
    "revenue_by_activity": [
      {
        "code": "35151",
        "title": "Elektrienergia müük",
        "values": {
          "2023": 123203520,
          "2024": 232041792,
          "2025": 233115856
        }
      },
      {
        "code": "35231",
        "title": "Gaasimüük magistraalvõrkude kaudu",
        "values": {
          "2023": 46182388,
          "2024": 52718224,
          "2025": 54205272
        }
      }
    ]
  },
  "meta": {
    "request_id": "9d2f6c1e-5b7a-4e0c-8f3d-2a1b0c9e8d7f"
  }
}

Response fields

years[].figures
revenue, net_profit, current_assets, non_current_assets, total_assets, current_liabilities, non_current_liabilities, total_liabilities, share_capital, retained_earnings, equity (EUR). null when the report does not give it.
years[].ratios
ebitda (EUR), current_ratio, quick_ratio, cash_ratio, days_sales_outstanding, asset_turnover, debt_ratio, and operating_margin, net_margin, return_on_assets, return_on_equity in percent. For the latest five years with full statements.
revenue_by_activity
Revenue per EMTAK activity: code, title and values by year.

Annual reports

Every annual report period: filed reports and the ones that are missing.

GEThttps://api.regia.ee/companies/{registry_code}/annual-reports

Parameters

registry_codepathrequired
string·8-digit registry code (registrikood), e.g. 10421629.
langquery
string·Language of labels and classifier values: et (default), en or ru. Names and free text stay as registered.

Request

curl
curl --request GET \
  --url 'https://api.regia.ee/companies/10421629/annual-reports' \
  --header 'X-API-Key: YOUR_API_KEY'

Response

200 OK
{
  "success": true,
  "data": [
    {
      "year": 2025,
      "period_start": "2025-01-01",
      "period_end": "2025-12-31",
      "status": "valid",
      "submitted_on": "2026-04-29",
      "due_on": null,
      "employees": null,
      "has_statements": false
    },
    {
      "year": 2024,
      "period_start": "2024-01-01",
      "period_end": "2024-12-31",
      "status": "valid",
      "submitted_on": "2025-05-08",
      "due_on": null,
      "employees": null,
      "has_statements": true
    }
  ],
  "meta": {
    "request_id": "9d2f6c1e-5b7a-4e0c-8f3d-2a1b0c9e8d7f"
  }
}

Response fields

year, period_start, period_end
Report year and financial period.
status
valid, superseded (replaced by a corrected filing), or for a missing report overdue / not_yet_due.
submitted_on, due_on
Filing date; due date of a missing report.
employees
Employees stated in the report.
has_statements
Whether full statements are available from Get an annual report.

Get an annual report

One report year: key figures, ratios and the full statements (balance sheet, income statement, cash flow) line by line.

GEThttps://api.regia.ee/companies/{registry_code}/annual-reports/{year}

Parameters

registry_codepathrequired
string·8-digit registry code (registrikood), e.g. 10421629.
yearpathrequired
integer·Report year.
langquery
string·Language of labels and classifier values: et (default), en or ru. Names and free text stay as registered.

Request

curl
curl --request GET \
  --url 'https://api.regia.ee/companies/10421629/annual-reports/2024' \
  --header 'X-API-Key: YOUR_API_KEY'

Response

200 OK
{
  "success": true,
  "data": {
    "year": 2024,
    "figures": {
      "revenue": 338182688,
      "net_profit": null,
      "current_assets": null,
      "non_current_assets": null,
      "total_assets": 2764376576,
      "current_liabilities": null,
      "non_current_liabilities": null,
      "total_liabilities": null,
      "share_capital": null,
      "retained_earnings": null,
      "equity": null
    },
    "ratios": {
      "ebitda": -166700000,
      "current_ratio": 4.7935,
      "quick_ratio": 4.7271,
      "cash_ratio": 1.0978,
      "days_sales_outstanding": 1410.3009,
      "asset_turnover": 0.1204,
      "debt_ratio": 0.4462,
      "operating_margin": -50.9462,
      "net_margin": -43.081,
      "return_on_assets": -5.1857,
      "return_on_equity": -9.5179
    },
    "statements": [
      {
        "code": "22",
        "name": "Konsolideerimata bilanss",
        "rows": [
          {
            "name": "Raha ja pangakontod",
            "value": 391800000,
            "total": false
          },
          {
            "name": "Varud kokku",
            "value": 23700000,
            "total": false
          },
          {
            "name": "Nõuded ja ettemaksed kokku",
            "value": 1295300000,
            "total": false
          }
        ]
      },
      {
        "code": "32",
        "name": "Konsolideerimata rahavoogude aruanne (kaudne)",
        "rows": [
          {
            "name": "Ärikasum (-kahjum)/põhitegevuse tulem",
            "value": -172300000,
            "total": false
          },
          {
            "name": "Põhivara kulum ja väärtuse langus",
            "value": 5600000,
            "total": false
          },
          {
            "name": "Muud korrigeerimised",
            "value": 108000000,
            "total": false
          }
        ]
      }
    ]
  },
  "meta": {
    "request_id": "9d2f6c1e-5b7a-4e0c-8f3d-2a1b0c9e8d7f"
  }
}

Response fields

figures, ratios
As in Financials.
statements
Statement forms with code, name and rows (name, value in EUR, total).

Quarterly taxes

Taxes paid, turnover and employees per quarter, as published by the Tax and Customs Board. Newest first.

GEThttps://api.regia.ee/companies/{registry_code}/quarterly-taxes

Parameters

registry_codepathrequired
string·8-digit registry code (registrikood), e.g. 10421629.
langquery
string·Language of labels and classifier values: et (default), en or ru. Names and free text stay as registered.

Request

curl
curl --request GET \
  --url 'https://api.regia.ee/companies/10421629/quarterly-taxes' \
  --header 'X-API-Key: YOUR_API_KEY'

Response

200 OK
{
  "success": true,
  "data": [
    {
      "year": 2026,
      "quarter": 2,
      "taxes": 30217697,
      "labour_taxes": 5903712,
      "turnover": 418673421,
      "employees": 632
    },
    {
      "year": 2026,
      "quarter": 1,
      "taxes": 44827970,
      "labour_taxes": 5445876,
      "turnover": 734569976,
      "employees": 641
    }
  ],
  "meta": {
    "request_id": "9d2f6c1e-5b7a-4e0c-8f3d-2a1b0c9e8d7f"
  }
}

Response fields

year, quarter
The quarter.
taxes, labour_taxes
State taxes paid and the part on labour (EUR).
turnover
Taxable turnover (EUR).
employees
Employees at the end of the quarter.

Risk

Risk

Credit score, tax debt, late declarations, court cases, payment orders, enforcement and official notices.

Base path /companies/{registry_code}

Credit score

Regia credit score from the nightly scoring model: probability of default within 12 months, rating and the factors behind it.

GEThttps://api.regia.ee/companies/{registry_code}/credit-score

Parameters

registry_codepathrequired
string·8-digit registry code (registrikood), e.g. 10421629.
langquery
string·Language of labels and classifier values: et (default), en or ru. Names and free text stay as registered.

Request

curl
curl --request GET \
  --url 'https://api.regia.ee/companies/10421629/credit-score' \
  --header 'X-API-Key: YOUR_API_KEY'

Response

200 OK
{
  "success": true,
  "data": {
    "rated": true,
    "date": "2026-09-27",
    "score": 100,
    "rating": "AAA",
    "probability_of_default": 0.0032,
    "rule": null,
    "groups": [
      {
        "group": "payment",
        "label": "Maksekäitumine",
        "score": 100
      },
      {
        "group": "financial",
        "label": "Finantsseis",
        "score": 47
      }
    ],
    "risks": [
      {
        "factor": "rep_failed_share",
        "label": "Juhtide teiste ettevõtete ebaõnnestumised",
        "value": "83 / 5 723 (1%)",
        "group": "people",
        "effect": -1
      }
    ],
    "strengths": [
      {
        "factor": "section",
        "label": "Tegevusvaldkond",
        "value": "Elektrienergia, gaasi ja auruga varustamine",
        "group": "profile",
        "effect": 6.6
      },
      {
        "factor": "tax_to_rev",
        "label": "Maksud / käive (4 kvartalit)",
        "value": "5,4%",
        "group": "payment",
        "effect": 5.7
      }
    ]
  },
  "meta": {
    "request_id": "9d2f6c1e-5b7a-4e0c-8f3d-2a1b0c9e8d7f"
  }
}

Response fields

rated
false for companies that are not scored; reason is then bankrupt, liquidation, deleted or not_covered.
date, score, rating
Scoring date, score 0-100 and rating AAA-D.
probability_of_default
Estimated probability of default within 12 months, 0-1.
rule
Set when a rule limits the score: in_default, inactive, thin_file or capital_breach.
groups
Score 0-100 per factor group, with its label.
risks, strengths
Up to five factors lowering and raising the score most: factor key, label, the company's own value as text, group and effect in score points.

Tax debt

Tax arrears from the latest Tax and Customs Board list (ignored when older than 90 days) and the last three months by day.

GEThttps://api.regia.ee/companies/{registry_code}/tax-debt

Parameters

registry_codepathrequired
string·8-digit registry code (registrikood), e.g. 10421629.
langquery
string·Language of labels and classifier values: et (default), en or ru. Names and free text stay as registered.

Request

curl
curl --request GET \
  --url 'https://api.regia.ee/companies/14019531/tax-debt?lang=en' \
  --header 'X-API-Key: YOUR_API_KEY'

Response

200 OK
{
  "success": true,
  "data": {
    "snapshot_date": "2026-09-27",
    "total": 8476.69,
    "claims": [
      {
        "type": "Contributions to mandatory funded pension",
        "label": "Contributions to mandatory funded pension",
        "debt": 70.28,
        "in_payment_schedule": 0,
        "contested": 0
      },
      {
        "type": "Income tax in special cases",
        "label": "Income tax in special cases",
        "debt": 82.15,
        "in_payment_schedule": 0,
        "contested": 0
      }
    ],
    "history": [
      {
        "date": "2026-06-28",
        "debt": 8476.69,
        "in_payment_schedule": 0,
        "contested": 0
      },
      {
        "date": "2026-06-29",
        "debt": 8476.69,
        "in_payment_schedule": 0,
        "contested": 0
      }
    ]
  },
  "meta": {
    "request_id": "9d2f6c1e-5b7a-4e0c-8f3d-2a1b0c9e8d7f"
  }
}

Response fields

snapshot_date, total
Date of the list and total debt (EUR); null and 0 without debt.
claims
Debt by claim type: debt, in_payment_schedule and contested amounts.
history
Daily totals for the last three months.

Tax declarations

Tax declarations that are overdue, and ones filed late. All of them, not paged.

GEThttps://api.regia.ee/companies/{registry_code}/tax-declarations

Parameters

registry_codepathrequired
string·8-digit registry code (registrikood), e.g. 10421629.
langquery
string·Language of labels and classifier values: et (default), en or ru. Names and free text stay as registered.

Request

curl
curl --request GET \
  --url 'https://api.regia.ee/companies/14019531/tax-declarations?lang=en' \
  --header 'X-API-Key: YOUR_API_KEY'

Response

200 OK
{
  "success": true,
  "data": {
    "missing": [
      {
        "type": "Value added tax return",
        "label": "Value added tax return",
        "due_on": "2026-09-21"
      }
    ],
    "late": [
      {
        "type": "Value added tax return",
        "label": "Value added tax return",
        "due_on": "2026-08-21",
        "submitted_on": "2026-08-27"
      },
      {
        "type": "Value added tax return",
        "label": "Value added tax return",
        "due_on": "2026-07-20",
        "submitted_on": "2026-08-27"
      }
    ]
  },
  "meta": {
    "request_id": "9d2f6c1e-5b7a-4e0c-8f3d-2a1b0c9e8d7f"
  }
}

Response fields

missing
Declarations not filed: type, label and due_on.
late
Declarations filed after the due date, with submitted_on.

Court cases

Court decisions naming the company, newest first.

GEThttps://api.regia.ee/companies/{registry_code}/court-cases

Parameters

registry_codepathrequired
string·8-digit registry code (registrikood), e.g. 10421629.
qquery
string·Only rows whose text columns contain this (names, numbers, roles).
pagequery
integer·Page number, from 1. Default 1.
limitquery
integer·Items per page, 1-100. Default 25.
langquery
string·Language of labels and classifier values: et (default), en or ru. Names and free text stay as registered.

Request

curl
curl --request GET \
  --url 'https://api.regia.ee/companies/14019531/court-cases?limit=2' \
  --header 'X-API-Key: YOUR_API_KEY'

Response

200 OK
{
  "success": true,
  "data": [
    {
      "case_number": "2-22-4902/43",
      "date": "2023-12-04",
      "proceeding_type": "Kohtu I astme menetlus",
      "decision_type": "Kohtuotsus Hagi õigeksvõtul põhinev otsus",
      "category": "Pankrotiõigus",
      "judges": "Fred Fisker",
      "ecli": "ECLI:EE:HMK:2023:2.22.4902.24555",
      "other_companies": 1
    },
    {
      "case_number": "2-22-6837/7",
      "date": "2022-11-17",
      "proceeding_type": "Kohtu I astme menetlus",
      "decision_type": "Kohtuotsus Tagaseljaotsus",
      "category": "Pankrotiõigus",
      "judges": "Karin Sonntak",
      "ecli": "ECLI:EE:HMK:2022:2.22.6837.23374",
      "other_companies": 0
    }
  ],
  "meta": {
    "request_id": "9d2f6c1e-5b7a-4e0c-8f3d-2a1b0c9e8d7f",
    "pagination": {
      "page": 1,
      "limit": 2,
      "total": 5,
      "has_more": true
    }
  }
}

Response fields

case_number, date
Case number and decision date.
proceeding_type, decision_type, category, judges, ecli
Case details where published.
other_companies
Other companies named in the same case.
meta.pagination
page, limit, total (all matching rows) and has_more.

Payment orders

Expedited payment order procedures against the company.

GEThttps://api.regia.ee/companies/{registry_code}/payment-orders

Parameters

registry_codepathrequired
string·8-digit registry code (registrikood), e.g. 10421629.
qquery
string·Only rows whose text columns contain this (names, numbers, roles).
pagequery
integer·Page number, from 1. Default 1.
limitquery
integer·Items per page, 1-100. Default 25.
langquery
string·Language of labels and classifier values: et (default), en or ru. Names and free text stay as registered.

Request

curl
curl --request GET \
  --url 'https://api.regia.ee/companies/14019531/payment-orders?limit=1' \
  --header 'X-API-Key: YOUR_API_KEY'

Response

200 OK
{
  "success": true,
  "data": [
    {
      "case_number": "2-21-130618",
      "date": "2021-12-17",
      "creditor": {
        "name": "Osaühing Bombono",
        "registry_code": "10222919"
      },
      "court_department": "Pärnu Maakohtu maksekäsuosakond",
      "amounts": {
        "total": 2283,
        "main_claim": 1331,
        "additional_claim": 866,
        "state_fee": 66,
        "procedure_cost": 20
      }
    }
  ],
  "meta": {
    "request_id": "9d2f6c1e-5b7a-4e0c-8f3d-2a1b0c9e8d7f",
    "pagination": {
      "page": 1,
      "limit": 1,
      "total": 4,
      "has_more": true
    }
  }
}

Response fields

case_number, date, court_department
The procedure.
creditor
name and registry_code when the creditor is an Estonian company.
amounts
total, main_claim, additional_claim, state_fee and procedure_cost (EUR).
meta.pagination
page, limit, total (all matching rows) and has_more.

Enforcement proceedings

Enforcement proceedings by bailiffs against the company.

GEThttps://api.regia.ee/companies/{registry_code}/enforcements

Parameters

registry_codepathrequired
string·8-digit registry code (registrikood), e.g. 10421629.
qquery
string·Only rows whose text columns contain this (names, numbers, roles).
pagequery
integer·Page number, from 1. Default 1.
limitquery
integer·Items per page, 1-100. Default 25.
langquery
string·Language of labels and classifier values: et (default), en or ru. Names and free text stay as registered.

Request

curl
curl --request GET \
  --url 'https://api.regia.ee/companies/14019531/enforcements?limit=1' \
  --header 'X-API-Key: YOUR_API_KEY'

Response

200 OK
{
  "success": true,
  "data": [
    {
      "date": "2026-08-14",
      "creditor": {
        "name": "Viimsi Vallavalitsus",
        "registry_code": "75021250"
      },
      "bailiff": "Kohtutäitur Kristiina Feinman",
      "amounts": {
        "total": 126.8,
        "main_claim": 40,
        "state_fee": 62,
        "procedure_cost": 37.2
      }
    }
  ],
  "meta": {
    "request_id": "9d2f6c1e-5b7a-4e0c-8f3d-2a1b0c9e8d7f",
    "pagination": {
      "page": 1,
      "limit": 1,
      "total": 1,
      "has_more": false
    }
  }
}

Response fields

date, creditor, bailiff
The proceeding.
amounts
total, main_claim, state_fee and procedure_cost (EUR).
meta.pagination
page, limit, total (all matching rows) and has_more.

Registry rulings

Rulings of the registration department of the court on the company's entries.

GEThttps://api.regia.ee/companies/{registry_code}/rulings

Parameters

registry_codepathrequired
string·8-digit registry code (registrikood), e.g. 10421629.
qquery
string·Only rows whose text columns contain this (names, numbers, roles).
pagequery
integer·Page number, from 1. Default 1.
limitquery
integer·Items per page, 1-100. Default 25.
langquery
string·Language of labels and classifier values: et (default), en or ru. Names and free text stay as registered.

Request

curl
curl --request GET \
  --url 'https://api.regia.ee/companies/10421629/rulings?limit=2' \
  --header 'X-API-Key: YOUR_API_KEY'

Response

200 OK
{
  "success": true,
  "data": [
    {
      "number": "Ä 10016579 / 57",
      "date": "2026-07-15",
      "type": "Kanne",
      "entry_type": "Muutmiskanne TsMS § 595¹ lg 1 alusel",
      "status": "Jõustunud",
      "deadline": null,
      "effective_on": "2026-07-15"
    },
    {
      "number": "Ä 10016579 / 56",
      "date": "2026-06-22",
      "type": "Kanne",
      "entry_type": "Muutmiskanne",
      "status": "Jõustunud",
      "deadline": null,
      "effective_on": "2026-06-22"
    }
  ],
  "meta": {
    "request_id": "9d2f6c1e-5b7a-4e0c-8f3d-2a1b0c9e8d7f",
    "pagination": {
      "page": 1,
      "limit": 2,
      "total": 56,
      "has_more": true
    }
  }
}

Response fields

number, date, type, entry_type, status
The ruling.
deadline, effective_on
Additional deadline and entry into force.
meta.pagination
page, limit, total (all matching rows) and has_more.

Official announcements

Notices about the company in Ametlikud Teadaanded, newest first. Enforcement and payment order notices also appear, parsed, under Enforcement proceedings and Payment orders.

GEThttps://api.regia.ee/companies/{registry_code}/announcements

Parameters

registry_codepathrequired
string·8-digit registry code (registrikood), e.g. 10421629.
qquery
string·Only rows whose text columns contain this (names, numbers, roles).
pagequery
integer·Page number, from 1. Default 1.
limitquery
integer·Items per page, 1-100. Default 25.
langquery
string·Language of labels and classifier values: et (default), en or ru. Names and free text stay as registered.

Request

curl
curl --request GET \
  --url 'https://api.regia.ee/companies/14019531/announcements?limit=2' \
  --header 'X-API-Key: YOUR_API_KEY'

Response

200 OK
{
  "success": true,
  "data": [
    {
      "id": 2663097,
      "date": "2026-09-01",
      "subject": "Pankrotimenetluses vallasasja enampakkumise teade"
    },
    {
      "id": 2656835,
      "date": "2026-08-14",
      "subject": "Täitmisteade"
    }
  ],
  "meta": {
    "request_id": "9d2f6c1e-5b7a-4e0c-8f3d-2a1b0c9e8d7f",
    "pagination": {
      "page": 1,
      "limit": 2,
      "total": 6,
      "has_more": true
    }
  }
}

Response fields

id, date, subject
Announcement id, date and subject.
meta.pagination
page, limit, total (all matching rows) and has_more.

Consumer disputes

Decisions of the Consumer Disputes Committee.

GEThttps://api.regia.ee/companies/{registry_code}/consumer-disputes

Parameters

registry_codepathrequired
string·8-digit registry code (registrikood), e.g. 10421629.
qquery
string·Only rows whose text columns contain this (names, numbers, roles).
pagequery
integer·Page number, from 1. Default 1.
limitquery
integer·Items per page, 1-100. Default 25.
langquery
string·Language of labels and classifier values: et (default), en or ru. Names and free text stay as registered.

Request

curl
curl --request GET \
  --url 'https://api.regia.ee/companies/10421629/consumer-disputes?limit=1' \
  --header 'X-API-Key: YOUR_API_KEY'

Response

200 OK
{
  "success": true,
  "data": [
    {
      "document_number": "20-1/23-10704-001",
      "date": "2024-01-04",
      "committee": "Esimees Kai Amos, liikmed Anastasia Nezgovorova, Kati Karussaar",
      "decision": "Tarbija kahjuks"
    }
  ],
  "meta": {
    "request_id": "9d2f6c1e-5b7a-4e0c-8f3d-2a1b0c9e8d7f",
    "pagination": {
      "page": 1,
      "limit": 1,
      "total": 5,
      "has_more": true
    }
  }
}

Response fields

document_number, date, committee, decision
The decision; decision tells whose favour it was in.
meta.pagination
page, limit, total (all matching rows) and has_more.

Assets & activity

Assets & activity

Real estate, domains, permits and payments from the state.

Base path /companies/{registry_code}

Real estate

Registered immovables the company owns; for a housing association without own property, its apartments.

GEThttps://api.regia.ee/companies/{registry_code}/properties

Parameters

registry_codepathrequired
string·8-digit registry code (registrikood), e.g. 10421629.
qquery
string·Only rows whose text columns contain this (names, numbers, roles).
pagequery
integer·Page number, from 1. Default 1.
limitquery
integer·Items per page, 1-100. Default 25.
langquery
string·Language of labels and classifier values: et (default), en or ru. Names and free text stay as registered.

Request

curl
curl --request GET \
  --url 'https://api.regia.ee/companies/10421629/properties?limit=1' \
  --header 'X-API-Key: YOUR_API_KEY'

Response

200 OK
{
  "success": true,
  "data": [
    {
      "register_part": 27010550,
      "cadastral_number": "44201:001:0756",
      "type": "Kinnisasi",
      "address": "Alajaama tee 4a, Lüganuse alevik, Lüganuse vald, Ida-Viru maakond",
      "apartment": null,
      "area": 2100,
      "area_unit": "m²",
      "purposes": [
        {
          "purpose": "Tootmismaa",
          "percent": 100
        }
      ],
      "housing_association_unit": false
    }
  ],
  "meta": {
    "request_id": "9d2f6c1e-5b7a-4e0c-8f3d-2a1b0c9e8d7f",
    "pagination": {
      "page": 1,
      "limit": 1,
      "total": 19,
      "has_more": true
    }
  }
}

Response fields

register_part, cadastral_number
Land register part and cadastral unit.
type, address, apartment
Kind of property and its address.
area, area_unit
Area of the unit.
purposes
Land use purposes with percent.
housing_association_unit
true for an apartment of a housing association.
meta.pagination
page, limit, total (all matching rows) and has_more.

Domains

Current .ee domains registered to the company.

GEThttps://api.regia.ee/companies/{registry_code}/domains

Parameters

registry_codepathrequired
string·8-digit registry code (registrikood), e.g. 10421629.
qquery
string·Only rows whose text columns contain this (names, numbers, roles).
pagequery
integer·Page number, from 1. Default 1.
limitquery
integer·Items per page, 1-100. Default 25.
langquery
string·Language of labels and classifier values: et (default), en or ru. Names and free text stay as registered.

Request

curl
curl --request GET \
  --url 'https://api.regia.ee/companies/10421629/domains?limit=2' \
  --header 'X-API-Key: YOUR_API_KEY'

Response

200 OK
{
  "success": true,
  "data": [
    {
      "domain": "liivibay.ee",
      "status": "ok (paid and in zone)",
      "registered_on": "2025-03-28",
      "expires_on": "2027-03-29"
    },
    {
      "domain": "energiatarkus.ee",
      "status": "ok (paid and in zone)",
      "registered_on": "2024-09-20",
      "expires_on": "2027-09-21"
    }
  ],
  "meta": {
    "request_id": "9d2f6c1e-5b7a-4e0c-8f3d-2a1b0c9e8d7f",
    "pagination": {
      "page": 1,
      "limit": 2,
      "total": 41,
      "has_more": true
    }
  }
}

Response fields

domain, status, registered_on, expires_on
The domain.
meta.pagination
page, limit, total (all matching rows) and has_more.

Permits

Current activity licences and notices of economic activity.

GEThttps://api.regia.ee/companies/{registry_code}/permits

Parameters

registry_codepathrequired
string·8-digit registry code (registrikood), e.g. 10421629.
qquery
string·Only rows whose text columns contain this (names, numbers, roles).
pagequery
integer·Page number, from 1. Default 1.
limitquery
integer·Items per page, 1-100. Default 25.
langquery
string·Language of labels and classifier values: et (default), en or ru. Names and free text stay as registered.

Request

curl
curl --request GET \
  --url 'https://api.regia.ee/companies/10421629/permits?limit=1' \
  --header 'X-API-Key: YOUR_API_KEY'

Response

200 OK
{
  "success": true,
  "data": [
    {
      "type": "notice",
      "number": "FOT000118",
      "sector": null,
      "activity": "Tuleohutusteenus",
      "status": "kehtiv",
      "valid_from": "2023-12-01",
      "valid_until": "2027-01-12",
      "url": "https://tarvik.ttja.ee/teated/621476"
    }
  ],
  "meta": {
    "request_id": "9d2f6c1e-5b7a-4e0c-8f3d-2a1b0c9e8d7f",
    "pagination": {
      "page": 1,
      "limit": 1,
      "total": 7,
      "has_more": true
    }
  }
}

Response fields

type
licence or notice.
number, sector, activity, status, valid_from, valid_until, url
The permit and its record in the register.
meta.pagination
page, limit, total (all matching rows) and has_more.

State payments

Payments between the company and state institutions, newest first.

GEThttps://api.regia.ee/companies/{registry_code}/state-payments

Parameters

registry_codepathrequired
string·8-digit registry code (registrikood), e.g. 10421629.
qquery
string·Only rows whose text columns contain this (names, numbers, roles).
pagequery
integer·Page number, from 1. Default 1.
limitquery
integer·Items per page, 1-100. Default 25.
langquery
string·Language of labels and classifier values: et (default), en or ru. Names and free text stay as registered.

Request

curl
curl --request GET \
  --url 'https://api.regia.ee/companies/10421629/state-payments?limit=1' \
  --header 'X-API-Key: YOUR_API_KEY'

Response

200 OK
{
  "success": true,
  "data": [
    {
      "date": "2026-08-23",
      "amount": 773.53,
      "direction": "received",
      "counterparty": {
        "name": "Mittetulundusühing Lõuna-Eesti Erihooldusteenuste Keskus",
        "registry_code": "80207123"
      },
      "account_class": "MAJANDAMISKULUD",
      "activity": "Puuetega inimeste erihoolekandeteenus"
    }
  ],
  "meta": {
    "request_id": "9d2f6c1e-5b7a-4e0c-8f3d-2a1b0c9e8d7f",
    "pagination": {
      "page": 1,
      "limit": 1,
      "total": 144056,
      "has_more": true
    }
  }
}

Response fields

date, amount, direction
Payment date, amount (EUR) and whether the company paid or received it.
counterparty
name and registry_code of the other party.
account_class, activity
State budget classification.
meta.pagination
page, limit, total (all matching rows) and has_more.

Monitoring

Monitoring

Keep your own lists of companies to monitor and receive their changes: board and owners, status, tax debt, court and enforcement, notices, reports, rating. Pushed to your webhook or polled. Needs the API plan; calls are free, each monitored company is billed per month.

Base path /monitoring

List monitoring lists

Your organisation's API monitoring lists. They are separate from the Monitoring page's list in the dashboard. An organisation can have up to 50 lists.

GEThttps://api.regia.ee/monitoring/lists

Request

curl
curl --request GET \
  --url 'https://api.regia.ee/monitoring/lists' \
  --header 'X-API-Key: YOUR_API_KEY'

Response

200 OK
{
  "success": true,
  "data": [
    {
      "id": "lst_Q2x9aVb3KpT1mZr0",
      "name": "Accounting clients",
      "categories": null,
      "companies": 2,
      "created_at": "2026-09-29T08:00:00.000Z"
    }
  ],
  "meta": {
    "request_id": "…"
  }
}

Response fields

id
List id (lst_…), used in the other monitoring endpoints and in events.
name
Your name for the list.
categories
Change categories the list follows; null for all (including categories added later).
companies
Companies on the list now.

Create a monitoring list

Creates an empty list. Add companies with the batch endpoint or one by one.

POSThttps://api.regia.ee/monitoring/lists

Body

namebodyrequired
string·1-120 characters.
categoriesbody
string[]·Categories to follow: registry, people, tax, court, announcements, reports, rating, assets. Omit or null for all.

Request

curl
curl --request POST \
  --url 'https://api.regia.ee/monitoring/lists' \
  --header 'X-API-Key: YOUR_API_KEY' \
  --header 'Content-Type: application/json' \
  --data '{"name":"Accounting clients","categories":null}'

Response

200 OK
{
  "success": true,
  "data": {
    "id": "lst_Q2x9aVb3KpT1mZr0",
    "name": "Accounting clients",
    "categories": null,
    "companies": 0,
    "created_at": "2026-09-29T08:00:00.000Z"
  },
  "meta": {
    "request_id": "…"
  }
}

Response fields

data
The new list, as in List monitoring lists.

Update a monitoring list

Renames a list or changes the categories it follows. Send only what changes. GET on the same path returns one list; DELETE removes it and stops monitoring its companies.

PATCHhttps://api.regia.ee/monitoring/lists/{list}

Parameters

listpathrequired
string·List id (lst_…).

Body

namebody
string·New name.
categoriesbody
string[]·New categories, or null for all.

Request

curl
curl --request PATCH \
  --url 'https://api.regia.ee/monitoring/lists/lst_Q2x9aVb3KpT1mZr0' \
  --header 'X-API-Key: YOUR_API_KEY' \
  --header 'Content-Type: application/json' \
  --data '{"categories":["people","tax","court"]}'

Response

200 OK
{
  "success": true,
  "data": {
    "id": "lst_Q2x9aVb3KpT1mZr0",
    "name": "Accounting clients",
    "categories": [
      "people",
      "tax",
      "court"
    ],
    "companies": 2,
    "created_at": "2026-09-29T08:00:00.000Z"
  },
  "meta": {
    "request_id": "…"
  }
}

Response fields

data
The list after the change.

List companies on a list

Companies on a list, in the order they were added.

GEThttps://api.regia.ee/monitoring/lists/{list}/companies

Parameters

listpathrequired
string·List id (lst_…).
pagequery
integer·Page number, from 1.
limitquery
integer·Items per page, 1-100. Default 100.

Request

curl
curl --request GET \
  --url 'https://api.regia.ee/monitoring/lists/lst_Q2x9aVb3KpT1mZr0/companies' \
  --header 'X-API-Key: YOUR_API_KEY'

Response

200 OK
{
  "success": true,
  "data": [
    {
      "registry_code": "10421629",
      "name": "Näide OÜ",
      "status": "R",
      "external_ref": "client-42",
      "categories": null,
      "added_at": "2026-09-29T08:01:00.000Z"
    }
  ],
  "meta": {
    "request_id": "…",
    "pagination": {
      "page": 1,
      "limit": 100,
      "total": 1,
      "has_more": false
    }
  }
}

Response fields

registry_code, name, status
The company.
external_ref
Your own id for the company, echoed in every event.
categories
The company's own categories; null to follow the list.
meta.pagination
page, limit, total (all matching rows) and has_more.

Add and remove companies

Adds, updates and removes up to 2,000 companies in one request, all or nothing. With replace: true the list becomes exactly the companies in add, so you can sync your customer list in one call. Adding a company that is already on the list updates its external_ref and categories. Monitoring starts from the moment of adding: earlier history is not sent.

POSThttps://api.regia.ee/monitoring/lists/{list}/companies

Parameters

listpathrequired
string·List id (lst_…).

Body

addbody
object[]·Companies to add or update: registry_code (8 digits), external_ref (optional, up to 200 characters), categories (optional).
removebody
string[]·Registry codes to remove.
replacebody
boolean·true: remove every company that is not in add. Do not send remove with it.

Request

curl
curl --request POST \
  --url 'https://api.regia.ee/monitoring/lists/lst_Q2x9aVb3KpT1mZr0/companies' \
  --header 'X-API-Key: YOUR_API_KEY' \
  --header 'Content-Type: application/json' \
  --data '{"add":[{"registry_code":"10421629","external_ref":"client-42"},{"registry_code":"12345678"}],"remove":["11223344"]}'

Response

200 OK
{
  "success": true,
  "data": {
    "added": 2,
    "updated": 0,
    "removed": 1,
    "not_found": []
  },
  "meta": {
    "request_id": "…"
  }
}

Response fields

added, updated, removed
How many companies each operation changed.
not_found
Registry codes in add that are not in the business register; they were skipped.

Add one company

Adds one company, or sets its external_ref and categories if it is already on the list. The body is optional. DELETE on the same path removes the company.

PUThttps://api.regia.ee/monitoring/lists/{list}/companies/{registry_code}

Parameters

listpathrequired
string·List id (lst_…).
registry_codepathrequired
string·8-digit registry code (registrikood), e.g. 10421629.

Body

external_refbody
string·Your own id for the company.
categoriesbody
string[]·The company's own categories; omit to follow the list.

Request

curl
curl --request PUT \
  --url 'https://api.regia.ee/monitoring/lists/lst_Q2x9aVb3KpT1mZr0/companies/10421629' \
  --header 'X-API-Key: YOUR_API_KEY' \
  --header 'Content-Type: application/json' \
  --data '{"external_ref":"client-42"}'

Response

200 OK
{
  "success": true,
  "data": {
    "registry_code": "10421629",
    "monitored": true,
    "added": true,
    "updated": false
  },
  "meta": {
    "request_id": "…"
  }
}

Response fields

monitored
true when the company is on the list; false with reason not_found for an unknown registry code.

List changes

Changes of companies on your lists, oldest first, the same events your webhook receives. Poll with after set to the last id you processed (meta.next_after). Changes are detected twice a day. A company on several lists gives one event that names all of them.

GEThttps://api.regia.ee/monitoring/events

Parameters

afterquery
string·Return events after this id (evt_…). Omit to start from the oldest.
listquery
string·Only events of this list (lst_…).
categoryquery
string·Only these categories, comma-separated.
limitquery
integer·1-100. Default 50.

Request

curl
curl --request GET \
  --url 'https://api.regia.ee/monitoring/events?after=evt_48000' \
  --header 'X-API-Key: YOUR_API_KEY'

Response

200 OK
{
  "success": true,
  "data": [
    {
      "id": "evt_48213",
      "type": "monitoring.change",
      "created_at": "2026-09-29T06:05:12.000Z",
      "data": {
        "company": {
          "registry_code": "10421629",
          "name": "Näide OÜ"
        },
        "lists": [
          {
            "id": "lst_Q2x9aVb3KpT1mZr0",
            "name": "Accounting clients",
            "external_ref": "client-42"
          }
        ],
        "category": "tax",
        "kind": "tax_debt",
        "tone": "bad",
        "details": {
          "old": 0,
          "new": 1250.4
        },
        "detected_at": "2026-09-29T06:05:12.000Z"
      }
    }
  ],
  "meta": {
    "request_id": "…",
    "next_after": "evt_48213",
    "has_more": false
  }
}

Response fields

id, type, created_at
Event id (evt_…, increasing), monitoring.change, and when it was detected.
data.company
registry_code and name.
data.lists
Your lists the company is on: id, name, external_ref.
data.category, data.kind
Category and the kind of change, e.g. tax / tax_debt, people / person_added, court / payment_order.
data.tone
bad, good or neutral for the company.
data.details
What changed; depends on kind (often old and new).
meta.next_after, meta.has_more
Cursor for the next request, and whether more events are waiting.

Set up the webhook

Sets the HTTPS endpoint that receives every change and saved-search match as a signed POST (see the Webhooks guide). signing_secret is returned only on first setup or with rotate_secret: store it on your server. Changing the URL or secret cancels queued events; enabling starts from now without replaying older changes. GET on the same path returns the settings and the last 20 deliveries; POST /webhook/test sends a test event.

PUThttps://api.regia.ee/webhook

Body

urlbodyrequired
string·Public HTTPS URL on port 443.
enabledbodyrequired
boolean·Deliver events.
rotate_secretbody
boolean·true to create a new signing secret.

Request

curl
curl --request PUT \
  --url 'https://api.regia.ee/webhook' \
  --header 'X-API-Key: YOUR_API_KEY' \
  --header 'Content-Type: application/json' \
  --data '{"url":"https://your-app.com/webhooks/regia","enabled":true}'

Response

200 OK
{
  "success": true,
  "data": {
    "url": "https://your-app.com/webhooks/regia",
    "enabled": true,
    "updated_at": "2026-09-29T08:00:00.000Z",
    "deliveries": [],
    "signing_secret": "whsec_…"
  },
  "meta": {
    "request_id": "…"
  }
}

Response fields

url, enabled, updated_at
The settings.
signing_secret
whsec_…, only when just created.
deliveries
Last 20: id, event_id, type, status (queued, sending, delivered, failed, cancelled), attempts, last_http_status, last_error. Failed deliveries can be retried with POST /webhook/deliveries/{id}/retry.

Saved searches

Saved searches

Save company filters, such as new construction companies in Harju or companies with tax debt in your sector, and receive the companies that start to match every morning. Pushed to your webhook or polled. Needs the API plan; calls are free.

Base path /searches

List saved searches

Your organisation's saved searches. An organisation can have up to 20.

GEThttps://api.regia.ee/searches

Request

curl
curl --request GET \
  --url 'https://api.regia.ee/searches' \
  --header 'X-API-Key: YOUR_API_KEY'

Response

200 OK
{
  "success": true,
  "data": [
    {
      "id": "srch_Hq3Lk8PzXw1Ab7Tc",
      "name": "New builders in Harju",
      "filters": {
        "activity": [
          "41",
          "43"
        ],
        "county": [
          "Harju"
        ],
        "registered_within_days": 30
      },
      "matches": 214,
      "new_matches_7d": 38,
      "last_run_on": "2026-09-30",
      "created_at": "2026-09-29T08:00:00.000Z",
      "updated_at": "2026-09-29T08:00:00.000Z"
    }
  ],
  "meta": {
    "request_id": "…"
  }
}

Response fields

id
Search id (srch_…), used in the other search endpoints and in events.
name, filters
Your name for the search and its filters, as saved.
matches
Companies matching now.
new_matches_7d
Companies that started to match in the last 7 days.
last_run_on
The day the search was last run (Europe/Tallinn).

Create a saved search

Saves company filters. Every morning, after the data is refreshed, the search is run again and the companies that started to match are sent to your webhook as a search.matches event, or can be polled from the matches endpoint. What matches when you create the search is the starting point and is not sent. All filters must match; at least one is required, and the search may match at most 50,000 companies.

POSThttps://api.regia.ee/searches

Body

namebodyrequired
string·1-120 characters.
filtersbodyrequired
object·At least one of the filters below.
filters.statusbody
string[]·R (registered), L (in liquidation), N (in bankruptcy), D (deleted).
filters.legal_formbody
string[]·Legal forms, e.g. OÜ, AS, MTÜ.
filters.activitybody
string[]·EMTAK code prefixes of 1-5 digits, e.g. 41 for construction of buildings.
filters.countybody
string[]·Counties of the registered address, e.g. Harju, Tartu.
filters.registered_within_daysbody
integer·Registered in the last N days: new companies.
filters.employees_min, filters.employees_maxbody
number·Employees, from the latest tax data.
filters.revenue_min, filters.revenue_maxbody
number·Revenue of the last four quarters, euros.
filters.tax_debt_minbody
number·Tax debt of at least this many euros; 0 for any tax debt.
filters.missing_declarationsbody
boolean·true: has unfiled tax returns.
filters.enforcementbody
boolean·true: has enforcement proceedings or payment orders.
filters.ratingbody
string[]·Credit ratings: AAA, AA, A, BBB, BB, B, CCC, CC, C, D.

Request

curl
curl --request POST \
  --url 'https://api.regia.ee/searches' \
  --header 'X-API-Key: YOUR_API_KEY' \
  --header 'Content-Type: application/json' \
  --data '{"name":"New builders in Harju","filters":{"activity":["41","43"],"county":["Harju"],"registered_within_days":30}}'

Response

200 OK
{
  "success": true,
  "data": {
    "id": "srch_Hq3Lk8PzXw1Ab7Tc",
    "name": "New builders in Harju",
    "filters": {
      "activity": [
        "41",
        "43"
      ],
      "county": [
        "Harju"
      ],
      "registered_within_days": 30
    },
    "matches": 214,
    "new_matches_7d": 0,
    "last_run_on": "2026-09-29",
    "created_at": "2026-09-29T08:00:00.000Z",
    "updated_at": "2026-09-29T08:00:00.000Z"
  },
  "meta": {
    "request_id": "…"
  }
}

Response fields

data
The new search, as in List saved searches.

Update a saved search

Renames a search or replaces its filters. Send only what changes. New filters start from what matches now, without events. GET on the same path returns one search; DELETE removes it.

PATCHhttps://api.regia.ee/searches/{search}

Parameters

searchpathrequired
string·Search id (srch_…).

Body

namebody
string·New name.
filtersbody
object·New filters, as when creating; they replace the old ones.

Request

curl
curl --request PATCH \
  --url 'https://api.regia.ee/searches/srch_Hq3Lk8PzXw1Ab7Tc' \
  --header 'X-API-Key: YOUR_API_KEY' \
  --header 'Content-Type: application/json' \
  --data '{"filters":{"tax_debt_min":1000,"activity":["41"]}}'

Response

200 OK
{
  "success": true,
  "data": {
    "id": "srch_Hq3Lk8PzXw1Ab7Tc",
    "name": "New builders in Harju",
    "filters": {
      "tax_debt_min": 1000,
      "activity": [
        "41"
      ]
    },
    "matches": 1830,
    "new_matches_7d": 0,
    "last_run_on": "2026-09-29",
    "created_at": "2026-09-29T08:00:00.000Z",
    "updated_at": "2026-09-29T09:00:00.000Z"
  },
  "meta": {
    "request_id": "…"
  }
}

Response fields

data
The search after the change.

List new matches

Companies that started to match the search, newest first: the same companies the search.matches events carry. Companies that stop matching drop out of the list.

GEThttps://api.regia.ee/searches/{search}/matches

Parameters

searchpathrequired
string·Search id (srch_…).
sincequery
date·Only companies that started to match on or after this day, YYYY-MM-DD.
pagequery
integer·Page number, from 1.
limitquery
integer·Items per page, 1-100. Default 100.

Request

curl
curl --request GET \
  --url 'https://api.regia.ee/searches/srch_Hq3Lk8PzXw1Ab7Tc/matches?since=2026-09-30' \
  --header 'X-API-Key: YOUR_API_KEY'

Response

200 OK
{
  "success": true,
  "data": [
    {
      "registry_code": "17012345",
      "name": "Näide Ehitus OÜ",
      "legal_form": {
        "name": "Osaühing",
        "label": "Private limited company"
      },
      "status": {
        "code": "R",
        "label": "Registered"
      },
      "registered_on": "2026-09-29",
      "deleted_on": null,
      "vat_number": null,
      "address": {
        "full": "Harju maakond, Tallinn, Näite tn 1",
        "postal_code": "10111"
      },
      "url": "https://regia.ee/en/entity/17012345-naide-ehitus-ou",
      "matched_at": "2026-09-30T06:10:00.000Z"
    }
  ],
  "meta": {
    "request_id": "…",
    "pagination": {
      "page": 1,
      "limit": 100,
      "total": 1,
      "has_more": false
    }
  }
}

Response fields

registry_code
8-digit registry code, as a string.
name
Registered name.
legal_form
name (Estonian, as used in filters) and label (in lang).
status
code and label: R registered, L in liquidation, N bankrupt, D deleted.
registered_on, deleted_on
Registration and deletion dates (YYYY-MM-DD).
vat_number
Current VAT number, or null when not VAT registered.
address
full legal address and postal_code.
url
The company page on regia.ee.
matched_at
When the company started to match.
meta.pagination
page, limit, total (all matching rows) and has_more.

Reference

Reference

Classifier codes, EMTAK activity codes, your usage and the OpenAPI description.

Base path /

Classifiers

Codes and labels used in responses and filters.

GEThttps://api.regia.ee/classifiers/{type}

Parameters

typepathrequired
string·legal-forms, statuses, representative-roles, shareholder-roles, beneficial-owner-roles or ownership-types.
langquery
string·Language of labels and classifier values: et (default), en or ru. Names and free text stay as registered.

Request

curl
curl --request GET \
  --url 'https://api.regia.ee/classifiers/statuses?lang=en' \
  --header 'X-API-Key: YOUR_API_KEY'

Response

200 OK
{
  "success": true,
  "data": [
    {
      "code": "R",
      "label": "Registered"
    },
    {
      "code": "D",
      "label": "Deleted"
    }
  ],
  "meta": {
    "request_id": "9d2f6c1e-5b7a-4e0c-8f3d-2a1b0c9e8d7f"
  }
}

Response fields

data
code (name for legal forms) and label; legal forms also count companies.

EMTAK activity codes

Top-level sections of the Estonian activity classifier, or codes and titles matching q.

GEThttps://api.regia.ee/emtak

Parameters

qquery
string·Code prefix or words of the title, at least 2 characters.
versionquery
integer·2025 (default) or 2008.
langquery
string·Language of labels and classifier values: et (default), en or ru. Names and free text stay as registered.

Request

curl
curl --request GET \
  --url 'https://api.regia.ee/emtak?q=programmeerimine' \
  --header 'X-API-Key: YOUR_API_KEY'

Response

200 OK
{
  "success": true,
  "data": [
    {
      "code": "K",
      "parent_code": null,
      "title": "ELEKTROONILISE SIDE TEENUS, PROGRAMMEERIMINE, KONSULTATSIOONID, ANDMETÖÖTLUSTARISTU JA MUU INFOALANE TEGEVUS"
    },
    {
      "code": "62",
      "parent_code": "K",
      "title": "Programmeerimine, konsultatsioonid jms tegevused"
    }
  ],
  "meta": {
    "request_id": "9d2f6c1e-5b7a-4e0c-8f3d-2a1b0c9e8d7f",
    "version": 2025
  }
}

Response fields

code, parent_code, title
Up to 200 codes.
meta.version
Classifier version.

Get an EMTAK code

One activity code with the path to its section and its sub-codes.

GEThttps://api.regia.ee/emtak/{code}

Parameters

codepathrequired
string·EMTAK code, e.g. 62101 or K.
versionquery
integer·2025 (default) or 2008.
langquery
string·Language of labels and classifier values: et (default), en or ru. Names and free text stay as registered.

Request

curl
curl --request GET \
  --url 'https://api.regia.ee/emtak/62101?lang=en' \
  --header 'X-API-Key: YOUR_API_KEY'

Response

200 OK
{
  "success": true,
  "data": {
    "version": 2025,
    "code": "62101",
    "parent_code": "6210",
    "title": "Programming",
    "parents": [
      {
        "code": "K",
        "parent_code": null,
        "title": "ELECTRONIC COMMUNICATIONS SERVICES, PROGRAMMING, CONSULTANCY, DATA-INFRASTRUCTURE AND OTHER INFORMATION ACTIVITIES"
      },
      {
        "code": "62",
        "parent_code": "K",
        "title": "Computer programming, consultancy and related activities"
      }
    ],
    "children": []
  },
  "meta": {
    "request_id": "9d2f6c1e-5b7a-4e0c-8f3d-2a1b0c9e8d7f"
  }
}

Response fields

code, parent_code, title, version
The code.
parents, children
Section and groups above it, codes below it.

Usage

Requests made with your key per day and endpoint. Calls to this endpoint are not billed.

GEThttps://api.regia.ee/usage

Parameters

fromquery
date·First day, YYYY-MM-DD. Default: the first day of this month (Europe/Tallinn).
toquery
date·Last day. Default: today.

Request

curl
curl --request GET \
  --url 'https://api.regia.ee/usage' \
  --header 'X-API-Key: YOUR_API_KEY'

Response

200 OK
{
  "success": true,
  "data": {
    "key": "Example OÜ",
    "requests": 0,
    "errors": 0,
    "billed_units": 0,
    "days": []
  },
  "meta": {
    "request_id": "9d2f6c1e-5b7a-4e0c-8f3d-2a1b0c9e8d7f"
  }
}

Response fields

requests, errors
All requests and the failed ones.
billed_units
Billed units: successful requests, and one per query in lookups.
days
Per day and endpoint.

OpenAPI description

This reference as an OpenAPI 3.1 document, for code generators and API clients. No key needed.

GEThttps://api.regia.ee/openapi.json

Request

curl
curl --request GET \
  --url 'https://api.regia.ee/openapi.json'

Response

200 OK
{
  "openapi": "3.1.0",
  "info": {
    "title": "Regia API",
    "version": "1.0"
  },
  "paths": {}
}

Cookies

We use the cookies the portal needs to work and, with your consent, Google Analytics to understand how the portal is used. Learn more