# Singapore Company Search — ACRA Registry Data & UEN Lookup (`kaz_kakyo/singapore-company-search`) Actor

Search Singapore's ACRA company register by name or keyword, or look up records by UEN — official open data, no API key. Returns status, entity type, incorporation date, registered address, SSIC codes, and officer count

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

## Pricing

from $1.00 / 1,000 company records

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 web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — 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

## Singapore Company Search — ACRA Registry Data & UEN Lookup

**Official ACRA open data — no API key, no scraping, no proxies. $1 per 1,000 companies.** Search Singapore's company register by name or keyword, or look up exact records by UEN. The legal, ban-proof alternative to scraped B2B databases.

Runs out of the box: **no key, no setup.** Singapore's ACRA "Information on Corporate Entities" dataset is published as open data on data.gov.sg — this actor queries it directly.

### What it does

| Mode | Input | Output |
|---|---|---|
| `search` | name or keyword | Singapore companies matching the query |
| `lookup` | list of UENs | Exact entity records for each UEN |

Each record includes: entity name, UEN, status (Live / Struck Off / …), entity type, incorporation date, registered address, SSIC activity codes, primary activity, officer *count*, and any former names.

**Fast name search.** ACRA open data is sharded by the first letter of the entity name. `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 (~1–2 minutes, exhaustive).

### Example input

```json
{
    "mode": "search",
    "query": "software",
    "activeOnly": true,
    "maxItems": 100
}
```

UEN lookup:

```json
{
    "mode": "lookup",
    "uens": ["201812345K", "T09LL0001B"]
}
```

### Example output item

```json
{
    "type": "company",
    "uen": "201812345K",
    "name": "EXAMPLE SOFTWARE PTE. LTD.",
    "status": "Live Company",
    "entityType": "Local Company",
    "incorporationDate": "2018-05-14",
    "address": "12 Example Street, #04-01, Example Building, Singapore 049908",
    "sicCodes": ["62012"],
    "primaryActivity": "DEVELOPMENT OF SOFTWARE AND APPLICATIONS",
    "officersCount": 3,
    "formerNames": []
}
```

### Pricing

| Event | Price | When charged |
|---|---|---|
| `company-result-delivered` | **$0.001** | Each company record delivered — a search hit or a UEN lookup result |
| Actor start | **$0.00005** | Per run |

That is **$1 per 1,000 companies**. Failed or not-found lookups are never charged, and a record is only billed after it is saved to the dataset. Set `maxItems` to cap spend.

### Data source & fair use

- [ACRA Information on Corporate Entities](https://data.gov.sg) via data.gov.sg open data (published by ACRA; registered-address granularity as published).

The Singapore company register is public by law. Records are public-register data — use them lawfully (Singapore's PDPA applies to how *you* process them downstream). This actor is not affiliated with ACRA or data.gov.sg.

**Field coverage:** the ACRA open dataset publishes entity details, status, SSIC codes, address, and officer *count* — it does not publish officer names.

***

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

# Actor input Schema

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

`search` finds Singapore companies by name or keyword. `lookup` fetches exact records for a list of UENs. Both use Singapore's official ACRA open data — no API key needed.

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

Company name or keyword. Used by `search` mode.

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

Unique Entity Numbers for `lookup` mode (e.g. `201812345K`). Up to 450 UENs per run (the keyless registry API's reliable ceiling) — pass more and the actor processes the first 450 and logs the rest to re-run.

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

`search` only: filter out terminated / struck-off / dissolved entities. `lookup` always returns the exact record for each UEN regardless of status.

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

`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 search / lookup batch. Keeps cost predictable. Note: `search` reads the top ~100 ranked matches per name-shard, so an exhaustive `sgFullSweep` returns at most ~2,700; `lookup` is capped at 450 UENs per run.

## Actor input object example

```json
{
  "mode": "search",
  "query": "software",
  "activeOnly": true,
  "sgFullSweep": false,
  "maxItems": 100
}
```

# 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/singapore-company-search").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/singapore-company-search").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 '{
  "query": "software"
}' |
apify call kaz_kakyo/singapore-company-search --silent --output-dataset

```

## MCP server setup

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

```

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/sGNhQiP6Q4qI7eIU7/builds/alc7g009saTvrr7Vh/openapi.json
