# Singapore Company Search (ACRA) — UEN, KYC & Status (`haketa/singapore-companies`) Actor

Search Singapore's official ACRA register of 2M+ companies by name or UEN. Get entity status, type, incorporation date, SSIC industry, registered address, officers, auditor and former names — clean B2B & KYC data for AI agents, due diligence and lead generation.

- **URL**: https://apify.com/haketa/singapore-companies.md
- **Developed by:** [Haketa](https://apify.com/haketa) (community)
- **Categories:** Lead generation, Agents
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.10 / 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/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) — UEN, Status, KYC & Business Data

Search **Singapore's official ACRA company register** — over **2 million entities** — by **name or UEN**. Get each company's **status, entity type, incorporation date, industry (SSIC), registered address, number of officers, auditor and former names** in one call.

Built for **KYC/KYB, due diligence, lead generation and AI agents**. No API key, no setup — official government data, free for commercial use.

***

### Why this Actor?

ACRA (the Accounting and Corporate Regulatory Authority) is Singapore's company registry — the authoritative source of truth for whether a company exists, its UEN, and its status. But the raw open data ships as 27 separate alphabetized files with millions of rows. This Actor turns it into a simple search: give it a name or UEN and get back a clean, structured record.

- **KYC / KYB onboarding** — verify a Singapore counterparty: does it exist, is it live, what's its UEN and industry?
- **Due diligence & compliance** — check status (live vs struck-off), incorporation date, officers and auditor.
- **Lead generation** — find companies by name/industry with their registered address.
- **AI agents** — a tool an agent calls to resolve or verify a Singapore company in real time.

It's the Singapore piece of a company-data / KYC stack, alongside global business-identity sources.

***

### What you get

For every match:

