# Singapore CEA Estate Agents Register Scraper (`scrapers_lat/singapore-cea-estate-agents-scraper`) Actor

Scrape the official Singapore CEA public register of licensed estate agents and salespersons via data.gov.sg. Get salesperson name, registration number, estate agency name, licence number and registration dates. Export to JSON, CSV or Excel.

- **URL**: https://apify.com/scrapers\_lat/singapore-cea-estate-agents-scraper.md
- **Developed by:** [Scrapers Lat](https://apify.com/scrapers_lat) (community)
- **Categories:** Real estate, Lead generation, Business
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

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

<!-- actor-banner -->
[![Singapore CEA Estate Agents Register Scraper](https://scrapers.lat/banners/singapore-cea-estate-agents-scraper.png)](https://console.apify.com/actors/vokRDqsgAsuawiuEg/input)
<!-- /actor-banner -->

## Singapore CEA Estate Agents Register Scraper

> Pull the official Singapore CEA public register of licensed estate agents and salespersons via the data.gov.sg open data portal. Search by name, registration number or agency and get the registration status, agency and validity dates. No login, no API key.

![Apify](https://img.shields.io/badge/Platform-Apify-1CE1CE?logo=apify&logoColor=white)
![Coverage](https://img.shields.io/badge/Coverage-Singapore-blue)
![Maintained](https://img.shields.io/badge/Maintained-Yes-brightgreen)
![Output](https://img.shields.io/badge/Output-JSON%20%7C%20CSV%20%7C%20Excel-orange)

<br>

### What you get

One record per registered salesperson, straight from the official Council for Estate Agencies (CEA) public register published on data.gov.sg. This is the authoritative record of who is a licensed real estate salesperson in Singapore and which agency they work under. Built for KYC, recruiting, lead generation and market research.

- **name**: the registered salesperson name
- **registrationNo**: the CEA salesperson registration number
- **agencyName**: the estate agency the salesperson is registered under
- **agencyLicenseNo**: the estate agency license number
- **registrationStartDate**: the date registration started
- **registrationEndDate**: the date registration is valid until
- **source**: the data source label
- **observedAt**: when this record was collected

### How it works

| Input | What it does |
|---|---|
| `maxItems` | Cap the number of records collected. |
| `searchQuery` | Free-text search by salesperson name, registration number or agency (for example TAN, PROPNEX, R015022I). |
| `agencyName` | Return only salespersons under this exact estate agency name. |
| `sortByNewest` | Return the most recent register entries first. |

The data comes from the official Singapore open data portal. Anonymous access is rate limited, so large pulls are paced automatically.

### Use cases

| Use case | Who it is for |
|---|---|
| Verify a salesperson is licensed | Buyers, sellers and compliance teams |
| Build a roster of an agency's salespersons | Agency operations and recruiting |
| Recruit licensed agents by agency | Real estate recruiters |
| Lead lists of active salespersons | PropTech and B2B sales |
| KYC and due diligence on an agent | Banks, legal and compliance |

### Frequently Asked Questions

**Where does the data come from?**
The official data.gov.sg CEA public register of estate agents, managed by the Council for Estate Agencies (CEA). It lists licensed salespersons and their agencies.

**Does it need a login or API key?**
No. It reads the public open data portal with no account and no key.

**Is this the official register?**
Yes. It is the CEA public register that anyone can consult to confirm a salesperson is currently licensed and which agency they belong to.

**How fresh is it?**
The source dataset is refreshed by CEA on a rolling basis.

<!-- example-tasks -->
### Example use cases

Ready-to-run example tasks, each preconfigured for a common scenario. Open one and press run, or use it as a template:

- [Singapore PropNex Realty Salespersons (CEA Register)](https://apify.com/scrapers_lat/singapore-cea-estate-agents-scraper/examples/sg-cea-propnex-realty-agents): Scrape all PropNex Realty salespersons from the Singapore CEA register. Get name, registration number, agency licence and validity dates as CSV or Excel.
- [Singapore ERA Realty Network Agents (CEA Register)](https://apify.com/scrapers_lat/singapore-cea-estate-agents-scraper/examples/sg-cea-era-realty-network-agents): Scrape all ERA Realty Network salespersons from the Singapore CEA register. Export name, registration number and registration dates to JSON, CSV or Excel.
- [Singapore Huttons Salespersons (CEA Register)](https://apify.com/scrapers_lat/singapore-cea-estate-agents-scraper/examples/sg-cea-huttons-salespersons): Scrape all Huttons salespersons registered with the Singapore CEA. Get name, registration number, agency licence and validity dates as CSV or Excel.
- [Singapore OrangeTee & Tie Agents (CEA Register)](https://apify.com/scrapers_lat/singapore-cea-estate-agents-scraper/examples/sg-cea-orangetee-tie-agents): Scrape all OrangeTee & Tie salespersons from the Singapore CEA register. Export name, registration number and registration dates to JSON, CSV or Excel.
- [Singapore Savills Estate Agents (CEA Register)](https://apify.com/scrapers_lat/singapore-cea-estate-agents-scraper/examples/sg-cea-savills-singapore-agents): Scrape all Savills Singapore salespersons from the CEA public register. Get name, registration number, agency licence and validity dates as CSV or Excel.
- [Singapore PropNex Group Agents Search (CEA)](https://apify.com/scrapers_lat/singapore-cea-estate-agents-scraper/examples/sg-cea-propnex-all-entities): Scrape every PropNex group salesperson in the Singapore CEA register, including Realty and International. Export name, registration and dates to CSV or Excel.
- [Singapore Estate Agents Named Tan (CEA Register)](https://apify.com/scrapers_lat/singapore-cea-estate-agents-scraper/examples/sg-cea-agents-named-tan): Scrape Singapore CEA registered salespersons named Tan. Get name, registration number, agency and validity dates as JSON, CSV or Excel. No login needed.
- [Singapore Estate Agents Named Lim (CEA Register)](https://apify.com/scrapers_lat/singapore-cea-estate-agents-scraper/examples/sg-cea-agents-named-lim): Scrape Singapore CEA registered salespersons named Lim. Export name, registration number, agency and validity dates to JSON, CSV or Excel.
- [Singapore OrangeTee Group Agents Search (CEA)](https://apify.com/scrapers_lat/singapore-cea-estate-agents-scraper/examples/sg-cea-orangetee-group-search): Scrape every OrangeTee group salesperson in the Singapore CEA register. Get name, registration number, agency and validity dates as CSV or Excel.
- [Singapore CEA Estate Agents Register (Newest)](https://apify.com/scrapers_lat/singapore-cea-estate-agents-scraper/examples/sg-cea-full-register-newest): Scrape the full Singapore CEA public register of licensed estate salespersons, newest first. Export name, agency and registration dates to CSV or Excel.

<!-- /example-tasks -->

<!-- x402 -->
### Export, API and AI agents (x402 + MCP)

Export the scraped data to **JSON, CSV or Excel**, pull it as a **dataset** through the Apify **API**, or wire it into your app with **no code**. This web scraper and data extractor also works for bulk data extraction and scheduled runs.

For AI agents: this Actor is available on **x402**, Apify's agentic payment standard built with Coinbase. An AI agent can discover, pay for and run it on its own with a funded wallet and a single HTTP request: no account, no subscription, no API key and no human in the loop. It also runs as an **MCP** tool inside Claude, Cursor and other AI clients out of the box. Learn more about [x402 agentic payments on Apify](https://docs.apify.com/platform/integrations/x402).
<!-- /x402 -->

<!-- related-actors -->
### Related scrapers

Need data from the same space? Here are other scrapers we build and maintain:

- [Singapore GeBIZ Government Contracts Scraper](https://apify.com/scrapers_lat/singapore-gebiz-contracts-scraper): Singapore government awarded contracts with agency, supplier and amount.
- [SAM.gov Opportunities Scraper](https://apify.com/scrapers_lat/sam-gov-opportunities-scraper): US federal contract opportunities by agency and NAICS.
- [CanadaBuys Tenders Scraper](https://apify.com/scrapers_lat/canadabuys-tenders-scraper): Canadian government tender notices with buyer, category and closing date.
- [Colombia SECOP Scraper](https://apify.com/scrapers_lat/colombia-secop-scraper): Colombian public contracts with entity, supplier and value.
- [EU TED Tenders Scraper](https://apify.com/scrapers_lat/eu-ted-tenders-scraper): European public procurement notices from TED.

<!-- /related-actors -->

<!-- scrapers-lat-cta -->
### More scrapers at scrapers.lat

This actor is built and maintained by [scrapers.lat](https://scrapers.lat), where we publish scrapers for public platforms across the world: real estate, jobs, e-commerce, company registries and government data. Browse the full catalog, see live sample output for each one, or ask us for a custom scraper at [scrapers.lat](https://scrapers.lat).

---

> This actor is an independent tool and has no affiliation with CEA, the Council for Estate Agencies or the Government of Singapore. It only accesses data published openly on data.gov.sg. Use it in accordance with the portal's terms.
<!-- /scrapers-lat-cta -->

# Actor input Schema

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

Maximum number of estate agent records to collect. The portal rate-limits anonymous access, so very large pulls are paced automatically.
## `searchQuery` (type: `string`):

Free-text search across all fields: salesperson name, registration number or estate agency name (for example "TAN", "PROPNEX", "R015022I"). Leave empty to pull the full register newest first.
## `agencyName` (type: `string`):

Return only salespersons registered under this exact estate agency name, as it appears in the register (for example "PROPNEX REALTY PTE. LTD."). Case sensitive exact match. Optional.
## `sortByNewest` (type: `boolean`):

Return the most recently added register entries first. Turn off to read in the source order.

## Actor input object example

```json
{
  "maxItems": 1000,
  "sortByNewest": true
}
````

# Actor output Schema

## `results` (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 = {
    "maxItems": 1000,
    "searchQuery": ""
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapers_lat/singapore-cea-estate-agents-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": 1000,
    "searchQuery": "",
}

# Run the Actor and wait for it to finish
run = client.actor("scrapers_lat/singapore-cea-estate-agents-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": 1000,
  "searchQuery": ""
}' |
apify call scrapers_lat/singapore-cea-estate-agents-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Singapore CEA Estate Agents Register Scraper",
        "description": "Scrape the official Singapore CEA public register of licensed estate agents and salespersons via data.gov.sg. Get salesperson name, registration number, estate agency name, licence number and registration dates. Export to JSON, CSV or Excel.",
        "version": "0.1",
        "x-build-id": "9g06mVzc6IycHhfcq"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/scrapers_lat~singapore-cea-estate-agents-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-scrapers_lat-singapore-cea-estate-agents-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/scrapers_lat~singapore-cea-estate-agents-scraper/runs": {
            "post": {
                "operationId": "runs-sync-scrapers_lat-singapore-cea-estate-agents-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/scrapers_lat~singapore-cea-estate-agents-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-scrapers_lat-singapore-cea-estate-agents-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": {
                    "maxItems": {
                        "title": "Max items",
                        "minimum": 1,
                        "maximum": 1000000,
                        "type": "integer",
                        "description": "Maximum number of estate agent records to collect. The portal rate-limits anonymous access, so very large pulls are paced automatically."
                    },
                    "searchQuery": {
                        "title": "Search keyword",
                        "type": "string",
                        "description": "Free-text search across all fields: salesperson name, registration number or estate agency name (for example \"TAN\", \"PROPNEX\", \"R015022I\"). Leave empty to pull the full register newest first."
                    },
                    "agencyName": {
                        "title": "Estate agency name (exact)",
                        "type": "string",
                        "description": "Return only salespersons registered under this exact estate agency name, as it appears in the register (for example \"PROPNEX REALTY PTE. LTD.\"). Case sensitive exact match. Optional."
                    },
                    "sortByNewest": {
                        "title": "Newest first",
                        "type": "boolean",
                        "description": "Return the most recently added register entries first. Turn off to read in the source order.",
                        "default": true
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
