Property Valuation API

Automated property valuation using HPI and comparable sales methods with confidence scoring

REST API
JSON Responses
API Key Authentication
1 Credit Per API Call

Overview

The Property Valuation API provides automated property valuations using two complementary methods: the House Price Index (HPI) method and the Comparable Sales method. Each valuation includes a confidence score and detailed breakdown of the calculation methodology.

Valuation methods:

  • HPI Method — Applies regional house price index changes from the property's last sale date to the present, adjusting the original sale price for market movements
  • Comparables Method — Calculates a weighted average price per m² from recent nearby sales, adjusted for property type, size similarity, and sale recency
  • Cross-validation — When both methods produce results, they are cross-validated to boost confidence when values agree

Data included in the response:

  • Property details — address, floor area, property type, last sale information
  • Valuation results — recommended value, valuation range (low/mid/high), per-method breakdowns with confidence scores
  • EPC data — energy ratings, tenure, construction details, heating information
  • Comparable sales — up to 20 nearby comparable sales used in the calculation

This API is ideal for:

  • Property platforms requiring automated valuations
  • Mortgage brokers and lenders needing quick property value estimates
  • Estate agents building valuation tools
  • Property investors analysing potential purchases with extension or renovation scenarios
  • PropTech applications needing valuation data in one API call

Important Note

Valuations are algorithmically generated and should be considered as indicative estimates. For legal or lending purposes, we recommend complementing our API data with a professional RICS surveyor valuation.

Authentication

All requests to the Property Valuation API require authentication using an API key. You can obtain your API key from your PropertyInsights dashboard after subscribing to an API plan.

Include your API key in the request header as follows:

X-API-Key: your_api_key_here

Security Warning

Never expose your API key in client-side code. Always make API calls from your server-side application to protect your credentials.

Endpoints

Base URL

https://propertyinsights.co.uk/api/v1/

Get Property Valuation

GET
/property/valuation

Returns an automated property valuation using HPI and comparable sales methods, including confidence scores, valuation range, EPC data, and comparable sales.

Request Parameters

ParameterRequiredTypeDefaultDescription
postcodeRequiredStringUK postcode (e.g., "S11 8YH")
addressRequiredStringProperty address line 1 (e.g., "10 Example Road")
cityOptionalStringAuto-detectedCity/town for HPI region lookup. If omitted, resolved automatically from the postcode.
monthsOptionalInteger120Comparable sales lookback period in months (1–120)
extensionAreaOptionalNumber0Planned extension area in m². Added to the existing floor area for valuation.
renovationUpliftOptionalNumber0Quality/renovation uplift percentage (0–50). Applied as a multiplier to the valuation.

Providing the city parameter improves HPI accuracy by avoiding an extra geocoding lookup. The extensionArea and renovationUplift parameters allow modelling "what-if" scenarios for planned improvements.

Billing details in the response

Successful chargeable JSON responses include a top-level billing object. The endpoint examples on this page focus on the endpoint-specific data, so this repeated block may not be shown in every example.

"billing": {
  "mode": "prepaid",
  "creditsCharged": 1,
  "creditsRemaining": 1999,
  "creditsRefreshAt": "2026-08-14T09:30:00.000Z"
}
Field or headerMeaning
billing.creditsCharged
X-Credits-Charged
Credits charged by this call. Failed and non-chargeable calls return 0 in the header.
billing.creditsRemaining
X-Credits-Remaining
The credit balance after the call.
billing.creditsRefreshAt
X-Credits-Refresh-At
The next monthly credit refresh as an ISO 8601 timestamp. Trial and non-renewing balances return null and omit the header.

All authenticated API-key calls expose the billing headers, including validation errors and zero-credit status or management requests. Only successful chargeable JSON responses add the billing object to the response body.

Response Format

The response is returned in JSON format with the following top-level structure:

