REST API · JSON · ZAR

Comparable-sales valuations, returned in one request.

Send a suburb and a floor area, get back an estimated value, a price range and a confidence score — built from recent comparable sales, not list-price guesses. Quote before the manual CMA is even open.

Private beta — keys are issued on signup, no waitlist.

GET /v1/valuation 200 OK
$ curl "https://api.proptech.buildyard.co.za/v1/valuation?suburb=Claremont&city=Cape+Town&property_type=house&floor_area_sqm=180&bedrooms=3" \ -H "X-API-Key: spt_live_••••••••••••••••••••••••"
{
  "suburb": "Claremont",
  "city": "Cape Town",
  "floor_area_sqm": 180,
  "estimated_value_rands": 2850000,
  "value_range": {
    "low_rands": 2690000,
    "high_rands": 3010000
  },
  "price_per_sqm_rands": 15833,
  "confidence": { "score": 0.81, "label": "high" },
  "comparables_used": 14,
  "method": "comparable_sales"
}
Confidence — high · 0.81
See it in action

A real call, not a mockup

The example above isn't illustrative — this is the same GET /v1/valuation call, captured live against a running instance of the API through its interactive docs.

Screen recording of a GET /v1/valuation request for a house in Claremont, Cape Town executed against the live API, returning a 200 response with an estimated value and a 98% confidence score.

Claremont · 180m² · 3-bed house · 12 comparables 200 OK — confidence 0.98 (high)

How an estimate is built

From raw sales to a defensible number

Every valuation runs the same four-step pipeline — no black box, and the response tells you exactly how many comparables and how much confidence went into it.

01

Filter comparables

Sales within the lookback window, matching property type, within one bedroom, and inside a sane price-per-sqm band for the area.

02

Remove outliers

An interquartile-range pass drops the sales that would otherwise skew the estimate — a distressed sale or an outlier renovation doesn't move the number.

03

Weight by recency

The median price per square metre is skewed toward more recent sales, so a suburb that's moved in the last quarter shows it.

04

Score confidence

A 0–1 score blended from comparable count, price variance and recency — so a thin dataset reads as thin, not confident.

Three endpoints

Everything a valuation needs, nothing it doesn't

GET/v1/valuation

Suburb, city and property specs in — an estimated value, price range, price/sqm and confidence score out.

GET/v1/comparables

The raw comparable sales behind any estimate, for when an agent wants to show the evidence, not just the number.

GET/v1/trends/{suburb}

Median price, price per square metre and growth for a suburb, refreshed nightly rather than computed per request.

Where the numbers come from

Real sales, not list-price guesses

Estimates are built with the comparable sales method — the same approach an agent uses for a CMA, run automatically against a database of South African property sales and listings, kept current on an ongoing basis rather than a one-off import.

Every response reports its own comparable count and confidence score. An estimate built on two thin comparables says so, rather than presenting the same confidence as one built on twenty — so you know when to hand it to a client as-is, and when to double-check it first.

high≥ 0.75 — quote as-is
medium≥ 0.50 — verify with an agent
low< 0.50 — request a full valuation
Plans

Priced by call volume

Every plan includes all three endpoints. Upgrade or downgrade any time — a new key is emailed within seconds of checkout.

Starter
R299/mo
500 calls / month
Subscribe
Professional
R599/mo
5,000 calls / month
Subscribe
Enterprise
R1,999/mo
50,000 calls / month
Subscribe

Billing via Lemon Squeezy. Prices in ZAR, ex. VAT where applicable.