Regmio API documentation
The Regmio API gives your systems the same company data you see on regmio.eu: Latvian, Estonian and Lithuanian companies from official registers, VAT checks in VIES, a watchlist and a feed of detected changes. It is a simple REST API with JSON responses and is included in the Business plan at no extra cost.
Quick start
- Log in to Regmio with an active Business plan and open Account → API keys.
- Create a key (for example "Accounting") and copy it — it is shown only once.
- Make your first request:
curl https://api.regmio.eu/v1/companies/40003032949 \
-H "Authorization: Bearer rg_live_YOUR_KEY"
The machine-readable specification (OpenAPI 3.1) is at https://api.regmio.eu/v1/openapi.json — import it into Postman, Insomnia or a code generator.
Authentication
Send the key in the Authorization header:
Authorization: Bearer rg_live_…
The header X-Api-Key: rg_live_… also works. Keep keys secret: store them on your server, never in a web page or mobile app. Each user can have up to 5 keys; a key you no longer need, or one that may have leaked, can be deleted in your account at any time — it stops working immediately.
The API works while your Business plan is active (for team members — while the team owner's plan is active).
Base URL, format and language
- Base URL:
https://api.regmio.eu/v1 - All responses are JSON in UTF-8; successful data is in the
datafield. - Dates are in ISO 8601 format with a time zone, e.g.
2026-11-06T08:15:00+00:00. - The
langparameter selects the language of texts (status names, change descriptions, error messages):en(default),lv,ru,et,lt,fi.
Limits
| Limit | Value |
|---|---|
| Requests per key | 60 per minute |
| Full company profiles | the same daily safety limit as on the website; the same company within a day counts once |
| Watchlist | up to 1000 companies per user |
| Adding to the watchlist | up to 300 numbers per request |
Every response contains the headers X-RateLimit-Limit and X-RateLimit-Remaining. If you exceed the limit you get HTTP 429 with a Retry-After header (seconds). Your current usage is returned by GET /me.
Endpoints
| Method | Path | Purpose |
|---|---|---|
| GET | /me |
Plan, limits and usage |
| GET | /search?q= |
Search by name, registration or VAT number |
| GET | /companies/{id} |
Full company profile |
| GET | /companies/{id}/vat |
VAT number check in VIES |
| GET | /watchlist |
Watched companies |
| POST | /watchlist |
Add one or several companies |
| DELETE | /watchlist/{country}/{id} |
Stop watching |
| GET | /changes |
Detected changes in watched companies |
{id} is the registration number: Latvia — 11 digits, Estonia — 8 digits, Lithuania — 9 digits. The country is detected automatically; if needed add ?country=LV|EE|LT.
Search
curl "https://api.regmio.eu/v1/search?q=Latvenergo" -H "Authorization: Bearer $REGMIO_KEY"
{
"data": [
{
"country": "LV",
"regcode": "40003032949",
"name": "Akciju sabiedrība \"Latvenergo\"",
"type": "Akciju sabiedrība",
"address": "Rīga, Pulkveža Brieža iela 12",
"registered": "1991-10-08",
"status": "active",
"status_label": "Registered"
}
],
"count": 1
}
status: active — registered; closed — liquidated, reorganised or terminated; warn — e.g. liquidation or insolvency in progress. Search does not count towards the profile limit. Optional country filters the results.
Company profile
curl https://api.regmio.eu/v1/companies/40003032949 -H "Authorization: Bearer $REGMIO_KEY"
The data object contains the same information as the profile on the website:
| Field | Content |
|---|---|
country, regcode, name |
Country, registration number, name |
status |
{code, label} |
basic |
Legal form, register, registration and termination date, address, VAT number, NACE activity, share capital |
officers |
Board and council members, procurators, liquidators (with powers and dates) |
members, stockholders |
Shareholders and stockholders with shares |
beneficial_owners |
Beneficial owners |
holdings |
Shares in other companies |
financials |
Annual reports by year: turnover, profit, assets, equity, liabilities, employees |
tax |
Tax rating, VAT status, taxes paid, tax debts |
insolvency, liquidations, suspensions, securing |
Insolvency, liquidation, suspended activity, securing measures |
sanctions |
Matches against EU, UN, US (OFAC), UK and Latvian sanctions lists and politically exposed persons (PEP) |
risk |
Regmio risk index: score (0–100), level (low/medium/high), flags with explanations |
timeline |
History of changes |
sources, checked_at |
Data sources with update dates, time of the check |
Lists are empty where a register does not publish the data (for example, Lithuanian open data does not contain the names of all officers). Personal codes are shown only in the extent published by the register. The risk index is indicative and is not a credit rating or legal opinion.
VAT check (VIES)
curl https://api.regmio.eu/v1/companies/40003032949/vat -H "Authorization: Bearer $REGMIO_KEY"
{
"data": {
"country": "LV",
"regcode": "40003032949",
"vat_number": "LV40003032949",
"valid": true,
"name": "AS LATVENERGO",
"address": "PULKVEŽA BRIEŽA IELA 12, RĪGA, LV-1230",
"service_available": true,
"checked_at": "2026-11-06T08:15:00+01:00"
}
}
The check is done in real time in the European Commission VIES system. If VIES is temporarily unavailable, service_available is false — try again later.
Watchlist
Regmio checks watched companies every morning against the latest register data. E-mail notifications follow your account settings; the API gives the same changes through /changes.
Add one company:
curl -X POST https://api.regmio.eu/v1/watchlist \
-H "Authorization: Bearer $REGMIO_KEY" -H "Content-Type: application/json" \
-d '{"id": "40003032949"}'
Add a list (up to 300 numbers):
curl -X POST https://api.regmio.eu/v1/watchlist \
-H "Authorization: Bearer $REGMIO_KEY" -H "Content-Type: application/json" \
-d '{"ids": ["40003032949", "10137319", "110053842"]}'
{ "data": { "added": ["40003032949", "10137319"], "already": [], "not_found": ["110053842"], "over_limit": [] } }
The response is 201 if at least one company was added, otherwise 200. List: GET /watchlist. Remove: DELETE /watchlist/LV/40003032949.
Change feed
curl "https://api.regmio.eu/v1/changes?since=2026-11-01T00:00:00Z" -H "Authorization: Bearer $REGMIO_KEY"
{
"data": [
{
"country": "LV",
"regcode": "40003032949",
"name": "Akciju sabiedrība \"Latvenergo\"",
"kind": "officer_added",
"title": "New officer",
"detail": "Jānis Bērziņš",
"level": "medium",
"detected_at": "2026-11-05T05:12:40+00:00"
}
],
"count": 1
}
Changes are sorted newest first; limit 1–500 (default 100). Recommended: poll once a day after 08:00 (Riga time) and pass the detected_at of the newest change you already have as since.
kind values: name, status, address, officer_added, officer_removed, owner_added, owner_removed, risk, flag_added, flag_removed, vat_on, vat_off, debt, report, removed. level: high, medium, info, ok.
Errors
{ "error": { "code": "not_found", "message": "No company with this registration number was found." } }
| HTTP | code |
Meaning |
|---|---|---|
| 401 | unauthorized |
Missing or invalid API key |
| 403 | business_required |
The Business plan is not active |
| 404 | not_found |
Company not found (or not on your watchlist) |
| 422 | invalid_query, invalid_id, invalid_since |
Invalid parameter |
| 429 | rate_limited |
Too many requests per minute — wait Retry-After seconds |
| 429 | daily_limit |
Daily profile limit reached |
| 503 | unavailable |
Register data is being updated — try again in a few minutes |
Validation errors of POST /watchlist have the format {"message": "…", "errors": {"field": ["…"]}}.
Code examples
Python
import requests
API = "https://api.regmio.eu/v1"
HEADERS = {"Authorization": "Bearer rg_live_YOUR_KEY"}
r = requests.get(f"{API}/companies/40003032949", headers=HEADERS, timeout=30)
r.raise_for_status()
company = r.json()["data"]
print(company["name"], company["status"]["label"], company["risk"]["level"])
PHP
$ch = curl_init('https://api.regmio.eu/v1/companies/40003032949');
curl_setopt_array($ch, [
CURLOPT_HTTPHEADER => ['Authorization: Bearer rg_live_YOUR_KEY'],
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 30,
]);
$company = json_decode(curl_exec($ch), true)['data'];
echo $company['name'];
JavaScript (Node.js 18+)
const res = await fetch('https://api.regmio.eu/v1/search?q=Latvenergo', {
headers: { Authorization: `Bearer ${process.env.REGMIO_KEY}` },
});
const { data } = await res.json();
console.log(data.map(c => `${c.regcode} ${c.name}`));
Excel (Power Query) — Data → Get Data → From Other Sources → Blank Query → Advanced Editor:
let
Source = Json.Document(Web.Contents("https://api.regmio.eu/v1/watchlist",
[Headers = [Authorization = "Bearer rg_live_YOUR_KEY"]])),
Table = Table.FromRecords(Source[data])
in
Table
Privacy and terms
- The API is for checking your own business partners and customers. Reselling data, building a competing database or bulk downloading of registers is not allowed (see the Terms of Use).
- Regmio does not keep a search history: to count limits we keep only the registration numbers of profiles opened and delete them after 35 days. More in the Privacy Policy.
- Data comes from official open registers and is updated daily; for legally or financially significant decisions also verify the information in the official register.
Support and changes
Questions and ideas: [email protected]. Version v1 will stay backward compatible: we may add new fields and endpoints, but we will not remove or rename existing ones without a new version and advance notice by e-mail.