Add Singapore property valuations to your product.

Get HDB and condo resale estimates, comparable transactions, and confidence labels through one API. Power property screening, mortgage workflows, and customer-facing tools without building and maintaining your own valuation model.

No credit card required · Pay per successful call

Negotiating volume or enterprise terms instead? Request pilot access.

Sample valuation Captured 10 Sep 2026

HDB 5-room, Kallang/Whampoa, Blk 12 Nth Bridge Rd · 114 sqm · storey 20 · lease commenced 1975

S$857,600
S$698.89 psf · S$7,522.81 psm
Medium confidence

6 comparable sales, price-per-sqm spread of 3.1% across them.

Supporting comparable sales
MonthStoreyPrice
2026-0316–18S$840,000
2026-0107–09S$810,000
2025-0822–24S$825,000

Real output from a live /resolve-postal-code → /valuation call chain, not a mockup — see the identical request in the quickstart below. Same-block resale transactions, 24-month lookback.

Built for teams shipping property products

Three workflows this API is already powering evaluation for — each one turns a valuation into a concrete step in someone else's product, not a standalone tool.

Proptech

Embed valuations into search and analysis

Attach an estimate, confidence label, and supporting comparables to every listing or saved search — the same evidence a human analyst would pull, returned inline as structured JSON.

Learn more →

Mortgage platforms

Add indicative values to initial case screening

Get a defensible estimate at the point a case enters your pipeline, before a formal valuation is commissioned — useful for early affordability checks, not a substitute for one.

Learn more →

Agency software

Bring consistent pricing evidence into existing tools

Give agents the same comparable-sales reasoning across every listing, instead of ad hoc research per property — one call, the same methodology every time.

Learn more →

Explore a sample valuation

Two saved, verified examples — no signup needed to look. These are real recorded API responses, not live requests; get your own key to run this against any Singapore address.

HDB 5-room, Kallang/Whampoa, Blk 12 Nth Bridge Rd · 114 sqm · storey 20 · lease commenced 1975

S$857,600
S$698.89 psf · S$7,522.81 psm
Medium confidence

6 comparable sales, price-per-sqm spread of 3.1% across them. Medium reflects a modest sample size, not a data-quality problem.

Condo, leasehold, Treasure at Tampines, District 18 · 63 sqm · floor 01–05 · lease commenced 2018

S$1,129,900
S$1,666.25 psf · S$17,935.35 psm
High confidence

85 comparable sales from this project alone, price-per-sqm spread of just 4.5%, 100% genuine resale (not new-launch or sub-sale pricing).

Supporting comparable sales
MonthStoreyPrice
2026-0316–18S$840,000
2026-0107–09S$810,000
2025-0822–24S$825,000

Showing 3 of 6 comparables used — the full list is in the API response tab.

Supporting comparable sales
MonthFloorPrice
2026-0706–10S$1,112,000
2026-0601–05S$1,210,000
2026-0606–10S$1,240,000

Showing 3 of 85 comparables used — the full list is in the API response tab.

{
  "property_type": "hdb",
  "estimated_value": 857600.0,
  "estimated_psm": 7522.81,
  "estimated_psf": 698.89,
  "confidence": "medium",
  "confidence_reason": "6 comparable(s), psm spread (CV) 3.1%",
  "comp_tier": "radius",
  "radius_km_used": 0.5,
  "radius_auto_selected": true,
  "lookback_months": 24,
  "remaining_lease_months": 576,
  "comparables": [
    { "month": "2026-03", "storey_range": "16 TO 18", "resale_price": 840000.0, "adjusted_psm": 7521.75 },
    { "month": "2026-01", "storey_range": "07 TO 09", "resale_price": 810000.0, "adjusted_psm": 7637.02 },
    { "month": "2025-08", "storey_range": "22 TO 24", "resale_price": 825000.0, "adjusted_psm": 7084.8 }
  ]
}