| Field | Description |
| --- | --- |
| `uen` | Unique Entity Number (Singapore's company ID) |
| `entityName` | Registered name |
| `status` | Live, Struck Off, Cancelled, Deregistered, etc. |
| `entityType` | Local Company, Sole Proprietorship, LLP, etc. |
| `incorporationDate` | Registration / incorporation date |
| `uenIssueDate` | When the UEN was issued |
| `ssicCode` / `ssicDescription` | Primary industry (SSIC) |
| `address` | Registered address |
| `postalCode` | Postal code |
| `noOfOfficers` | Number of officers |
| `auditFirm` | Auditor (where applicable) |
| `formerNames` | Previous entity names |
| `source` | ACRA / data.gov.sg |
| `scrapedAt` | Timestamp |

Basic fields come from the register; the industry, officers, auditor and full address are enriched from ACRA's detailed datasets when `includeDetails` is on.

***

### Example output

```json
{
  "query": "Shopee",
  "uen": "201929065K",
  "entityName": "SHOPEE INTERNATIONAL VI PRIVATE LIMITED",
  "status": "Live Company",
  "entityType": "Local Company",
  "incorporationDate": "2019-09-05",
  "ssicCode": "47910",
  "ssicDescription": "RETAIL SALE VIA INTERNET",
  "address": "5 Science Park Drive, Singapore 118265",
  "noOfOfficers": "6",
  "auditFirm": "",
  "source": "ACRA / data.gov.sg",
  "scrapedAt": "2026-07-07T15:00:00.000Z"
}
```

***

### Input

| Field | Type | Default | Description |
| --- | --- | --- | --- |
| `queries` | array | — | **Required.** Company names or UENs to search. |
| `includeDetails` | boolean | `true` | Enrich with SSIC, incorporation date, officers, auditor, full address. |
| `activeOnly` | boolean | `false` | Keep only live/registered entities. |
| `maxMatchesPerQuery` | integer | `20` | Max companies per search term. |

#### Search by name

```json
{ "queries": ["DBS Bank", "Grab", "Sea Limited"], "includeDetails": true }
```

#### Verify specific UENs (KYC)

```json
{ "queries": ["201929065K", "198600294G"], "includeDetails": true }
```

#### Live companies only

```json
{ "queries": ["logistics"], "activeOnly": true, "maxMatchesPerQuery": 50 }
```

***

### Use cases in detail

#### 1. KYC / KYB onboarding

Verify a Singapore company at onboarding: pass its name or UEN and confirm it exists, is **live** (not struck-off), and matches the UEN it gave you. The incorporation date and officers help complete the picture.

#### 2. Due diligence & investigations

Check a counterparty's status history, former names (renames can hide history), industry and auditor before a deal.

#### 3. Lead generation & enrichment

Search by name and enrich a list of Singapore companies with UEN, industry (SSIC) and registered address.

#### 4. AI agents

Expose this as a tool so an agent can resolve "is COMPANY X a real, active Singapore company?" with authoritative data, mid-conversation.

***

### How to use it

1. Click **Try for free**.
2. Enter company names or UENs in `queries`.
3. Click **Start**.
4. Read the results as **JSON, CSV, Excel**, or via the Apify API.

***

### Calling from the API

```bash
curl -X POST "https://api.apify.com/v2/acts/YOUR_ACTOR_ID/runs?token=YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "queries": ["DBS Bank", "201929065K"], "includeDetails": true }'
```

Then fetch the dataset:

```bash
curl "https://api.apify.com/v2/acts/YOUR_ACTOR_ID/runs/last/dataset/items?token=YOUR_APIFY_TOKEN"
```

Works with webhooks, Zapier, Make and n8n — wire it into your onboarding or CRM.

***

### Frequently asked questions

**What's a UEN?**
The Unique Entity Number — Singapore's standard ID for every registered entity (companies, partnerships, societies, etc.).

**How many companies are covered?**
Over 2 million entities — the full ACRA register, updated regularly.

**Can I search by name and by UEN?**
Yes, mixed in one run. UENs resolve exactly; names return all matches.

**What does `status` tell me?**
Whether the entity is Live, Struck Off, Cancelled, Deregistered, Ceased, etc. — essential for KYC.

**Why is the industry (SSIC) sometimes empty?**
Some entity types (e.g. certain sole proprietorships) don't have an SSIC on record. Core fields (UEN, name, status, type, address) are always present.

**Is this official data?**
Yes — it comes from ACRA's open data on data.gov.sg, free for commercial use under the Open Data Licence.

**Can an AI agent call this automatically?**
Yes — it's keyless and returns structured JSON.

***

### Notes & responsible use

This Actor surfaces publicly available company-registry data published by ACRA via data.gov.sg, for verification, research and business purposes. Data is updated on ACRA's schedule and may lag very recent changes; for legally binding checks, consult ACRA's official BizFile service. Use the data in line with the Open Data Licence and applicable laws.

*Contains information from ACRA / data.gov.sg, accessed under the Singapore Open Data Licence.*

***

### Support

Want another field, filtering by industry, or officer details? Open an issue from the Actor's page.

# Actor input Schema

## `queries` (type: `array`):

Type any Singapore company names or UEN numbers to look up, e.g. "DBS Bank", "Grab", "201201936C". Leave this empty to get a ready-made sample of well-known Singapore companies so you can see the data instantly.

## `includeDetails` (type: `boolean`):

Enrich each match with SSIC industry, incorporation date, number of officers, auditor and full registered address. Richer data, slightly slower (one extra lookup per company).

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

Keep only entities that are currently live/registered and drop struck-off, deregistered or cancelled ones.

## `maxMatchesPerQuery` (type: `integer`):

How many companies to return for each search term. Use this to keep runs fast and focused.

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

Apify Proxy settings. The data source is public, so a proxy is off by default and is not required.

## Actor input object example

```json
{
  "queries": [
    "DBS Bank",
    "Grab Holdings",
    "Sea Limited"
  ],
  "includeDetails": false,
  "activeOnly": false,
  "maxMatchesPerQuery": 20,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

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

Open to view, filter and export all scraped results from this run (JSON, CSV, Excel).

# 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 = {
    "queries": [
        "DBS Bank",
        "Grab Holdings",
        "Sea Limited"
    ],
    "maxMatchesPerQuery": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("haketa/singapore-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 = {
    "queries": [
        "DBS Bank",
        "Grab Holdings",
        "Sea Limited",
    ],
    "maxMatchesPerQuery": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("haketa/singapore-companies").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 '{
  "queries": [
    "DBS Bank",
    "Grab Holdings",
    "Sea Limited"
  ],
  "maxMatchesPerQuery": 20
}' |
apify call haketa/singapore-companies --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/tgvtd2YQF4DhjigfT/builds/qz0cT6f0G3PrHk3a5/openapi.json
