# Company Registry Scraper — UK Companies House & Singapore ACRA (`kaz_kakyo/company-registry-scraper`) Actor

Search official company registries and enrich records with officers, PSC data, SIC codes, and addresses. Monitor newly incorporated UK companies on a schedule. Official government sources only — the legal alternative to scraped B2B databases.

- **URL**: https://apify.com/kaz\_kakyo/company-registry-scraper.md
- **Developed by:** [Heim AI](https://apify.com/kaz_kakyo) (community)
- **Categories:** Lead generation, Automation, AI
- **Stats:** 2 total users, 0 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.00 / 1,000 company founds

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/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## Company Registry Scraper — UK Companies House & Singapore ACRA

**Official government APIs only — no scraping, no proxies, no proxy surcharges. From $2 per 1,000 companies.** Search the registers, enrich UK records with officers, beneficial owners (PSC), and filing history, and get newly incorporated companies on a schedule. The legal, ban-proof alternative to scraped B2B databases.

Runs out of the box: **no API key, no setup, for every mode.** Singapore modes use open data; UK modes run on the actor's built-in Companies House key at the standard rate. Power users: add your own free Companies House key (2 minutes) and UK events are billed at the discounted BYOK rate.

### What it does

| Mode | Input | Output | Key needed |
|---|---|---|---|
| `sg-search` | keyword | Singapore companies (ACRA open data) | No |
| `sg-lookup` | UENs | Exact Singapore entity records | No |
| `uk-search` | keyword | UK companies matching the query | Free CH key |
| `uk-enrich` | company numbers | Full profile + officers + PSC + filing history | Free CH key |
| `uk-new-incorporations` | date range + SIC codes | Companies registered in that window | Free CH key |

Getting the free Companies House key: register at [developer.company-information.service.gov.uk](https://developer.company-information.service.gov.uk), create an application, and copy the REST API key.

**Fast Singapore name search.** ACRA open data is sharded by the first letter of the entity name. `sg-search` checks the shard matching your query's first letter and returns in **seconds** when it fills your `maxItems`. For broad keyword queries (e.g. `tech`, `logistics`) where matches can start with any letter, enable `sgFullSweep` to merge results from all 27 shards (takes ~1–2 minutes, exhaustive).

### The lead-gen workflow this was built for

Run `uk-new-incorporations` on a **weekly schedule** with your target SIC codes (e.g. `62012` software development, `56101` restaurants, `43390` fit-out contractors). Every run delivers the week's newly registered companies in your niche — names, addresses, incorporation dates — before they appear in any commercial database. Pipe into your CRM via the API, or enrich the interesting ones with `uk-enrich` to get current directors.

### Example input

```json
{
    "mode": "uk-new-incorporations",
    "incorporatedFrom": "2026-06-29",
    "incorporatedTo": "2026-07-06",
    "sicCodes": ["62012", "62020"],
    "activeOnly": true,
    "maxItems": 500
}
````

### Example output item

```json
{
    "type": "company",
    "registry": "uk",
    "regNumber": "16204567",
    "name": "EXAMPLE SOFTWARE LTD",
    "status": "active",
    "incorporationDate": "2026-07-01",
    "address": "12 Example Street, London, EC1A 1AA, United Kingdom",
    "sicCodes": ["62012"],
    "officers": [{ "name": "DOE, Jane", "role": "director", "appointedOn": "2026-07-01" }],
    "url": "https://find-and-update.company-information.service.gov.uk/company/16204567"
}
```

### Pricing

Pay per event: `company-found` per search/monitoring result, `company-enriched` per full UK profile (officers and PSC included in the price). UK runs on the built-in key bill the `-zero-setup` variants (standard rate); bring your own free Companies House key for the discounted rate. Failed lookups are never charged. Set `maxItems` to cap spend.

### Data sources & fair use

- UK: [Companies House public API](https://developer.company-information.service.gov.uk) (Crown copyright, public register)
- Singapore: [ACRA Information on Corporate Entities](https://data.gov.sg) via data.gov.sg open data (updated by ACRA; registered-address granularity as published)

Both registries are public by law. Officer and PSC data are public-register records — use them lawfully (GDPR/PDPA apply to how *you* process them downstream). This actor is not affiliated with Companies House or ACRA.

**Field coverage differs by registry:** UK records include named officers, PSC, and filings (live API). Singapore records include entity details, status, SSIC codes, address, and officer *count* — the ACRA open dataset does not publish officer names.

***

*Found this useful? A review on the [actor page](https://apify.com/kaz_kakyo/company-registry-scraper) helps other people find it — and tells me what to build next. Hit a problem? [Open an issue](https://apify.com/kaz_kakyo/company-registry-scraper/issues) and I'll fix it fast.*

### Telemetry

Each run records one anonymous telemetry event to the developer's own storage: a salted hash of the caller account ID (never the raw ID), the run origin (e.g. web console vs API), and a timestamp. No inputs, results, or personal data are collected - this only measures adoption (distinct and returning users).

# Actor input Schema

## `mode` (type: `string`):

`sg-search` and `sg-lookup` use Singapore's open ACRA data (no key needed). UK modes use the official Companies House API and work with zero setup on the built-in key (or bring your own free key for the discounted rate). `uk-new-incorporations` finds companies registered in a date range, ideal for scheduled lead generation.

## `query` (type: `string`):

Company name or keyword. Used by `sg-search` and `uk-search`.

## `uens` (type: `array`):

Unique Entity Numbers for `sg-lookup` mode (e.g. `201812345K`).

## `companyNumbers` (type: `array`):

Companies House numbers for `uk-enrich` mode (e.g. `09876543`).

## `incorporatedFrom` (type: `string`):

Start date `YYYY-MM-DD` for `uk-new-incorporations` mode. Defaults to 7 days ago.

## `incorporatedTo` (type: `string`):

End date `YYYY-MM-DD` for `uk-new-incorporations` mode. Defaults to today.

## `sicCodes` (type: `array`):

Optional UK SIC codes to filter `uk-new-incorporations` (e.g. `62012` = business software development).

## `activeOnly` (type: `boolean`):

Filter out terminated / struck-off / dissolved entities.

## `sgFullSweep` (type: `boolean`):

sg-search only. ACRA data is sharded by the first letter of the entity name. By default the search checks the shard matching your query's first letter and returns early when it already fills Max results (seconds instead of ~1.5 min). Enable this to always merge matches from all 27 shards — use for keyword queries where matches can start with any letter.

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

Maximum companies returned per query/lookup batch. Keeps cost predictable.

## `includeOfficers` (type: `boolean`):

`uk-enrich`: attach current officers (directors, secretaries) to each company.

## `includePsc` (type: `boolean`):

`uk-enrich`: attach persons with significant control (beneficial owners).

## `includeFilings` (type: `boolean`):

`uk-enrich`: attach the latest 25 filings (accounts, confirmation statements, officer changes) — a quick company-health timeline.

## `companiesHouseApiKey` (type: `string`):

Leave empty for zero setup — UK modes run on the built-in key at the standard rate. Or bring your own free key for the discounted rate: developer.company-information.service.gov.uk → create an application → copy the REST API key. Stored encrypted, sent only to the official Companies House API. Singapore modes never need a key.

## Actor input object example

```json
{
  "mode": "sg-search",
  "query": "software",
  "activeOnly": true,
  "sgFullSweep": false,
  "maxItems": 100,
  "includeOfficers": true,
  "includePsc": false,
  "includeFilings": false
}
```

# Actor output Schema

## `overview` (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 = {
    "query": "software"
};

// Run the Actor and wait for it to finish
const run = await client.actor("kaz_kakyo/company-registry-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 = { "query": "software" }

# Run the Actor and wait for it to finish
run = client.actor("kaz_kakyo/company-registry-scraper").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{
  "query": "software"
}' |
apify call kaz_kakyo/company-registry-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=kaz_kakyo/company-registry-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Company Registry Scraper — UK Companies House & Singapore ACRA",
        "description": "Search official company registries and enrich records with officers, PSC data, SIC codes, and addresses. Monitor newly incorporated UK companies on a schedule. Official government sources only — the legal alternative to scraped B2B databases.",
        "version": "0.0",
        "x-build-id": "2vedYcqLt2eNsoeQZ"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/kaz_kakyo~company-registry-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-kaz_kakyo-company-registry-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/kaz_kakyo~company-registry-scraper/runs": {
            "post": {
                "operationId": "runs-sync-kaz_kakyo-company-registry-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/kaz_kakyo~company-registry-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-kaz_kakyo-company-registry-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "mode"
                ],
                "properties": {
                    "mode": {
                        "title": "Mode",
                        "enum": [
                            "sg-search",
                            "sg-lookup",
                            "uk-search",
                            "uk-enrich",
                            "uk-new-incorporations"
                        ],
                        "type": "string",
                        "description": "`sg-search` and `sg-lookup` use Singapore's open ACRA data (no key needed). UK modes use the official Companies House API and work with zero setup on the built-in key (or bring your own free key for the discounted rate). `uk-new-incorporations` finds companies registered in a date range, ideal for scheduled lead generation.",
                        "default": "sg-search"
                    },
                    "query": {
                        "title": "Search query",
                        "type": "string",
                        "description": "Company name or keyword. Used by `sg-search` and `uk-search`."
                    },
                    "uens": {
                        "title": "Singapore UENs",
                        "type": "array",
                        "description": "Unique Entity Numbers for `sg-lookup` mode (e.g. `201812345K`).",
                        "items": {
                            "type": "string"
                        }
                    },
                    "companyNumbers": {
                        "title": "UK company numbers",
                        "type": "array",
                        "description": "Companies House numbers for `uk-enrich` mode (e.g. `09876543`).",
                        "items": {
                            "type": "string"
                        }
                    },
                    "incorporatedFrom": {
                        "title": "Incorporated from (UK)",
                        "type": "string",
                        "description": "Start date `YYYY-MM-DD` for `uk-new-incorporations` mode. Defaults to 7 days ago."
                    },
                    "incorporatedTo": {
                        "title": "Incorporated to (UK)",
                        "type": "string",
                        "description": "End date `YYYY-MM-DD` for `uk-new-incorporations` mode. Defaults to today."
                    },
                    "sicCodes": {
                        "title": "SIC codes filter (UK)",
                        "type": "array",
                        "description": "Optional UK SIC codes to filter `uk-new-incorporations` (e.g. `62012` = business software development).",
                        "items": {
                            "type": "string"
                        }
                    },
                    "activeOnly": {
                        "title": "Active companies only",
                        "type": "boolean",
                        "description": "Filter out terminated / struck-off / dissolved entities.",
                        "default": true
                    },
                    "sgFullSweep": {
                        "title": "SG: always sweep all shards",
                        "type": "boolean",
                        "description": "sg-search only. ACRA data is sharded by the first letter of the entity name. By default the search checks the shard matching your query's first letter and returns early when it already fills Max results (seconds instead of ~1.5 min). Enable this to always merge matches from all 27 shards — use for keyword queries where matches can start with any letter.",
                        "default": false
                    },
                    "maxItems": {
                        "title": "Max results",
                        "minimum": 1,
                        "maximum": 10000,
                        "type": "integer",
                        "description": "Maximum companies returned per query/lookup batch. Keeps cost predictable.",
                        "default": 100
                    },
                    "includeOfficers": {
                        "title": "Include officers (UK enrich)",
                        "type": "boolean",
                        "description": "`uk-enrich`: attach current officers (directors, secretaries) to each company.",
                        "default": true
                    },
                    "includePsc": {
                        "title": "Include PSC (UK enrich)",
                        "type": "boolean",
                        "description": "`uk-enrich`: attach persons with significant control (beneficial owners).",
                        "default": false
                    },
                    "includeFilings": {
                        "title": "Include filing history (UK enrich)",
                        "type": "boolean",
                        "description": "`uk-enrich`: attach the latest 25 filings (accounts, confirmation statements, officer changes) — a quick company-health timeline.",
                        "default": false
                    },
                    "companiesHouseApiKey": {
                        "title": "Companies House API key (optional — cheaper UK runs)",
                        "type": "string",
                        "description": "Leave empty for zero setup — UK modes run on the built-in key at the standard rate. Or bring your own free key for the discounted rate: developer.company-information.service.gov.uk → create an application → copy the REST API key. Stored encrypted, sent only to the official Companies House API. Singapore modes never need a key."
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