Trimmed for readability — 3 of 6 comparables shown, and each comparable's fields are a subset of what the live API returns (full shape at /docs).

{
  "property_type": "condo",
  "estimated_value": 1129900.0,
  "estimated_psm": 17935.35,
  "estimated_psf": 1666.25,
  "method_used": "comparable_sales",
  "confidence": "high",
  "confidence_reason": "85 comparable(s), psm spread (CV) 4.5%, 100% of weight from Resale",
  "comp_tier": "project",
  "resale_weight_share": 1.0,
  "lookback_months": 18,
  "remaining_lease_months": 1092,
  "comparables": [
    { "contract_month": "2026-07", "floor_range": "06-10", "price": 1112000.0, "adjusted_psm": 16415.24 },
    { "contract_month": "2026-06", "floor_range": "01-05", "price": 1210000.0, "adjusted_psm": 19206.35 },
    { "contract_month": "2026-06", "floor_range": "06-10", "price": 1240000.0, "adjusted_psm": 18304.76 }
  ]
}

Trimmed for readability — 3 of 85 comparables shown, and each comparable's fields are a subset of what the live API returns (full shape at /docs).

Saved examples, captured 10 Sep 2026 — not live requests. Get a key to run this on any address.

Accuracy you can check, not just trust

Backtested against real, held-out resale transactions — comparables restricted to strictly prior calendar months, so no test-set valuation ever sees data from its own or a later month. Reported the way lender-grade AVMs report: median absolute % error, valuation coverage, and % within ±10%.

3.06%
HDB median abs. % error (resale)
100%
HDB valuation coverage
93.6%
HDB within ±10%
3.77%
Condo/EC median abs. % error (resale)
98.8%
Condo/EC valuation coverage
88.8%
Condo/EC within ±10%

Benchmark updated 27 Aug 2026, on an untouched test set — not the same rows used to tune the model. Condo/EC coverage is 98.8%, not 100%, because a small share of district-wide fallbacks withhold a point estimate rather than guess (see below).

On live calls (not the backtest above), a same-month transaction is legitimate available information and may be used — the strictly-prior-month rule applies only to how these validation figures themselves are measured. Full detail, sample sizes, and known limitations → Methodology.

What you get back

An API-first alternative built to be called from inside your product, not visited by an end user — your customers never see our brand.

Explainable by default

Every valuation returns the comparables used and their individual adjustment factors — time and storey for HDB; time, floor, and building-vintage for condo — not a black-box number.

Confidence, not a false average

When a property lacks enough of its own comparable history, the API falls back to a hedonic regression model rather than forcing a weak comparison — and never hides which method produced a given number.

Built for Singapore specifically

HDB and private residential share one property_type field on the same endpoints, both keyed off postal code — verified against real address data, not ported in from a US or UK AVM.

Get a key, run an example, integrate

Tested, copyable examples — the exact request behind the sample valuation above.

1
Get a key

10 free calls, no card required, instantly at /get-access.

2
Run the example

Chain /resolve-postal-code into /valuation, or call /valuation directly if you already have structured address data.

3
Integrate

Use the estimate, confidence label, and comparables inline in your own product — a loan form, a pricing engine, a portfolio dashboard.

curl -s -X POST https://www.sgpropertyapi.sg/v1/valuation \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "town": "KALLANG/WHAMPOA",
    "street_name": "NTH BRIDGE RD",
    "block": "12",
    "flat_type": "5 ROOM",
    "floor_area_sqm": 114,
    "storey": 20,
    "lease_commence_date": 1975
  }'
import requests

