# EU Company Registry Lookup (FR, NO, FI, CZ, PL) (`nefes-tools/eu-company-registry`) Actor

Company data straight from official open business registries: legal name, status, VAT ID, legal form, industry code, address, founding date, employees and website. Look up by registration number or VAT ID, search by name, or list new companies by industry and region. Pay per company.

- **URL**: https://apify.com/nefes-tools/eu-company-registry.md
- **Developed by:** [Erich Michal Sikora](https://apify.com/nefes-tools) (community)
- **Categories:** Lead generation, Business
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 1,000 companies

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

## EU Company Registry Lookup — France, Norway, Finland, Czechia, Poland

**Check any company in five European business registries and get one clean row back.** You get the
registration number, legal name, status, VAT number, legal form, industry, registered address, founding date
and a link to the official registry page. Look companies up by ID or VAT number, search them by name, or list
**newly registered companies** by industry and postcode. The data comes live from the official open
government registries, and you pay only per company returned.

| What you get per company | Example |
|---|---|
| Registration number and type | 923609016 · Organisasjonsnummer |
| Legal name, trade and former names | EQUINOR ASA · formerly STATOIL ASA |
| Status | active / inactive (deleted, bankruptcy, liquidation) |
| VAT number | NO923609016MVA, FR59542051180, CZ00177041 |
| Legal form | Public limited company, SAS, s.r.o. |
| Industry code + description | 62.01 · Computer programming activities |
| Registered address | Forusbeen 50, 4035 Stavanger |
| Founded / registered / closed dates | 1972-09-18 |
| Employees, website, share capital | where the registry publishes them |
| Official registry link | virksomhet.brreg.no/…/923609016 |

### Who uses it

- **KYB and compliance teams.** Before onboarding a supplier or customer, they check that it exists, is active
  and uses the right legal name, VAT number and address.
- **Finance and procurement.** Invoicing and ERP teams check vendor master data in bulk against the
  official record.
- **Sales and marketing.** Get a daily or weekly list of **new companies** in your industry and region
  (e.g. every new IT company in Norway or Finland) and enrich CRM accounts with legal form, industry and
  address.
- **AI agents and automations.** Flat JSON with the same fields for every country works with CRMs,
  Google Sheets, Make, Zapier or MCP clients.

### Sources

| Country | Registry | Lookup by ID | Search by name | List by filters |
|---|---|---|---|---|
| 🇫🇷 France | Annuaire des Entreprises (INSEE Sirene + RNE) | SIREN, SIRET, FR VAT | ✅ | industry, postcode/département |
| 🇳🇴 Norway | Brønnøysund Register Centre | organisation number, NO…MVA | ✅ | industry, postcode, registered from |
| 🇫🇮 Finland | PRH / YTJ open data | Business ID (Y-tunnus) | ✅ | postcode, registered from (+ industry) |
| 🇨🇿 Czechia | ARES (Ministry of Finance) | IČO, CZ VAT | ✅ | only together with a name |
| 🇵🇱 Poland | KRS (Ministry of Justice) | KRS number | — | — |

All five are official, public, no-login APIs published for reuse. The Actor does not scrape websites or get
around any protection, and it cites the source and licence in every row.

### How to use it

1. **Look up known companies.** Paste IDs or VAT numbers with a country prefix into *Company IDs*:
   `FR 542051180`, `NO923609016MVA`, `FI 0112038-9`, `CZ 00177041`, `PL 0000019193`.
2. **Search by name.** Add names to *Company names* and pick countries. Results must contain every word of the
   name, so you do not get loose matches.
3. **Find new companies.** Leave names empty. Set *Industry codes* (NACE, e.g. `62` for IT, `41` for
   construction), optionally *Postal codes*, and *Registered from*. Then add a daily or weekly **Schedule** in
   Apify and connect it to e-mail, Slack, Google Sheets or a webhook.

#### Example input

```json
{
    "companyIds": ["FR 542051180", "NO 923609016", "CZ 00177041"],
    "names": ["nordic semiconductor"],
    "countries": ["FR", "NO", "FI", "CZ"],
    "industryCodes": [],
    "registeredFrom": null,
    "onlyActive": true,
    "maxResults": 100
}
```

New IT companies in Norway and Finland since 1 September:

```json
{ "countries": ["NO", "FI"], "industryCodes": ["62"], "registeredFrom": "2026-09-01", "maxResults": 500 }
```

#### Example output

```json
{
    "country": "FI",
    "companyId": "0112038-9",
    "companyIdType": "Y-tunnus (Business ID)",
    "name": "Nokia Oyj",
    "legalForm": "Public limited company",
    "status": "active",
    "statusDetail": null,
    "foundedDate": "1896-12-19",
    "vatId": "FI01120389",
    "industryCode": "70100",
    "industryDescription": "Activities of head offices",
    "website": "https://www.nokia.com",
    "street": "Karakaari 7",
    "postalCode": "02610",
    "city": "ESPOO",
    "address": "Karakaari 7, 02610 ESPOO",
    "registryUrl": "https://tietopalvelu.ytj.fi/yritys/0112038-9",
    "source": "Finnish Patent and Registration Office (PRH) – YTJ open data, Finland",
    "license": "CC BY 4.0 (source: PRH / YTJ)"
}
```

### Pricing

**Pay per company: $3 per 1 000 companies ($0.003 each)**, plus a tiny Actor start fee. There are no proxy,
browser or subscription costs.

- You pay only for companies written to the results. IDs that were not found, sole traders skipped for privacy
  and duplicates cost nothing.
- **Max companies** and Apify's *maximum cost per run* cap what you spend. The Actor stops cleanly at the limit.
- Checking 1 000 suppliers costs about $3. A daily list of new companies in one industry costs a few cents.

### Good to know

- **Companies only, no personal data.** Sole traders and other records about individuals (French
  *entrepreneurs individuels*, Norwegian ENK, Czech OSVČ, bankruptcy estates) are skipped because their name
  is a person's name. Directors, shareholders and contact persons are never collected.
- **VAT numbers:** France is computed from the SIREN (every French company has one). Norway, Finland and
  Czechia show a VAT number only when the company is in the VAT register. Poland returns NIP and REGON in
  `taxIds`.
- **Industry codes** are the national versions of NACE (NAF, SN, TOL, CZ-NACE, PKD). Filters use the NACE
  prefix, so `62` matches 62.01, 62.02 and so on. Descriptions are in English, except for Norway, where the
  registry publishes Norwegian text.
- **Limits of the sources:** France cannot filter by registration date, so a date filter without names skips
  France. Czech ARES answers a name search only when it matches fewer than 1 000 entities. Poland's open API
  looks companies up by KRS number only.
- The `SUMMARY` record in the key-value store shows companies per country, IDs not found, skipped records
  and why the run stopped.

### FAQ

**How fresh is the data?** Every run queries the registries live, so you get the record as the registry
publishes it at that moment.

**Can I add other countries?** Countries are added when their registry offers a free open API. Tell us which
one you need in an issue on the Actor page.

**Something is wrong or missing?** Open an issue on the Actor page. Fixes are usually quick.

# Actor input Schema

## `companyIds` (type: `array`):

Registration numbers with a country prefix. France: SIREN, SIRET or FR VAT ID (FR 552100554). Norway: organisation number (NO 923609016). Finland: Business ID (FI 0112038-9). Czechia: IČO (CZ 00177041). Poland: KRS number (PL 0000019193). The prefix can be left out when exactly one country is selected below.

## `names` (type: `array`):

Search the registries of the selected countries by company name (France, Norway, Finland, Czechia). Each name is searched in every selected country.

## `countries` (type: `array`):

Registries to search by name or filters. Poland supports lookup by KRS number only.

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

Keep only companies whose main activity starts with these NACE codes, e.g. "62" (IT services) or "62.01" (software development). Works as a stand-alone filter in France and Norway, and narrows name searches everywhere.

## `postalCodes` (type: `array`):

Keep only companies registered at these postal codes (prefix match). In France a 2-digit département (e.g. 75) also works.

## `registeredFrom` (type: `string`):

Only companies registered on or after this date (YYYY-MM-DD). Use it with a daily or weekly schedule to get newly founded companies. Filtered in the registry for Norway and Finland, after download for France and Czechia.

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

Skip dissolved, bankrupt and liquidated companies in searches. Lookups by ID always return the company with its status.

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

Stop after this many companies. You pay only for companies returned.

## Actor input object example

```json
{
  "companyIds": [
    "FR 542051180",
    "NO 923609016",
    "FI 0112038-9",
    "CZ 00177041",
    "PL 0000019193"
  ],
  "countries": [
    "FR",
    "NO",
    "FI",
    "CZ"
  ],
  "onlyActive": true,
  "maxResults": 100
}
```

# Actor output Schema

## `companies` (type: `string`):

One row per company: registration number, name, status, VAT ID, legal form, industry, address, founding date and link to the official registry page.

## `summary` (type: `string`):

Companies per country, IDs not found, sole traders skipped for privacy and why the run stopped.

# 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 = {
    "companyIds": [
        "FR 542051180",
        "NO 923609016",
        "FI 0112038-9",
        "CZ 00177041",
        "PL 0000019193"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("nefes-tools/eu-company-registry").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 = { "companyIds": [
        "FR 542051180",
        "NO 923609016",
        "FI 0112038-9",
        "CZ 00177041",
        "PL 0000019193",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("nefes-tools/eu-company-registry").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 '{
  "companyIds": [
    "FR 542051180",
    "NO 923609016",
    "FI 0112038-9",
    "CZ 00177041",
    "PL 0000019193"
  ]
}' |
apify call nefes-tools/eu-company-registry --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,nefes-tools/eu-company-registry"
        }
    }
}
```

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/tRZNIHOXIMQHlbYkL/builds/R0yVVucjsHxB09CNs/openapi.json
