# New Companies: Companies House UK, France, Norway, Finland (`polderdata/new-company-registrations-scraper`) Actor

Weekly feed of newly registered companies from official registers (Companies House, BODACC, Brreg Brønnøysund, PRH): name, number, legal form, SIC/NACE activity, address, website. Filter by activity, keyword, location. Only-new mode for n8n/Make.

- **URL**: https://apify.com/polderdata/new-company-registrations-scraper.md
- **Developed by:** [Polder Data](https://apify.com/polderdata) (community)
- **Categories:** Lead generation, Business
- **Features:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.40 / 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

## New Company Registrations: UK, France, Norway, Finland

Get a **feed of newly registered companies** from four official registers, ready for weekly prospecting: **UK Companies House**, **France BODACC**, **Norway Brønnøysund** and **Finland PRH**. Every row has the company name, company number, legal form, registration date, activity code (SIC / NACE) with description, registered address and a link to the official register page.

**Built for schedules.** Turn on **Only new since last run** and schedule the Actor weekly (Apify Schedules, n8n, Make or Zapier). Each run returns only companies that this feed has not delivered before, so you never get or pay for the same company twice.

About **20,000 new companies a week** across the four countries (week of 7–13 November 2026: UK 13,783 · France 4,409 · Norway 1,400 · Finland 407). A full week of all four registers takes about 30 seconds.

> Unofficial tool. Not affiliated with Companies House, DILA/BODACC, the Brønnøysund Register Centre or PRH. The data comes from their open, keyless public services (see *Where does the data come from?*).

### What data you get

One row per new company.

| Field | Example | Description |
|---|---|---|
| `country`, `register` | `GB`, `Companies House` | Register the company comes from (GB, FR, NO, FI) |
| `companyNumber` | `17580244` | Companies House number, SIREN (France), organisation number (Norway) or business ID (Finland) |
| `companyName` | `LEOZ KEBAB & PIZZA LTD` | Registered name |
| `legalForm`, `legalFormCode` | `Private limited company`, `ltd` | Legal form as named by the register, plus a short code you can filter on (ltd, llp, SAS, SARL, SCI, AS, OY…) |
| `status` | `active` | Status in the register |
| `registrationDate` | `2026-11-13` | Incorporation / registration date |
| `publishedDate` | `2026-11-12` | France only: publication date of the BODACC creation notice |
| `activityCodes`, `activityDescriptions` | `["56103"]`, `["Take-away food shops and mobile food stands"]` | SIC 2007 (UK), SN2025 (Norway), TOL 2025 (Finland) or NAF (France, from the SIRENE register) codes with descriptions |
| `activityText` | `Restauration rapide sur place et à emporter` | Activity in the company's own words (France, Norway) |
| `address`, `postalCode`, `city`, `region`, `addressCountry` | `500 White Hart Lane London, England, N17 7NA`, `N17 7NA`, … | Registered office / business address |
| `shareCapital`, `shareCapitalCurrency` | `1000`, `EUR` | Share capital (France, Norway) |
| `website` | `https://www.example.fi` | Website when the company registered one (Norway, Finland) |
| `registerUrl` | `https://find-and-update.company-information.service.gov.uk/company/17580244` | The company's page in the official register |
| `scrapedAt` | `2026-11-13T17:06:33.349Z` | When the row was collected |

Field fill rates in a full week (7–13 Nov 2026): UK activity code 99 %, address and postcode 100 %; France NAF code 85 % (companies from the last few days often have none yet), activity text 90 %, registration date 79 % (publication date 100 %), share capital 98 %; Norway activity code 62 % (many new entities get their code later), share capital 50 %; Finland activity code 92 %, website 6 %.

### How to use

1. Pick the **countries** and the **window**: *registered in the last N days* (default 7) or a from/to date.
2. Optionally narrow it down:
   - **Activity codes**: digit prefixes such as `56` (food and drink), `62` (software and IT), `41`–`43` (construction), `68` (real estate), `86` (health), or full codes like `56101` (UK licensed restaurants).
   - **Keywords**: words in the name or activity description, e.g. `restaurant`, `software`, `logiciel`, `bygg`.
   - **Locations**: postal-code prefixes (`SW1`, `M1`, `75`, `0150`) or place names (`London`, `Lyon`, `Oslo`, `Helsinki`).
   - **Legal forms**: `ltd`, `llp`, `plc`, `SAS`, `SASU`, `SARL`, `SCI`, `AS`, `OY`…
3. For a recurring feed, turn on **Only new since last run** and add a schedule. Click **Start** and download CSV, Excel or JSON, or let your workflow pick up the results.

Example: new restaurants and takeaways in the UK this week:

```json
{
    "countries": ["GB"],
    "daysBack": 7,
    "activityCodes": ["5610"]
}
```

Example: weekly feed of new software companies in London and Manchester, only companies not delivered before:

```json
{
    "countries": ["GB"],
    "daysBack": 8,
    "activityCodes": ["62"],
    "locations": ["London", "Manchester"],
    "onlyNewSinceLastRun": true,
    "stateKey": "uk-software-london-manchester",
    "maxItems": 5000
}
```

Example: new restaurant companies (NAF 56.10) in Paris and Lyon, SAS and SARL only:

```json
{
    "countries": ["FR"],
    "daysBack": 14,
    "activityCodes": ["5610"],
    "locations": ["75", "Lyon"],
    "legalForms": ["SAS", "SARL"]
}
```

### Weekly feeds with n8n, Make or Zapier

1. Save your input as an Apify **task** with `onlyNewSinceLastRun: true` and a `stateKey` (e.g. `uk-new-restaurants`).
2. Schedule the task weekly (or daily) in Apify, or call it from n8n / Make / Zapier with the Apify integration.
3. Use a window a bit longer than the schedule (e.g. 8–10 days for a weekly run) so late registrations are not missed. The feed memory makes sure each company is delivered only once.
4. Read the run's dataset in the next step of your workflow (CRM, Google Sheets, e-mail enrichment…).

The memory is kept for each filter combination (or `stateKey`) in a key-value store named `new-company-registrations-state` in your own Apify account. A new `stateKey` starts a fresh feed.

### Pricing

You pay per company returned: **$3.00 per 1,000 companies** ($0.003 each), plus Apify's small per-run start fee. A weekly feed of all new UK restaurants and takeaways (SIC 5610x, ~790 a week in November 2026) costs about **$2.40 a week**; every new company in all four countries for a week (~20,000) costs about **$60**. Companies skipped by your filters or by *Only new since last run* are not charged.

On the Apify Free plan a run returns at most 100 companies.

### Example output

```json
[
    {
        "country": "GB",
        "register": "Companies House",
        "companyNumber": "17580244",
        "companyName": "LEOZ KEBAB & PIZZA LTD",
        "legalForm": "Private limited company",
        "legalFormCode": "ltd",
        "status": "active",
        "registrationDate": "2026-11-13",
        "publishedDate": null,
        "activityCodes": ["56103"],
        "activityDescriptions": ["Take-away food shops and mobile food stands"],
        "activityText": null,
        "address": "500 White Hart Lane London, England, N17 7NA",
        "postalCode": "N17 7NA",
        "city": null,
        "region": null,
        "addressCountry": "England",
        "shareCapital": null,
        "shareCapitalCurrency": null,
        "website": null,
        "registerUrl": "https://find-and-update.company-information.service.gov.uk/company/17580244",
        "scrapedAt": "2026-11-13T17:06:33.349Z"
    },
    {
        "country": "NO",
        "register": "Brønnøysundregistrene",
        "companyNumber": "838858562",
        "companyName": "ABSOLUTE MERIT AS",
        "legalForm": "Aksjeselskap",
        "legalFormCode": "AS",
        "status": "registered",
        "registrationDate": "2026-11-12",
        "publishedDate": null,
        "activityCodes": ["63910"],
        "activityDescriptions": ["Drift av søkemotorer"],
        "activityText": "Drift av web-portaler.",
        "address": "Solveien 27E, 1177 OSLO",
        "postalCode": "1177",
        "city": "OSLO",
        "region": "OSLO",
        "addressCountry": "Norge",
        "shareCapital": 30000,
        "shareCapitalCurrency": "NOK",
        "website": null,
        "registerUrl": "https://virksomhet.brreg.no/nb/oppslag/enheter/838858562",
        "scrapedAt": "2026-11-13T17:06:33.349Z"
    }
]
```

### Use cases

- **Sell to new businesses first:** accountants, banks, insurers, payment and POS providers, web agencies, office suppliers and recruiters reach companies in their first weeks, before anyone else calls.
- **Sector lead feeds:** every new restaurant, construction firm, clinic or software company in your region, every week.
- **Market monitoring:** count new companies per sector and region to spot growth markets.
- **Enrichment pipelines:** feed new company names and numbers into your enrichment tools (website, e-mail, LinkedIn) in n8n, Make or Clay.

### Integrations

- **API:** start runs and download results with the [Apify API](https://docs.apify.com/api/v2) or the Apify JavaScript/Python clients.
- **Scheduling:** run weekly or daily with Apify Schedules.
- **n8n, Make, Zapier, Google Sheets:** send new companies straight into your workflow via Apify integrations.
- **Webhooks:** get notified when a run finishes.
- **AI agents (MCP):** let Claude, ChatGPT or any MCP client pull new companies through the [Apify MCP server](https://mcp.apify.com).

### Limits and FAQ

**Where does the data come from? Is it legal?** From the registers' own open services, without any key or login: the Companies House advanced company search and its CSV download, the BODACC open data API (Licence Ouverte), the Brønnøysund Enhetsregisteret API (NLOD) and the PRH open data API (CC BY 4.0). These registers are public by law. The Actor sends few, paced requests (one request per day of the window for the UK).

**What is left out, and why?** Companies only, never people. **Sole traders** are always skipped (France: natural persons in BODACC; Norway: enkeltpersonforetak), because their name is a person's name. **Directors, officers and shareholders are never collected.** "c/o" address lines that name a person are removed (c/o an accountant or formation agent is kept). Dormant UK companies (SIC 99999) and non-trading companies (74990) are left out by default (`excludeDormant`).

**Why are activity codes different between countries?** The UK uses SIC 2007 (based on NACE Rev. 2). Norway and Finland moved to codes based on NACE Rev. 2.1 in 2025, so some classes differ (restaurants are 5610x in the UK and 5611x in Norway and Finland). A 2-digit prefix such as `56` works everywhere.

**Where do French activity codes come from?** BODACC notices have no activity code, so each French company that passes your other filters is looked up in the official SIRENE register (recherche-entreprises.api.gouv.fr) for its NAF code (`enrichFrance`, on by default, no extra charge). About 85 % of new companies already have a code; companies registered in the last few days may not yet, and are then left out when you filter by activity code (the run reports how many). Lookups run at about 3 per second, so a full week of all of France takes ~25 minutes: turn `enrichFrance` off for fast bulk exports and filter with keywords instead.

**Why does France lag a few days?** France publishes creations in the BODACC a few days after registration. For France the date window applies to the publication date; `registrationDate` is filled when the notice gives it (about 4 in 5).

**Why no e-mail addresses or phone numbers?** The registers do not publish them. Use the company name, number and address with your enrichment tool.

**How fast is it?** About 30 seconds for a full week of all four countries (~20,000 companies) without French activity codes. The UK takes one request per day in the window; French activity codes add about one second per three French companies.

**Something broke?** Open an issue on the Issues tab with your input and it will be looked at promptly.

### Changelog / maintained

Last verified working: 2026-11-13 (all four registers, full week, only-new mode; completeness checked against each register's own count: 547/547 Norway, 129/129 France-Paris, 257/257 UK, 108/108 Finland). See the changelog tab for changes.

# Changelog

This Actor's version history is a separate document: https://apify.com/polderdata/new-company-registrations-scraper/changelog.md

# Actor input Schema

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

Registers to read. UK = Companies House (~14,000 new companies a week), France = BODACC creation notices of companies (~5,000 a week), Norway = Brønnøysund (~2,000), Finland = PRH (~500). Sole traders are never included.

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

Registration window ending today. 7 = the last 7 days including today. Ignored when you set a start date below.

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

First registration day to include (YYYY-MM-DD). Overrides "last N days". France: the publication date of the BODACC notice, usually 3–10 days after registration.

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

Last day to include (YYYY-MM-DD). Default: today.

## `activityCodes` (type: `array`):

Keep companies whose activity code starts with one of these. UK companies use SIC 2007 (5 digits, based on NACE Rev. 2); Norway and Finland switched to codes based on NACE Rev. 2.1 in 2025, so some classes differ: restaurants are 5610x in the UK but 5611x in Norway and Finland. French companies get their NAF code from the official SIRENE register (see below), e.g. 5610A or 56.10A. A 2-digit prefix works everywhere: "56" = food and drink, "62" = software and IT, "41"–"43" = construction, "68" = real estate, "86" = health.

## `keywords` (type: `array`):

Keep companies whose name or activity description contains one of these words (case and accents ignored), e.g. "restaurant", "software", "logiciel", "bygg". Needed for France when you filter by activity.

## `locations` (type: `array`):

Keep companies in one of these places. A value with digits is a postal-code prefix ("SW1", "M1", "75", "0150", "00100"); a word is matched against the address, city and region ("London", "Manchester", "Lyon", "Oslo", "Helsinki").

## `legalForms` (type: `array`):

Keep only these legal forms, by abbreviation or name: UK ltd, plc, llp; France SAS, SASU, SARL, EURL, SCI, SA; Norway AS, ASA, ANS, DA, NUF; Finland OY, OYJ, KY, AY. Names like "limited liability partnership" also work.

## `enrichFrance` (type: `boolean`):

BODACC notices have no activity code. When on, each French company that passes your other filters is looked up in the official SIRENE register (recherche-entreprises.api.gouv.fr) to add its NAF code and label, so French companies can be filtered by activity code too. About 3 lookups per second; companies created in the last few days may not have a code yet. No extra charge.

## `excludeDormant` (type: `boolean`):

Drop UK companies whose only SIC code is 99999 (Dormant Company) or 74990 (Non-trading company). They are shells, not leads.

## `onlyNewSinceLastRun` (type: `boolean`):

Remember which companies this feed has already delivered and return only new ones, so a weekly schedule (Apify schedule, n8n, Make, Zapier) with an overlapping window never returns or charges the same company twice. Memory is kept per filter combination (or per feed name below) in a key-value store in your account.

## `stateKey` (type: `string`):

Name for the feed memory, e.g. "uk-restaurants". Use it to keep several schedules apart or to start a feed fresh. Letters, digits, - and \_ only.

## `maxItems` (type: `integer`):

Stop after this many companies. Newest registrations come first.

## `proxyConfiguration` (type: `object`):

Not needed: these are open government registers. Only set a proxy if your runs get rate-limited for a long time.

## Actor input object example

```json
{
  "countries": [
    "GB"
  ],
  "daysBack": 7,
  "activityCodes": [
    "56"
  ],
  "enrichFrance": true,
  "excludeDormant": true,
  "onlyNewSinceLastRun": false,
  "maxItems": 100,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `results` (type: `string`):

No description

## `runSummary` (type: `string`):

No description

# 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 = {
    "countries": [
        "GB"
    ],
    "daysBack": 7,
    "activityCodes": [
        "56"
    ],
    "maxItems": 100,
    "proxyConfiguration": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("polderdata/new-company-registrations-scraper").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 = {
    "countries": ["GB"],
    "daysBack": 7,
    "activityCodes": ["56"],
    "maxItems": 100,
    "proxyConfiguration": { "useApifyProxy": False },
}

# Run the Actor and wait for it to finish
run = client.actor("polderdata/new-company-registrations-scraper").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 '{
  "countries": [
    "GB"
  ],
  "daysBack": 7,
  "activityCodes": [
    "56"
  ],
  "maxItems": 100,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}' |
apify call polderdata/new-company-registrations-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,polderdata/new-company-registrations-scraper"
        }
    }
}
```

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/Pw547pAXfHBP7goMN/builds/YsjLD5WFtGiW8ieZn/openapi.json