resp = requests.post(
    "https://www.sgpropertyapi.sg/v1/valuation",
    headers={"X-API-Key": "YOUR_API_KEY"},
    json={
        "town": "KALLANG/WHAMPOA",
        "street_name": "NTH BRIDGE RD",
        "block": "12",
        "flat_type": "5 ROOM",
        "floor_area_sqm": 114,
        "storey": 20,
        "lease_commence_date": 1975,
    },
)
print(resp.json()["estimated_value"])  # 857600.0
const resp = await fetch("https://www.sgpropertyapi.sg/v1/valuation", {
  method: "POST",
  headers: {
    "X-API-Key": "YOUR_API_KEY",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    town: "KALLANG/WHAMPOA",
    street_name: "NTH BRIDGE RD",
    block: "12",
    flat_type: "5 ROOM",
    floor_area_sqm: 114,
    storey: 20,
    lease_commence_date: 1975,
  }),
});
const data = await resp.json();
console.log(data.estimated_value); // 857600.0

/cov takes the same body plus asking_price and adds price_vs_estimate_gap. The same endpoints value condo/EC/apartment units too — pass "property_type": "condo" with district/area_sqm/floor_range/tenure_type instead of the HDB fields shown here. Full parameter reference and a live "Try it out" console → /docs.

Simple, usage-metered pricing

No seat fees, no minimums. You only pay for a successful valuation.

Try
Free · 10 calls
  • 10 free successful calls to /valuation or /cov
  • No credit card required
  • /resolve-postal-code free and unmetered, always
  • Failed requests (422/404) never count against your trial
Start free
Scale
Custom
  • Volume pricing for high-call-volume integrations
  • Enterprise/pilot terms and direct support
  • Dedicated onboarding for larger integrations
Talk to us
successful calls / month

≈ S$80.00 / month at S$0.80/call

This is the ongoing metered rate. The 10 free calls are a one-time trial per signup, not a recurring monthly allowance — they don't reduce this estimate.

Frequently asked questions

What data does this cover today?

HDB resale flats and private residential (condo, apartment, Executive Condominium) resale, across Singapore — valuation and asking-price-vs-estimate comparison are both live on the same endpoints. Landed property, rental yield, price trends, and en-bloc probability are on the roadmap, not available yet — get in touch if you want early access to a specific one.

How fresh is the underlying data?

Built on public data.gov.sg HDB resale data and URA private-residential transaction data, refreshed periodically through this API's own ingestion pipelines — not a one-time snapshot. See the licensing notes in the footer for source and access details.

What does the confidence label mean?

High/medium/low, based on how many comparable transactions support the estimate, how tightly their price-per-square-metre agrees, and (for condo) how much of that evidence is genuine resale versus new-launch or sub-sale pricing. It's always returned alongside the number, never hidden. Full definitions → Methodology.

What happens when there isn't enough evidence?

Rather than force out a weak guess, the API returns a 422 with a clear reason when there's a genuine data gap — either too few district-wide comparables, or, for a thin/new condo project, too few transactions from that specific project. You always know why a call didn't produce an estimate, instead of silently getting a number nobody should trust.

How do I integrate this?

One HTTP call, JSON in and out — see the quickstart above, or the full parameter reference with a live "Try it out" console at /docs. No SDK required.

How does billing work?

10 free calls per signup, no card required. After that, S$0.80 per successful call to /valuation or /cov — /resolve-postal-code is always free. A failed request (422/404) is never billed and never counts against your trial. Need custom volume terms? Get in touch.

SG Property API is operated by Smart Growth Technologies (UEN 53398715J).

SG Property API — built on public data.gov.sg HDB resale data. Not financial advice; valuations are estimates, not appraisals.

Contains information from HDB Resale Flat Prices, accessed on 2026-07-24 from data.gov.sg, which is made available under the terms of the Singapore Open Data Licence version 1.0.

Contains information from URA Private Residential Property Transactions (PMI_Resi_Transaction), accessed on 2026-07-24 from the Urban Redevelopment Authority (URA), which is made available under the terms of the Singapore Open Data Licence version 1.0.

Licence: https://data.gov.sg/open-data-licence. Both datasets are refreshed periodically via this API's own ingestion pipelines — the access date above reflects when this notice was last reviewed, not a one-time pull.