Finland Company Register - PRH YTJ Y-tunnus Business Search avatar

Finland Company Register - PRH YTJ Y-tunnus Business Search

Pricing

from $4.25 / 1,000 companies

Go to Apify Store
Finland Company Register - PRH YTJ Y-tunnus Business Search

Finland Company Register - PRH YTJ Y-tunnus Business Search

Search and export Finnish companies from the official PRH / YTJ Business Information System. Filter by name, Business ID, town, postal code, legal form, line of business and registration date. Returns 26 fields per company and, by default, only companies still on the register.

Pricing

from $4.25 / 1,000 companies

Rating

0.0

(0)

Developer

PublicData

PublicData

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

Export the Finnish company register as a spreadsheet: every company in the PRH / YTJ Business Information System, filtered by name, Business ID, town, postal code, legal form, line of business or registration date — and, by default, only the ones still trading.

This Actor calls the open-data API of the Finnish Patent and Registration Office (avoindata.prh.fi) directly. No API key, no login, no scraped HTML: what you export is the register, licensed CC BY 4.0.

The register has 824,112 entries. About half of them are companies that have ceased, and PRH offers no way to exclude them. The Finland Company Register Actor filters them out before anything is exported, so you are not charged for defunct companies — and can flip the switch if the dead ones are exactly what you want.

What you get

Every row is one company, with 26 fields:

  • Business ID (Y-tunnus) and the current registered name, plus the previous names — a name search matches those too, so a row that looks unrelated is explained by its own previousNames cell
  • Status: still on the register, ceased, start-up not registered, or unregistered — with the registration date, and the end date where there is one
  • Legal form in English with the letter code the register accepts: OY limited company, OYJ public limited, KY limited partnership, AY partnership, OK co-operative, AOY housing company, SL branch of a foreign trader, SÄÄ foundation, and 19 more
  • Line of business — code plus the description in English and Finnish. PRH publishes every description in three languages; this Actor keeps the English one so the export is usable outside Finland
  • Both addresses in their own columns: the visiting address and the postal address, each with street, postal code and town
  • VAT registration, read from the VAT register specifically, with what the company is VAT-liable for in the register's own wording
  • A link to the official YTJ page, and the source attribution the licence requires

Who uses this

  • A sales team pulls every limited company in Helsinki registered under a given line of business, and gets a list where every row is a company that still exists.
  • A recruiter or founder watches companies registered in the last 30 days in a town, and reaches them first.
  • A compliance analyst resolves a Y-tunnus to legal form, status, addresses and VAT standing for a KYB file.
  • A market analyst counts companies per town and industry straight from the register instead of estimating.
  • A developer or AI agent keeps a Finland table fresh on a schedule, or calls the Actor as an MCP tool to answer company questions on demand.

Example output

One real record, exported by this Actor on 2026-08-28 from Helsinki, line of business 62100, legal form OY:

{
"businessId": "0248523-2",
"name": "Blue Yonder Finland Oy",
"previousNames": "JDA Technologies Oy",
"legalForm": "Limited company",
"legalFormCode": "OY",
"legalFormType": "16",
"status": "Registered",
"statusCode": "1",
"registrationDate": "1978-09-29",
"endDate": null,
"businessIdRegistrationDate": "1979-01-04",
"businessLineCode": "62100",
"businessLine": "Computer programming activities",
"businessLineFi": "Ohjelmistojen suunnittelu ja valmistus",
"streetAddress": "Kansakoulukuja 1",
"streetPostCode": "00100",
"streetCity": "HELSINKI",
"postalAddress": null,
"postalCode": null,
"postalCity": null,
"vatRegistered": true,
"vatDetail": "VAT-liable for business activity",
"inTradeRegister": true,
"sourceUrl": "https://tietopalvelu.ytj.fi/yritys/0248523-2",
"sourceApi": "avoindata.prh.fi/opendata-ytj-api/v3",
"source": "Finnish Patent and Registration Office (PRH) / YTJ, CC BY 4.0"
}

