# Finland New Companies: PRH Trade Register Lead Feed (`veridra/finland-new-companies`) Actor

Get newly registered Finnish companies from the official PRH trade register: name, business ID, form, industry, address, website and VAT status. Filter by date, form, industry and town. Daily lead feed.

- **URL**: https://apify.com/veridra/finland-new-companies.md
- **Developed by:** [Veridra Computer Technology](https://apify.com/veridra) (community)
- **Categories:** Lead generation, Business, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.50 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

### What does Finland New Companies do?

**Finland New Companies** returns companies that were just entered in the **Finnish trade register**, straight from the official open data of the Finnish Patent and Registration Office (PRH). Each result has the business ID, form, industry, address, website and tax register status, so you can reach new Finnish businesses in their first weeks. It returns what the register publishes; it does not add contact details.

It collects data from **[Finnish Patent and Registration Office (PRH), Business Information System (YTJ) open data](https://avoindata.prh.fi/en)** and returns clean, structured results you can download or pull through the **Apify API**.

### Why use Finland New Companies?

- **B2B sales and lead generation:** reach new Finnish companies while they are choosing accountants, banks, software, insurance and office space.
- **Accounting, legal and business services:** find new limited companies in your town or industry every week.
- **Market research:** count new companies by industry, form or town and follow the trend with scheduled runs.
- **KYB and onboarding checks:** confirm a business ID, registration date and VAT status from the official register.
- **AI agents:** clean, consistent JSON with a link to the official YTJ record on every result.
- Runs on the Apify platform: schedule runs, call it through the API, connect it to integrations, and get notified when a run fails.

### What data can Finland New Companies extract?

| Field | Type | Description |
| --- | --- | --- |
| `businessId` | string | Finnish business ID (Y-tunnus). |
| `name` | string | Registered company name. |
| `otherNames` | array | Parallel and auxiliary trade names. |
| `companyForm` | string | Company form abbreviation, for example OY. |
| `companyFormDescription` | string | Company form in English. |
| `registrationDate` | string | Date the company entered the trade register (YYYY-MM-DD). |
| `businessIdDate` | string | Date the business ID was granted (YYYY-MM-DD), often weeks before registration. |
| `industryCode` | string | Main industry code (TOIMI, based on NACE). |
| `industryDescription` | string | Main industry in English. |
| `website` | string | Company website, when registered. |
| `streetAddress` | string | Street and building number of the company address. |
| `postalCode` | string | Postal code. |
| `city` | string | Post office town. |
| `municipalityCode` | string | Three-digit Finnish municipality code. |
| `addressIsPostal` | boolean | True when only a postal address is registered, so the address may not be where the company operates. |
| `inTradeRegister` | boolean | Whether the company is entered in the trade register. |
| `vatRegistered` | boolean | Whether the company is liable for VAT. |
| `employerRegistered` | boolean | Whether the company is in the employer register, a sign it pays salaries. |
| `prepaymentRegistered` | boolean | Whether the company is in the prepayment (tax) register. |
| `situations` | array | Current situations such as liquidation or bankruptcy, in English. |
| `euId` | string | European Unique Identifier (EUID) of the company. |
| `lastModified` | string | When the company's record last changed. |
| `registryUrl` | string | The company's page in the YTJ business information service, for verification. |
| `sourceUrl` | string | PRH open data API record for this company. |
| `scrapedAt` | string | When this result was collected (UTC, ISO 8601). |

### How to use Finland New Companies

1. Open the actor and select **Try for free**.
2. Fill in **Days back**, **Registered from**. The prefilled example works as a first test.
3. Set **Maximum results** to control how much data, and cost, a run produces.
4. Select **Start** and wait for the run to finish.
5. Download the results as JSON, CSV, Excel or HTML, or fetch them through the API.

### How much does it cost to use Finland New Companies?

You pay per result: **$5.00 per 1,000 results** ($0.005 each), plus Apify's small start fee of $0.0001 per run. For example, 1,000 results cost about $5.00. You can set a maximum cost per run in the run options, and the actor stops cleanly when it is reached.

Subscribers to Apify's paid plans pay less per result: 10% off on Bronze, 20% off on Silver and 30% off on Gold and higher plans.

### Get only new results

Turn on **Only new results** and schedule the actor (for example daily) to use it as a monitor: each run skips what earlier runs already returned, so you get a feed of new records and pay only for those. The first run returns everything that matches. The memory lives in your own Apify account; give runs the same **Monitor name** to share it when you change other inputs.

### Use it from AI agents

AI agents can find and run Finland New Companies as a tool through Apify's MCP server (mcp.apify.com) or the Apify API, and get the same structured results, billed per result. Without code, Apify's Zapier, Make and n8n integrations can start it and send each new result to a sheet, CRM or chat.

### Input

See the **Input** tab for every option. The main fields:

| Field | Type | Default | Description |
| --- | --- | --- | --- |
| `daysBack` | integer | 7 | Companies registered in this many days up to today. Ignored when a start date is set. |
| `dateFrom` | string | "" | Only companies registered on or after this date (YYYY-MM-DD). Leave empty to use Days back. |
| `dateTo` | string | "" | Only companies registered on or before this date (YYYY-MM-DD). Leave empty for today. |
| `companyForms` | array | \["OY", "OYJ"] | Which legal forms to include. Housing companies and other property companies are left out by default because they are rarely buyers. |
| `industryCodes` | array | \[] | TOIMI industry codes or their first digits, for example 62 for IT services or 4120 for construction of buildings. Leave empty for all industries. |
| `town` | string | "" | Only companies with an address in this town, for example Helsinki or Tampere. |
| `nameContains` | string | "" | Only companies whose name, or one of their other names, contains this text. |
| `onlyActive` | boolean | true | Leave out companies in liquidation, bankruptcy or restructuring. |
| `maxResults` | integer | 1000 | Stop after this many results. Each result costs $0.005, so this also caps the cost of a run. Use 0 for no limit. Keep it low for a first test. |
| `onlyNew` | boolean | false | Monitoring mode: skip results this monitor returned in earlier runs, so a scheduled run returns, and bills, only what is new. The first run returns everything that matches. |
| `monitorName` | string | "" | Runs with the same name share one memory of returned results, even if you change other inputs. Leave empty to keep a separate memory for each distinct input. |

Example input:

```json
{
  "daysBack": 7,
  "maxResults": 20
}
```

### Output

You can download the dataset in various formats such as JSON, HTML, CSV, or Excel. Example items:

```json
[
  {
    "businessId": "3642238-7",
    "name": "Exesso Ravintolat Oy",
    "otherNames": [
      "Amirax"
    ],
    "companyForm": "OY",
    "companyFormDescription": "Limited company",
    "registrationDate": "2026-10-13",
    "businessIdDate": "2026-07-29",
    "industryCode": "56302",
    "industryDescription": "Coffee houses and other non-alcoholic beverage serving activities",
    "website": null,
    "streetAddress": "Pentintie 9",
    "postalCode": "39700",
    "city": "PARKANO",
    "municipalityCode": "581",
    "addressIsPostal": true,
    "inTradeRegister": true,
    "vatRegistered": false,
    "employerRegistered": false,
    "prepaymentRegistered": false,
    "situations": [],
    "euId": "FIFPRO.3642238-7",
    "lastModified": "2026-10-14T03:34:25",
    "registryUrl": "https://tietopalvelu.ytj.fi/yritys/3642238-7",
    "sourceUrl": "https://avoindata.prh.fi/opendata-ytj-api/v3/companies?businessId=3642238-7",
    "scrapedAt": "2026-10-19T18:44:12+00:00"
  },
  {
    "businessId": "3647458-2",
    "name": "RMKSOUND Oy",
    "otherNames": [],
    "companyForm": "OY",
    "companyFormDescription": "Limited company",
    "registrationDate": "2026-10-13",
    "businessIdDate": "2026-08-17",
    "industryCode": "90392",
    "industryDescription": "Setting up of presentation equipment and stage structures for festivals and other cultural events",
    "website": "https://www.rmksound.net",
    "streetAddress": "puusepänkuja 5",
    "postalCode": "60800",
    "city": "ILMAJOKI",
    "municipalityCode": "145",
    "addressIsPostal": false,
    "inTradeRegister": true,
    "vatRegistered": true,
    "employerRegistered": false,
    "prepaymentRegistered": true,
    "situations": [],
    "euId": "FIFPRO.3647458-2",
    "lastModified": "2026-10-15T08:53:10",
    "registryUrl": "https://tietopalvelu.ytj.fi/yritys/3647458-2",
    "sourceUrl": "https://avoindata.prh.fi/opendata-ytj-api/v3/companies?businessId=3647458-2",
    "scrapedAt": "2026-10-19T18:44:12+00:00"
  }
]
```

### Tips

- Set Days back to 7, turn on Only new results and schedule a weekly run to get only the companies you have not seen yet.
- Use Industry codes such as 62 (software and IT services) or 41 (construction of buildings) to focus on your market.
- Employer registered and VAT registered show which new companies already pay salaries or sell VAT-liable services.
- Schedule the actor to keep a dataset fresh, and use the API or integrations to send new results where you need them.

### FAQ, disclaimers, and support

#### Where does the data come from?

From Finnish Patent and Registration Office (PRH), Business Information System (YTJ) open data (avoindata.prh.fi). Data is used under: PRH open data is published under the Creative Commons Attribution 4.0 licence (CC BY 4.0): reuse, including commercial reuse, is allowed with attribution to the Finnish Patent and Registration Office. See the source's terms: https://creativecommons.org/licenses/by/4.0/

#### Is it legal to use this data?

This actor only collects publicly available data from Finnish Patent and Registration Office (PRH), Business Information System (YTJ) open data and does not collect personal data about private individuals. Check that your use complies with the source's terms and the laws that apply to you. This actor is not affiliated with or endorsed by Finnish Patent and Registration Office (PRH), Business Information System (YTJ) open data.

#### How fresh is the data?

PRH updates its open data every day, and the actor queries the live API on every run. A company appears once its registration is entered in the trade register.

#### Why do some companies have no website or industry?

Companies add those details themselves, and many new companies have not done so yet. The register does not publish email addresses or phone numbers, and the actor does not add them.

#### Does it return private traders or people's addresses?

No. PRH's open data holds registered legal entities only, and the actor leaves out care-of names and apartment numbers from addresses.

#### What is the difference between the registration date and the business ID date?

The business ID is often granted weeks before the company is entered in the trade register. The actor filters on the trade register date, so you get companies that just became registered.

#### Something is not working

Open an issue in the **Issues** tab with your run link and we will look at it. For programmatic access, see the **API** tab.

# Changelog

This Actor's version history is a separate document: https://apify.com/veridra/finland-new-companies/changelog.md

# Actor input Schema

## `daysBack` (type: `integer`):

Companies registered in this many days up to today. Ignored when a start date is set.

## `dateFrom` (type: `string`):

Only companies registered on or after this date (YYYY-MM-DD). Leave empty to use Days back.

## `dateTo` (type: `string`):

Only companies registered on or before this date (YYYY-MM-DD). Leave empty for today.

## `companyForms` (type: `array`):

Which legal forms to include. Housing companies and other property companies are left out by default because they are rarely buyers.

## `industryCodes` (type: `array`):

TOIMI industry codes or their first digits, for example 62 for IT services or 4120 for construction of buildings. Leave empty for all industries.

## `town` (type: `string`):

Only companies with an address in this town, for example Helsinki or Tampere.

## `nameContains` (type: `string`):

Only companies whose name, or one of their other names, contains this text.

## `onlyActive` (type: `boolean`):

Leave out companies in liquidation, bankruptcy or restructuring.

## `maxResults` (type: `integer`):

Stop after this many results. Each result costs $0.005, so this also caps the cost of a run. Use 0 for no limit. Keep it low for a first test.

## `onlyNew` (type: `boolean`):

Monitoring mode: skip results this monitor returned in earlier runs, so a scheduled run returns, and bills, only what is new. The first run returns everything that matches.

## `monitorName` (type: `string`):

Runs with the same name share one memory of returned results, even if you change other inputs. Leave empty to keep a separate memory for each distinct input.

## Actor input object example

```json
{
  "daysBack": 7,
  "dateFrom": "",
  "dateTo": "",
  "companyForms": [
    "OY",
    "OYJ"
  ],
  "industryCodes": [],
  "town": "",
  "nameContains": "",
  "onlyActive": true,
  "maxResults": 20,
  "onlyNew": false,
  "monitorName": ""
}
```

# Actor output Schema

## `dataset` (type: `string`):

Dataset containing all results

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "daysBack": 7,
    "maxResults": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("veridra/finland-new-companies").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "daysBack": 7,
    "maxResults": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("veridra/finland-new-companies").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "daysBack": 7,
  "maxResults": 20
}' |
apify call veridra/finland-new-companies --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,veridra/finland-new-companies"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/A7aAer4zyyYwCnCfx/builds/7GokL2aYUeVCZCL0t/openapi.json
