# Singapore Company Scraper — UEN, Registry & Business Leads (`scrapesage/singapore-company-scraper`) Actor

Scrape Singapore company data from sgpbusiness.com: UEN, status, incorporation date, entity type, SSIC activity, registered address, phone & website. Browse by category, look up companies, or monitor new registrations. Optional email enrichment for B2B leads. No start fee.

- **URL**: https://apify.com/scrapesage/singapore-company-scraper.md
- **Developed by:** [Scrape Sage](https://apify.com/scrapesage) (community)
- **Categories:** Lead generation, Automation, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $10.00 / 1,000 company profile scrapeds

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

## Singapore Company Scraper — UEN, Registry Data & Business Leads

Extract **complete Singapore company data from [sgpbusiness.com](https://www.sgpbusiness.com)** — the open Singapore business directory built on ACRA registry data. Get every field that matters for B2B: **UEN, operating status, incorporation date, entity type, primary & secondary SSIC activity, full registered address, postal code, contact phone, website, auditor, annual-return & account filing due dates, Peppol e-invoicing ID and social handles** — and, for lead generation, optionally crawl each company's own website for **contact emails, phone, contact form and socials**.

No login, no cookies, no browser — fast structured-data extraction, with a **Monitor mode** that returns only newly registered companies and **no start fee**.

### Why this Singapore company scraper?

Most "ACRA / Singapore company" scrapers just wrap the free `data.gov.sg` dataset and return four fields (UEN, name, status, address). This actor reads the **full sgpbusiness.com profile** and ships the **richest company dataset in the category** — including SSIC activity descriptions, contact details, filing deadlines and e-invoicing status — then turns each record into a contactable lead.

| Data | Typical ACRA scrapers | This actor |
|---|---|---|
| UEN, company name, status, address | ✅ | ✅ |
| Incorporation date, entity/registration type | partial | ✅ |
| **Primary + secondary SSIC code _and description_** | ❌ code only | ✅ |
| **Contact phone + website** | ❌ | ✅ |
| Registered address split into street + postal code | partial | ✅ |
| Auditor, account & annual-return due dates | ❌ | ✅ |
| Peppol e-invoicing ID + enabled flag | ❌ | ✅ |
| "Other entities at this address" count | ❌ | ✅ |
| Social handles | ❌ | ✅ |
| **Website email enrichment (real emails + socials)** | ❌ | ✅ opt-in |
| **Monitor mode** — only new (or status-changed) companies | ❌ | ✅ |
| Browse by business category / look up by name or URL | partial | ✅ |
| No start fee | ❌ | ✅ |

### Use cases

- **B2B lead generation** — build targeted lists of Singapore companies by business category (accounting firms, renovation contractors, employment agencies, restaurants, law firms…) with UEN, address, phone and website, then enrich with real emails for cold outreach.
- **Newly-incorporated-company leads** — corporate secretaries, accountants, bankers, insurers, web/marketing agencies and SaaS vendors all chase brand-new companies. Run **Monitor mode** on a daily [Schedule](https://docs.apify.com/platform/schedules) to get a fresh feed of just-registered businesses.
- **KYC, due diligence & compliance** — bulk-enrich a list of company names or UENs into structured registry records (status, entity type, incorporation date, SSIC, registered address) for onboarding and screening.
- **Market & competitor intelligence** — map an industry by SSIC code, count companies per category, and track incorporations and strike-offs over time.
- **CRM & data enrichment** — append clean, structured company and contact data to your existing records.

### How to use

1. [Sign up for Apify](https://console.apify.com/sign-up) — the free plan is enough to try this actor.
2. Open the **Singapore Company Scraper** and either leave the input as-is to scrape the **newest registered companies**, add **business categories**, or paste **company / category URLs**. Click **Start**.
3. Watch results stream into the dataset table.
4. **Export** as JSON, CSV, Excel, XML, or RSS — or pull results programmatically via the [Apify API](https://docs.apify.com/api/v2).

### Input

```json
{
    "categories": ["Accounting-Firms", "Renovation-Contractors"],
    "scrapeNewest": true,
    "maxItems": 200,
    "enrichEmails": true,
    "monitorMode": false,
    "proxyConfiguration": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"] }
}
````

- **scrapeNewest** — scrape the most recently registered Singapore companies. Auto-enabled when every other target is blank.
- **categories** — sgpbusiness.com business categories. Accepts a name (`Accounting Firms`), a slug (`Accounting-Firms`), or a full `/category/...` URL. Browse them all at [sgpbusiness.com/category](https://www.sgpbusiness.com/category).
- **startUrls** — paste company profile URLs (`/company/...`) and/or category URLs (`/category/...`) directly.
- **companyNames** — look up specific companies by name (resolved to their profile; paste URLs for guaranteed matches).
- **maxItems** — cap the number of companies (0 = no limit).
- **enrichEmails** *(default false)* — crawl each company's website for contact emails, phone, contact-form URL and socials.
- **monitorMode** *(default false)* — only output companies that are new since the last run for the same input.
- **monitorTrackStatusChanges** *(default false)* — in monitor mode, also re-check known companies and re-emit on status change (e.g. `Live Company` → `Struck Off`).

### Output

One record per company (`type: "company"`):

```json
{
    "type": "company",
    "uen": "201821187W",
    "name": "ZENIT ACCOUNTANCY PTE. LTD.",
    "operatingStatus": "Live Company",
    "operatingStatusAsOf": "2018-06-22",
    "entityType": "EXEMPT PRIVATE COMPANY LIMITED BY SHARES",
    "incorporationDate": "2018-06-21",
    "companyAgeYears": 8,
    "primarySsicCode": "69202",
    "primaryActivity": "BOOK-KEEPING SERVICES (EXCLUDING ONLINE MARKETPLACES)",
    "secondarySsicCode": "70201",
    "secondaryActivity": "MANAGEMENT CONSULTANCY SERVICES",
    "sgpCategory": "Accounting Firms",
    "registeredAddress": "10 UBI CRESCENT #06-85C UBI TECHPARK SINGAPORE (408564)",
    "streetAddress": "10 UBI CRESCENT #06-85C UBI TECHPARK",
    "postalCode": "408564",
    "country": "SINGAPORE",
    "otherEntitiesAtAddress": 194,
    "phone": "+65-63863661",
    "email": null,
    "website": "https://zenit.sg",
    "socialHandles": ["@zenitaccountancy21"],
    "auditor": null,
    "annualReturnDueDate": null,
    "peppolId": "0195:SGUEN201821187W",
    "peppolEnabled": true,
    "enrichedEmails": ["hello@zenit.sg"],
    "linkedin": "https://www.linkedin.com/company/zenit-accountancy",
    "hasWebsite": true,
    "hasEmail": true,
    "url": "https://www.sgpbusiness.com/company/Zenit-Accountancy-Pte-Ltd",
    "scrapedAt": "2026-06-12T04:00:00.000Z"
}
```

Fields are `null` only when the company genuinely doesn't publish them, not because the scraper skipped them.

### Monitor new companies automatically

**Monitor mode** persists a small state file in a named key-value store (keyed by your input) and, on each run, emits **only companies it hasn't seen before** — ideal for a daily feed of newly registered businesses. It is fully independent of Apify's scheduler: [Schedules](https://docs.apify.com/platform/schedules) decide *when* the actor runs, monitor mode decides *which* companies are worth returning. Combine the two to track a category, a watchlist, or the whole newest-registrations feed without re-pulling — or re-paying for — unchanged companies.

### Automate & schedule

Run this actor on autopilot and pull results into your own stack:

- **[Apify API](https://docs.apify.com/api/v2)** — start runs, fetch datasets, and manage schedules over REST.
- **[apify-client for JavaScript](https://docs.apify.com/api/client/js/)** and **[apify-client for Python](https://docs.apify.com/api/client/python/)** — official SDKs.
- **[Schedules](https://docs.apify.com/platform/schedules)** — run it daily/weekly to monitor newly incorporated companies or watch a category; perfect for lead pipelines and CRMs.
- **[Webhooks](https://docs.apify.com/platform/integrations/webhooks)** — trigger downstream actions (CRM import, Slack alert, email sequence) the moment a run finishes.

```js
import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: 'MY_APIFY_TOKEN' });

const run = await client.actor('scrapesage/singapore-company-scraper').call({
    categories: ['Accounting-Firms'],
    enrichEmails: true,
    monitorMode: true,
    maxItems: 500,
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(`Got ${items.length} Singapore companies`);
```

### Integrate with any app

Connect the dataset to 5,000+ apps — no code required:

- **[Make](https://docs.apify.com/platform/integrations/make)** — multi-step automation scenarios.
- **[Zapier](https://docs.apify.com/platform/integrations/zapier)** — push new company leads straight into your CRM.
- **[Slack](https://docs.apify.com/platform/integrations/slack)** — get notified when a monitored category finds new companies.
- **[Google Drive / Sheets](https://docs.apify.com/platform/integrations/drive)** — auto-export every run to a spreadsheet.
- **[Airbyte](https://docs.apify.com/platform/integrations/airbyte)** — pipe results into your data warehouse.
- **[GitHub](https://docs.apify.com/platform/integrations/github)** — trigger runs from commits or releases.

### Use with AI assistants (MCP)

The output is clean, LLM-ready JSON. You can call this actor from Claude, ChatGPT, or any agent framework through the **[Apify MCP server](https://docs.apify.com/platform/integrations/mcp)** — ask your assistant to "find newly registered accounting firms in Singapore and list their contact details" and let it run this scraper for you.

### More scrapers from scrapesage

Build a complete Singapore + B2B lead-gen stack:

- **[SGCarMart Used Car Scraper](https://apify.com/scrapesage/sgcarmart-used-car-scraper)** — Singapore used-car listings, prices and dealer leads.
- **[Multi-ATS Job Scraper](https://apify.com/scrapesage/multi-ats-job-scraper)** — jobs from Greenhouse, Lever, Ashby, SmartRecruiters & Workday (hiring-intent signals).
- **[LinkedIn Jobs Scraper](https://apify.com/scrapesage/linkedin-jobs-scraper)** — job postings as hiring-intent signals.
- **[Facebook Ad Library Scraper](https://apify.com/scrapesage/facebook-ad-library-scraper)** — competitor ad intelligence.
- **[Google Ads Transparency Scraper](https://apify.com/scrapesage/google-ads-transparency-scraper)** — who's advertising what on Google.
- **[Bark Listing Scraper](https://apify.com/scrapesage/bark-listing-scraper)** — service-provider leads from Bark.
- **[Eventbrite Scraper](https://apify.com/scrapesage/eventbrite-scraper)** — events plus organizer leads (emails & socials).
- **[Whova Event Scraper](https://apify.com/scrapesage/whova-event-scraper)** — attendees, agendas and sponsors from Whova event apps.
- **[Swapcard Exhibitor Scraper](https://apify.com/scrapesage/swapcard-exhibitor-scraper)** — exhibitor lists and booth data from Swapcard trade shows.
- **[Sched Conference Scraper](https://apify.com/scrapesage/sched-conference-scraper)** — sessions and speakers from Sched conference sites.
- **[Airbnb Scraper](https://apify.com/scrapesage/airbnb-scraper)** — listings, prices and availability.

### Tips

- **Targeted lead lists**: use `categories` to pull companies in a specific line of business, then turn on `enrichEmails` to make them contactable.
- **Fresh-company feed**: leave targets blank (or set `scrapeNewest`), turn on `monitorMode`, and put the actor on a daily [Schedule](https://docs.apify.com/platform/schedules) — each run returns only the companies registered since the last one.
- **Exact matches**: paste `/company/...` profile URLs under **Company or category URLs** for guaranteed lookups; `companyNames` is a best-effort name → profile resolver.
- **Proxies**: sgpbusiness.com is behind Cloudflare and blocks datacenter IPs, so **Residential** proxies are on by default — keep them. For very large runs, lower **Max concurrency** if you see occasional blocks.

### FAQ

**Where does the data come from?** From public company profile pages on [sgpbusiness.com](https://www.sgpbusiness.com), a Singapore business directory built on ACRA registry information. No login or API key is required.

**Can I search by company name?** Yes — use `companyNames` for a best-effort lookup, or paste the exact `/company/...` profile URL for a guaranteed match. To list many companies at once, browse by `categories`.

**How do I get email addresses?** Turn on `enrichEmails`. The registry itself doesn't publish emails, so the actor visits the company's own website (home + contact/about) and extracts publicly listed contact emails, a phone number and social links.

**How do I monitor newly registered companies?** Turn on `monitorMode` and create a daily [Schedule](https://docs.apify.com/platform/schedules). Each run emits only companies not seen before for that input. Add a [webhook](https://docs.apify.com/platform/integrations/webhooks) or [Zapier zap](https://docs.apify.com/platform/integrations/zapier) to push new leads into your CRM automatically.

**Does monitor mode conflict with Apify Schedules?** No. Schedules control *when* runs happen; monitor mode controls *which* companies are returned. They're designed to work together.

**Can I export to Google Sheets, CSV, or Excel?** Yes — one click in the dataset view, or automatically on every run via the [Google Drive integration](https://docs.apify.com/platform/integrations/drive).

**Is this legal?** The actor collects publicly available company information only. You are responsible for using the data in compliance with applicable laws (including Singapore's PDPA and the GDPR/CCPA where relevant) and the source website's terms.

### Need help?

Open an issue on the actor's **Issues** tab, or visit the [Apify help center](https://help.apify.com/). Feature requests are welcome — this actor is actively maintained.

# Actor input Schema

## `scrapeNewest` (type: `boolean`):

Scrape the most recently registered Singapore companies (from the sgpbusiness.com home page). Perfect with <b>Monitor mode</b> + Apify Schedules to pull a fresh list of newly incorporated companies every day. Automatically enabled when you leave every other target blank.

## `categories` (type: `array`):

Browse companies by sgpbusiness.com business category. Paste a category name (<code>Accounting Firms</code>), a slug (<code>Accounting-Firms</code>), or a full category URL (<code>https://www.sgpbusiness.com/category/Accounting-Firms</code>). Browse the full list at <code>sgpbusiness.com/category</code>. Examples: <code>Accounting-Firms</code>, <code>Renovation-Contractors</code>, <code>Employment-Agency</code>, <code>Restaurants</code>, <code>Law-Firms</code>.

## `startUrls` (type: `array`):

Paste sgpbusiness.com URLs directly: company profiles (<code>/company/...</code>) to scrape exactly those companies, and/or category pages (<code>/category/...</code>) to scrape every company listed on them.

## `companyNames` (type: `array`):

Look up specific companies by name (e.g. <code>Lazada Singapore Pte Ltd</code>). The scraper resolves each name to its sgpbusiness.com profile. For guaranteed matches, prefer pasting profile URLs under <b>Company or category URLs</b>.

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

Maximum number of company profiles to scrape across all targets. Use 0 for no limit.

## `enrichEmails` (type: `boolean`):

When a company lists a website, crawl it (home + contact/about, up to 3 pages) to extract <b>contact emails</b>, a phone number, a contact-form URL and social links (LinkedIn, Facebook, Instagram). This is the only way to get real email addresses — the registry itself does not publish them. Adds a few page fetches per company that has a website.

## `monitorMode` (type: `boolean`):

Only output companies that are <b>new</b> since the previous run for the same input. State persists across runs in a named key-value store, so this pairs perfectly with Apify Schedules to track newly registered companies, a category, or a watchlist over time without re-pulling — or re-billing — unchanged companies. Leave off to always return every match.

## `monitorTrackStatusChanges` (type: `boolean`):

When monitor mode is on, also re-fetch companies seen in previous runs and re-emit any whose operating status changed (e.g. <code>Live Company</code> → <code>Struck Off</code>), tagged <code>status\_change</code> with the previous status. Costs more (known companies are re-fetched). Leave off to treat only brand-new companies as changes.

## `maxConcurrency` (type: `integer`):

Maximum number of pages fetched in parallel.

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

sgpbusiness.com sits behind Cloudflare, which blocks datacenter IPs — <b>Residential</b> proxies are required and used by default. Keep this setting unless you know what you're doing.

## Actor input object example

```json
{
  "scrapeNewest": false,
  "maxItems": 100,
  "enrichEmails": false,
  "monitorMode": false,
  "monitorTrackStatusChanges": false,
  "maxConcurrency": 4,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

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

All scraped company records as JSON items in the default dataset.

# 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 = {
    "maxItems": 100,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapesage/singapore-company-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 = {
    "maxItems": 100,
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("scrapesage/singapore-company-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 '{
  "maxItems": 100,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call scrapesage/singapore-company-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Singapore Company Scraper — UEN, Registry & Business Leads",
        "description": "Scrape Singapore company data from sgpbusiness.com: UEN, status, incorporation date, entity type, SSIC activity, registered address, phone & website. Browse by category, look up companies, or monitor new registrations. Optional email enrichment for B2B leads. No start fee.",
        "version": "1.0",
        "x-build-id": "nENEtcBbQOWGieGzX"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/scrapesage~singapore-company-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-scrapesage-singapore-company-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/scrapesage~singapore-company-scraper/runs": {
            "post": {
                "operationId": "runs-sync-scrapesage-singapore-company-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/scrapesage~singapore-company-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-scrapesage-singapore-company-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",
                "properties": {
                    "scrapeNewest": {
                        "title": "Scrape newest registered companies",
                        "type": "boolean",
                        "description": "Scrape the most recently registered Singapore companies (from the sgpbusiness.com home page). Perfect with <b>Monitor mode</b> + Apify Schedules to pull a fresh list of newly incorporated companies every day. Automatically enabled when you leave every other target blank.",
                        "default": false
                    },
                    "categories": {
                        "title": "Business categories",
                        "type": "array",
                        "description": "Browse companies by sgpbusiness.com business category. Paste a category name (<code>Accounting Firms</code>), a slug (<code>Accounting-Firms</code>), or a full category URL (<code>https://www.sgpbusiness.com/category/Accounting-Firms</code>). Browse the full list at <code>sgpbusiness.com/category</code>. Examples: <code>Accounting-Firms</code>, <code>Renovation-Contractors</code>, <code>Employment-Agency</code>, <code>Restaurants</code>, <code>Law-Firms</code>.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "startUrls": {
                        "title": "Company or category URLs",
                        "type": "array",
                        "description": "Paste sgpbusiness.com URLs directly: company profiles (<code>/company/...</code>) to scrape exactly those companies, and/or category pages (<code>/category/...</code>) to scrape every company listed on them.",
                        "items": {
                            "type": "object",
                            "required": [
                                "url"
                            ],
                            "properties": {
                                "url": {
                                    "type": "string",
                                    "title": "URL of a web page",
                                    "format": "uri"
                                }
                            }
                        }
                    },
                    "companyNames": {
                        "title": "Company names",
                        "type": "array",
                        "description": "Look up specific companies by name (e.g. <code>Lazada Singapore Pte Ltd</code>). The scraper resolves each name to its sgpbusiness.com profile. For guaranteed matches, prefer pasting profile URLs under <b>Company or category URLs</b>.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "maxItems": {
                        "title": "Max companies",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Maximum number of company profiles to scrape across all targets. Use 0 for no limit.",
                        "default": 100
                    },
                    "enrichEmails": {
                        "title": "Enrich emails from the company website",
                        "type": "boolean",
                        "description": "When a company lists a website, crawl it (home + contact/about, up to 3 pages) to extract <b>contact emails</b>, a phone number, a contact-form URL and social links (LinkedIn, Facebook, Instagram). This is the only way to get real email addresses — the registry itself does not publish them. Adds a few page fetches per company that has a website.",
                        "default": false
                    },
                    "monitorMode": {
                        "title": "Monitor mode (only new & changed)",
                        "type": "boolean",
                        "description": "Only output companies that are <b>new</b> since the previous run for the same input. State persists across runs in a named key-value store, so this pairs perfectly with Apify Schedules to track newly registered companies, a category, or a watchlist over time without re-pulling — or re-billing — unchanged companies. Leave off to always return every match.",
                        "default": false
                    },
                    "monitorTrackStatusChanges": {
                        "title": "Also re-check known companies for status changes",
                        "type": "boolean",
                        "description": "When monitor mode is on, also re-fetch companies seen in previous runs and re-emit any whose operating status changed (e.g. <code>Live Company</code> → <code>Struck Off</code>), tagged <code>status_change</code> with the previous status. Costs more (known companies are re-fetched). Leave off to treat only brand-new companies as changes.",
                        "default": false
                    },
                    "maxConcurrency": {
                        "title": "Max concurrency",
                        "minimum": 1,
                        "maximum": 20,
                        "type": "integer",
                        "description": "Maximum number of pages fetched in parallel.",
                        "default": 4
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "sgpbusiness.com sits behind Cloudflare, which blocks datacenter IPs — <b>Residential</b> proxies are required and used by default. Keep this setting unless you know what you're doing.",
                        "default": {
                            "useApifyProxy": true,
                            "apifyProxyGroups": [
                                "RESIDENTIAL"
                            ]
                        }
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
