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.

View as MarkdownAgent setup

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/min
Free rate limit

Search API

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.

/v1/search

Company API

Read one company's registry facts by permanent ID: status, legal form, identifiers, activity codes and when the register was last observed.

/v1/companies/{company_id}

Officers API

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.

/v1/companies/{company_id}/officers

Resolve and batch

Resolve names and domains to permanent IDs and read companies in batches, through the full Coragrid API with a key.

With a Coragrid API 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.

# No key neededbase=https://api.traderegister.ficurl "$base/v1/search?q=example&address_country=FI"# An id from the search resultsid=<company_id>curl "$base/v1/companies/$id"curl "$base/v1/companies/$id/officers"
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());
import requestsBASE = "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?

01

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.

02

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.

03

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.