# Singapore HDB Resale Prices — Transaction Data API (`nexgendata/sg-hdb-resale-prices`) Actor

Track Singapore HDB resale prices with price-per-sqft and lease detail. Clean JSON for analysts, researchers and AI agents.

- **URL**: https://apify.com/nexgendata/sg-hdb-resale-prices.md
- **Developed by:** [NexGenData](https://apify.com/nexgendata) (community)
- **Categories:** Business, E-commerce
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $50.00 / 1,000 singapore hdb resale transaction 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 HDB Resale Prices

Track Singapore HDB resale prices with price-per-sqft and lease detail. Built for analysts, researchers, fintech builders and AI agents.

### 📊 What you get

Clean JSON, one record per transaction (full output has 17 fields):

- `address` — Address
- `block` — Block
- `data_source` — Source of the data
- `flat_model` — Flat model
- `flat_type` — Flat type
- `floor_area_sqft` — Floor area sqft
- `floor_area_sqm` — Floor area sqm
- `is_million_dollar_flat` — Is million dollar flat
- `lease_commence_year` — Lease commence year
- `price_per_sqft_sgd` — Price per sqft sgd
  Records include a `data_source` field.

**Pricing:** $0.05 per transaction (Pay-Per-Event) — about **20 transactions per $1**.

### 🤖 Use with AI agents

Structured JSON built for LLM and agent pipelines — point Claude, the OpenAI Agents SDK, an n8n flow or any MCP-aware client at it and pull Singapore HDB resale prices with PSF and lease data on demand.

**Sample agent prompt:**

```
List million-dollar HDB flats sold this year with price per sqft.
```

**Agentic payments (x402):** Supports agentic payment via x402 — agents can call this actor with USDC, no API key required.

### ⏰ Run on a schedule

This is a monitoring play — schedule a recurring pull:

```json
{
  "limit": 50
}
```

### 🔗 Related Singapore actors

**Singapore data suite:** [ACRA Company Search](https://apify.com/nexgendata/singapore-acra-companies), [SGX Announcements](https://apify.com/nexgendata/sgx-company-announcements), [GeBIZ Tenders](https://apify.com/nexgendata/singapore-gebiz-tenders), [HDB Resale](https://apify.com/nexgendata/singapore-hdb-resale-tracker)

**Cross-market hubs:** [APAC Disclosure Monitor](https://apify.com/nexgendata/apac-disclosure-monitor), [APAC IPO Calendar Sweep](https://apify.com/nexgendata/apac-ipo-calendar-sweep)

***

*Data from public Singapore sources.*

# Actor input Schema

## `town` (type: `string`):

Filter to a single HDB town. HDB groups Singapore into 26 towns/estates. Examples: 'BUKIT TIMAH' (the most expensive HDB town — most million-dollar flats), 'BISHAN', 'ANG MO KIO', 'QUEENSTOWN', 'TOA PAYOH', 'TAMPINES', 'JURONG WEST', 'WOODLANDS', 'PUNGGOL', 'SENGKANG', 'CLEMENTI', 'BUKIT MERAH', 'KALLANG/WHAMPOA', 'MARINE PARADE', 'CENTRAL AREA'. Must be UPPERCASE exactly as HDB publishes. Leave empty to span all 26 towns.

## `flat_type` (type: `string`):

HDB flat-type taxonomy. '1 ROOM' / '2 ROOM' (rare, mostly older Toa Payoh / Bukit Merah stock). '3 ROOM' (the legacy mass-market — ~70sqm). '4 ROOM' (Singapore's most-traded flat, ~90-105sqm — the median upgrade target). '5 ROOM' (~110-130sqm). 'EXECUTIVE' (~140-160sqm — premium, often Maisonette / Apartment models). 'MULTI-GENERATION' (rare 3-generation units). Leave 'ALL' to span every flat type.

## `min_price_sgd` (type: `integer`):

Lower bound on resale price in Singapore Dollars. Filters out cheaper transactions client-side after fetching from data.gov.sg. Useful for surfacing premium / million-dollar flats: set to 1000000 to find every million-dollar HDB resale (a heavily-tracked metric in Singapore property media). Leave 0 for no lower bound.

## `max_price_sgd` (type: `integer`):

Upper bound on resale price in Singapore Dollars. Filters out expensive transactions client-side. Useful for first-time-buyer affordability research (set to 600000 to bound HDB grant + bank loan eligibility) or finding distressed / below-market sales. Leave 0 for no upper bound.

## `transaction_month_from` (type: `string`):

Lower bound on transaction month in 'YYYY-MM' format (e.g. '2024-01'). HDB publishes the registration month, not the OTP date. Use together with `transaction_month_to` to bound a window — for example '2025-01' to '2025-12' for full-year-2025 transactions. Leave empty for no lower bound (data starts at 2017-01).

## `transaction_month_to` (type: `string`):

Upper bound on transaction month in 'YYYY-MM' format (e.g. '2026-03'). Pair with `transaction_month_from` to bound the window. HDB updates this dataset monthly with ~2,500-3,500 new transactions per release. Leave empty for no upper bound (returns up to the most recent published month).

## `million_dollar_only` (type: `boolean`):

Quick filter for 'million-dollar HDB' transactions — the single most-tracked HDB metric in Singapore property media (Channel News Asia, Straits Times, Business Times all run regular features on million-dollar HDB sales). Equivalent to setting min\_price\_sgd=1000000. Useful for tracking the premium HDB market and identifying breakout estates (Bukit Timah, Bishan, Queenstown, Toa Payoh, Kallang/Whampoa most common).

## `limit` (type: `integer`):

Hard cap on total transactions returned in this run (1-2000). Each transaction is one dataset row. Premium pricing applies per row ($0.05/transaction). The most recent transactions are returned first (sorted by HDB registration order, descending).

## Actor input object example

```json
{
  "town": "ALL",
  "flat_type": "ALL",
  "min_price_sgd": 0,
  "max_price_sgd": 0,
  "million_dollar_only": false,
  "limit": 10
}
```

# 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 = {
    "town": "ALL",
    "flat_type": "ALL",
    "min_price_sgd": 0,
    "max_price_sgd": 0,
    "transaction_month_from": "",
    "transaction_month_to": "",
    "million_dollar_only": false,
    "limit": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("nexgendata/sg-hdb-resale-prices").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 = {
    "town": "ALL",
    "flat_type": "ALL",
    "min_price_sgd": 0,
    "max_price_sgd": 0,
    "transaction_month_from": "",
    "transaction_month_to": "",
    "million_dollar_only": False,
    "limit": 10,
}

# Run the Actor and wait for it to finish
run = client.actor("nexgendata/sg-hdb-resale-prices").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 '{
  "town": "ALL",
  "flat_type": "ALL",
  "min_price_sgd": 0,
  "max_price_sgd": 0,
  "transaction_month_from": "",
  "transaction_month_to": "",
  "million_dollar_only": false,
  "limit": 10
}' |
apify call nexgendata/sg-hdb-resale-prices --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=nexgendata/sg-hdb-resale-prices",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

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