{
  "success": true,
  "data": {
    "property": {
      "address": "10 Example Road",
      "postcode": "S11 8YH",
      "floorArea": 85,
      "propertyType": "House",
      "lastSale": {
        "price": 180000,
        "date": "2018-06-15",
        "pricePerM2": 2118
      }
    },
    "valuation": {
      "recommended": {
        "value": 245000,
        "method": "Comparables",
        "confidence": 78
      },
      "range": {
        "low": 230000,
        "mid": 245000,
        "high": 260000
      },
      "hpiMethod": {
        "value": 238000,
        "confidence": 62,
        "crossValidated": true,
        "agreementPct": "2.8",
        "details": {
          "lastSalePrice": 180000,
          "lastSaleDate": "2018-06-15",
          "indexAtSale": "112.50",
          "indexNow": "148.30",
          "indexChange": "31.82%",
          "monthsSinceSale": 91,
          "pricePerM2": 2800,
          "pricePerSqFt": 260,
          "priceChange": "32.2%",
          "priceChangeValue": 58000
        }
      },
      "comparablesMethod": {
        "value": 248000,
        "confidence": 78,
        "details": {
          "comparablesUsed": 12,
          "totalComparables": 45,
          "avgPricePerM2": 2920,
          "pricePerM2": 2882,
          "floorArea": 85,
          "totalFloorArea": 85,
          "range": {
            "low": 232000,
            "mid": 248000,
            "high": 264000,
            "spreadPct": 13,
            "p25PerM2": 2730,
            "p50PerM2": 2850,
            "p75PerM2": 3100
          }
        }
      }
    },
    "epc": {
      "currentEnergyRating": "D",
      "tenure": "Freehold",
      "propertyType": "House",
      "totalFloorArea": 85,
      "constructionAgeBand": "1950-1966"
    },
    "comparables": [ ... ]
  }
}

property

Subject property details including address, floor area, property type, and last sale information.

valuation

Valuation results with recommended value, range, and per-method breakdowns.

  • recommended — the highest-confidence valuation with method name and confidence score
  • range — low, mid, and high estimates combining both methods
  • hpiMethod — valuation based on house price index movements (null if no previous sale found)
  • comparablesMethod — valuation based on comparable sales analysis (null if no floor area data)

epc

Energy Performance Certificate data for the property (null if no EPC found).

comparables

Up to 20 nearby comparable property sales used in the valuation calculation.

Examples

Basic Request

GET https://propertyinsights.co.uk/api/v1/property/valuation?postcode=S11%208YH&address=10%20Example%20Road

With Extension & Renovation Uplift

GET https://propertyinsights.co.uk/api/v1/property/valuation?postcode=S11%208YH&address=10%20Example%20Road&extensionArea=20&renovationUplift=10

cURL Example

curl -X GET \
  "https://propertyinsights.co.uk/api/v1/property/valuation?postcode=S11%208YH&address=10%20Example%20Road" \
  -H "x-api-key: YOUR_API_KEY"

JavaScript Fetch Example

const response = await fetch(
  'https://propertyinsights.co.uk/api/v1/property/valuation?' +
  new URLSearchParams({
    postcode: 'S11 8YH',
    address: '10 Example Road',
    city: 'Sheffield',
    extensionArea: 20,
    renovationUplift: 10
  }),
  {
    headers: { 'x-api-key': 'YOUR_API_KEY' }
  }
)

const data = await response.json()
console.log(data.data.valuation.recommended)
// { value: 265000, method: "Comparables", confidence: 78 }

Error Handling

The API uses standard HTTP status codes to indicate the success or failure of requests.

CodeError CodeDescription
400MISSING_POSTCODEPostcode parameter is required
400MISSING_ADDRESSAddress parameter is required
401UNAUTHORIZEDAPI key is missing or invalid
402INSUFFICIENT_CREDITSInsufficient API credits to process this request
422VALUATION_NOT_POSSIBLEUnable to produce a valuation — no previous sale or floor area data available for this property
500INTERNAL_ERRORAn error occurred while calculating the property valuation

Error Response Example

{
  "success": false,
  "error": {
    "code": "VALUATION_NOT_POSSIBLE",
    "message": "Unable to produce a valuation. This may be because no previous sale or floor area data is available for this property.",
    "details": {
      "hpiError": "No previous sale found for this property",
      "comparablesError": "No floor area data available",
      "hpiDataAvailable": true,
      "comparablesAvailable": 23
    }
  }
}

Need Help?

If you need assistance with implementation or have questions about the API, our support team is here to help.