Input

FieldWhat it does
queryName match — current, previous, parallel and auxiliary names.
businessIdA single Y-tunnus, with the check digit, e.g. 0205709-4.
locationRegistered town, e.g. HELSINKI.
postCodeFive-digit postal code, matched against either address.
companyFormsLetter codes, e.g. OY. See the warning below.
businessLineIndustry code or free text. See the classification note below.
registeredAfter / registeredBeforeRegistration-date window, YYYY-MM-DD.
statusactive (default), ceased, or any.
maxItemsStop after this many exported rows. 0 means no limit.
includeRawAttach the untouched PRH JSON to each row.

The industry code changed on 1 January 2026

This is the mistake that costs the most, and the register's own documentation walks you into it.

Finland re-registered every company's line of business under a new classification on 2026-01-01. Codes were renumbered. PRH's API documentation still points at the older TOL 2008 codes — which now match only records frozen before the migration, and those are overwhelmingly companies that have ceased.

Measured on 2026-08-28, searching Helsinki for computer programming companies:

CodeClassificationMatchesStill trading
62010TOL 2008, the documented one440%
62100current3,58399%

Same activity, different number, 81× the results and all of them alive. This Actor checks the first page of every industry search and writes a warning into the run log naming the retired classification when your code looks like an old one, so you find out during the run instead of after the export.

The register accepts OY, and silently ignores 16 — the numeric type that appears inside the data for exactly the same thing. "Silently" means HTTP 200 and all 824,112 companies, as though no filter had been sent. Under pay-per-result billing that is an invoice for the whole country.

This Actor refuses a code that is not on the register's list rather than run that query, and the error names the letter code you probably meant.

Half the register has ceased

824,112 entries, of which roughly half are no longer trading. PRH has no status parameter, so status is applied by this Actor as rows arrive — and a row dropped by it is never charged, because the charge follows the row into the dataset.

Results come back ordered by Business ID, which is roughly oldest first, so a broad search with status: active reads through older ceased companies before it reaches newer live ones. That is the register's ordering, not a delay in the Actor.

Pricing

Pay per result: charged once per company row actually exported. A search that matches nothing costs nothing beyond the platform's start event.

Where the data comes from

The Finnish Patent and Registration Office publishes the Business Information System (YTJ) as open data under CC BY 4.0, declared in the API's own OpenAPI document. The licence requires attribution, which is why every row carries a source field naming PRH and the licence — keep it in whatever you build. PRH also asks that services built on the data do not use the PRH or YTJ logo or otherwise resemble PRH's own services.

Frequently asked questions

Can I use this commercially? Yes — CC BY 4.0 permits it, provided you attribute the Finnish Patent and Registration Office. The source column carries the attribution string for you.

How current is the data? The Actor queries the live API at run time. A company registered yesterday is available today; there is no cached copy in between.

Why does my industry search return old, dead companies? Because the code is from the classification retired on 2026-01-01. See the table above — 62010 and 62100 are the same activity in the two schemes. The run log names the problem when it detects it.

Why did my legal-form filter return the whole register? It did not, in this Actor — it refuses to run. The underlying API ignores an unrecognised code and returns everything, which is why the check exists. Use OY, not 16.

Can I export all 824,112 companies in one run? Yes in principle: the API pages 100 at a time with no offset ceiling, so nothing is unreachable. Expect a long run, and set maxItems deliberately, since every exported row is billed.

Do I get directors, owners or financial statements? No. Those live in separate PRH services with their own terms. This Actor stays within the open Business Information System.

Does it work as an MCP tool? Yes. Like every Apify Actor it exposes an MCP endpoint, so an AI agent can call the Finland Company Register Actor and get structured rows back.

  • Norway Company Register Search — the same job for the Norwegian Brreg register
  • France Company Register Scraper — France, with named directors
  • Brazil CNPJ Lookup — resolve Brazilian company identifiers
  • GLEIF LEI Scraper — Legal Entity Identifiers, for joining registers across countries