---
title: "Company Data API"
description: "TradeRegister.fi's Company Data API returns trade register data as JSON: search, registry facts and current officers, each with its source. Free, no key."
url: "https://traderegister.fi/company-data-api"
---

# Company Data API

> TradeRegister.fi's Company Data API returns what the trade register publishes about a company as JSON: identifiers, status, legal form, activity codes and current officers, each with its source. It is free, needs no key, and searches companies in 62 countries.

Call it from anything that speaks HTTP and get the register's answer, not an estimate. Companies are keyed by permanent IDs, so what you store keeps working through renames and mergers.

## Trade register data, as published.

A registry fact is what the official register published, dated to when the register was last observed where that is known. A field the register leaves out stays out, never filled in.

- 62 countries
- 3 JSON endpoints, no key
- 60 requests per minute free

- **Search API** (`GET /v1/search`): Find a company by the start of its name or by its business ID, narrowed by address country if you know it, and take its permanent ID with you.
- **Company API** (`GET /v1/companies/{company_id}`): Read one company's registry facts by permanent ID: status, legal form, identifiers, activity codes and when the register was last observed.
- **Officers API** (`GET /v1/companies/{company_id}/officers`): List up to 100 of a company's current officers as the register publishes them, each with the publishing system and, where known, the observation time; has_more says when the register lists more.
- **Resolve and batch** (with a [Coragrid API key](https://traderegister.fi/api-key.md)): Resolve names and domains to permanent IDs and read companies in batches, through the full Coragrid API with a key.

## Start in a minute

The API docs give the base URL, rate limit, parameters, a sample response and the problem codes, with cURL, JavaScript, Python and cgd examples. The OpenAPI document describes the same contract for your tools.

- [API documentation](https://traderegister.fi/api.md): Base URL, rate limit, parameters, a response sample and problem codes
- [OpenAPI document](https://traderegister.fi/api/openapi.json): The free API as an OpenAPI 3.2 document

```bash
# No key needed
base=https://api.traderegister.fi
curl "$base/v1/search?q=example&address_country=FI"

# An id from the search results
id=<company_id>
curl "$base/v1/companies/$id"
curl "$base/v1/companies/$id/officers"
```

```javascript
const base = "https://api.traderegister.fi";

const search = await fetch(
  `${base}/v1/search?q=example&address_country=FI`,
);
const { data } = await search.json();
if (!data.length) throw new Error("No match");

const company = await fetch(
  `${base}/v1/companies/${data[0].id}`,
);
console.log(await company.json());
```

```python
import requests

BASE = "https://api.traderegister.fi"
params = {"q": "example", "address_country": "FI"}

page = requests.get(f"{BASE}/v1/search", params).json()
if not page["data"]:
    raise SystemExit("No match")
company_id = page["data"][0]["id"]

url = f"{BASE}/v1/companies/{company_id}"
print(requests.get(url).json()["data"]["name"])
```

## Primary sources, passed on unchanged.

Coragrid reads the official trade registers, keeps the source and observation time of every fact and gives each company a permanent ID that survives renames, mergers and splits. TradeRegister.fi adds, corrects and infers nothing: a value is what the register published, and a redirected, split, removed or restricted record says so in its lifecycle.

- **Identity**: The permanent company ID, the name and the registry identifiers the register publishes, strongest first: national registry number, LEI, EU VAT number, VAT number or TIN.
- **Status and lifecycle**: The status as the register states it, and whether the record is current, redirected to its current record, split into successors, removed or restricted.
- **Legal form**: The legal form as the register publishes it, in the register's own language, such as Osakeyhtiö.
- **Location**: The address country, and the registration jurisdiction the identifiers are scoped to; the two can differ.
- **Activity codes**: Current activity classifications in their source scheme and version, primary first, codes verbatim and no inferred crosswalks. Titles a register does not publish come from the classification's own publisher, such as Eurostat for NACE.
- **Officers**: Current officers with their roles as the register states them and appointment dates where published, each with its publishing system and, where known, its observation time.

## Why TradeRegister.fi?

### Quality

- The register's own facts, with activity code titles from the classifications' publishers where a register has none.
- Nothing estimated: a field the register does not publish is absent from the JSON.

### Flexibility

- Free with no key and no account, at 60 requests per minute.
- A Coragrid API key adds search by description, batch reads and limits set per key, with the same IDs and field names.

### Scope

- Search and company profiles with 62 countries to filter by, and current officers where they are available.
- Coverage grows as Coragrid connects and qualifies registers; an empty result is not evidence that a company does not exist.

## Who uses it

### Onboarding and compliance teams

Check a counterparty against the register before you sign.

- Confirm the name, status and legal form from the register, not from a form field
- Keep the observation date next to every fact you file
- Start on the free API and add a Coragrid API key as volume grows

### Software engineers

A predictable JSON backbone for company data.

- Store permanent IDs that outlive renames, mergers and splits
- Handle errors as RFC 9457 problem documents with stable codes
- Generate clients from the OpenAPI 3.2 document, or use the cgd command line with a key

### Data and AI teams

Ground analysis and agents in the register's facts.

- Match companies by business ID instead of names that change and repeat
- Reconcile your own company records with what the register publishes
- Give coding agents the lookup skill through the agent setup file

## Frequently asked questions

### What is a company data API?

An HTTP interface that returns company information as structured data, so software looks a company up instead of a person reading a register extract. TradeRegister.fi's Company Data API returns the trade register's own facts as JSON: identifiers, status, legal form, activity codes and officers.

### Where does the data come from?

From official trade and company registers, read by Coragrid. Every record is fetched live from the Coragrid public API, which keeps the source and observation time of each fact and gives every company a permanent ID.

### Can I look up a company by business ID?

Yes. Search with the business ID as the register writes it, or with the start of the company name, and narrow by address country if you know it. Every result carries the permanent company ID, which you then read the company by.

### Is it really free?

Yes. The free API needs no key and no account and allows 60 requests per minute per client address; over the limit it answers 429 with a Retry-After header. A Coragrid API key adds search by description, batch reads, higher limits and the cgd command line.

### Which countries can I search?

The country filter offers Albania, Angola, Anguilla, Antigua and Barbuda, Argentina, Armenia, Australia, Austria, Azerbaijan, Bahrain, Bangladesh, Belgium, Belize, Benin, Bolivia, Bosnia and Herzegovina, Botswana, Brazil, Brunei Darussalam, Bulgaria, Canada, Croatia, Cyprus, Czechia, Denmark, Estonia, Finland, France, Germany, Greece, Guernsey, Hong Kong, Hungary, Iceland, Ireland, Israel, Italy, Japan, Jersey, Latvia, Lithuania, Luxembourg, Malta, Monaco, Mongolia, Netherlands, New Zealand, Norway, Poland, Portugal, Romania, Serbia, Singapore, Slovakia, Slovenia, South Korea, Spain, Sweden, Switzerland, Taiwan, Ukraine and United Kingdom today. Coverage depends on which registers Coragrid has connected and qualified; a company that is missing is not evidence that it does not exist.

### How current is the data?

Every record is fetched live, and a profile states when the register was last observed where that is known. The register itself remains the legally binding source.

### How does TradeRegister.fi keep the data accurate?

By leaving it alone. A value is what the register published, a field the register does not publish is left out, and nothing is added, corrected or inferred. A correction made at the register is the durable fix, and it flows into the API.

### Do company IDs stay stable over time?

Yes. Every company has a permanent ID that stays valid through renames, mergers and splits. A redirected record names its current record and a split record names its successors, so the IDs you store keep working.

### How is this different from estimated company data?

Many company databases estimate values such as revenue or headcount and blend sources without saying which. This API returns what the register publishes and leaves out what it does not, so you can tell what the register said.

### How do I use it from my own systems?

Over HTTPS, from anything that speaks it: three read-only JSON endpoints, documented with cURL, JavaScript and Python examples and an OpenAPI 3.2 document. Coding agents install the lookup skill from the agent setup file, and with a Coragrid API key the cgd command line works from the terminal.

### Can I show the data in my product?

Yes, in your internal operations and in your own products and services, shown as powered by Coragrid wherever it appears. The Terms of Service list what is not allowed, such as copying a substantial part of the data to build a competing service.

## Make the first call.

No key, no account, no form. Read the docs, call the API, and add a Coragrid API key when you need the full platform.

- [Read the API docs](https://traderegister.fi/api.md)
- [Get an API key](https://traderegister.fi/api-key.md)

---

*This is a markdown version of [https://traderegister.fi/company-data-api](https://traderegister.fi/company-data-api) for AI/LLM consumption.*
