Property Analysis API

Comprehensive property analysis with sold comparables, crime data, council tax, schools and market intelligence

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

Overview

The Property Analysis API provides comprehensive property insights by orchestrating multiple data sources in a single request. Given a postcode and asking price, it returns sold comparables, crime statistics, council tax bands, house price index trends, nearby schools, and market intelligence scores.

Data included in the response:

  • Area data — average/median prices, price changes (1yr/5yr/10yr), rental yield estimates, price distribution
  • Sold comparables — up to 10 nearby comparable sales with price per sq ft where EPC data is available
  • Crime statistics — crime score, crime rate classification, and category breakdown
  • Council tax — local authority and tax bands A–H
  • Nearby schools — Ofsted ratings, Progress 8 scores, distance and pupil numbers
  • Market insights — investment score, buy/hold/avoid recommendation, demand & supply levels, growth potential, key risks
  • HPI history — regional house price index data

This API is ideal for:

  • Property platforms requiring automated area analysis
  • Mortgage brokers and lenders needing property value verification
  • Estate agents building custom valuation tools
  • Property investors analysing potential purchases
  • PropTech applications needing comprehensive property data in one call

Important Note

Market insights and scores are algorithmically generated and should be considered as part of a broader analysis strategy. For legal purposes, we recommend complementing our API data with professional surveyor valuations.

Authentication

All requests to the Property Analysis 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/

Analyse Property

GET
/property/analyse

Returns comprehensive property analysis including area statistics, sold comparables, crime data, council tax, nearby schools, and market intelligence for a given postcode and price.

Request Parameters

ParameterRequiredTypeDescription
postcodeRequiredStringUK postcode (e.g., "SW1A 1AA")
priceRequiredIntegerProperty price in GBP (e.g., 350000)
propertyTypeOptionalStringProperty type: Detached, Semi-detached, Terraced, or Flat
bedroomsOptionalIntegerNumber of bedrooms (used for comparable filtering)
squareFeetOptionalIntegerProperty size in square feet
squareMetersOptionalIntegerProperty size in square metres
addressOptionalStringProperty address for better EPC matching
latOptionalFloatLatitude coordinate
lngOptionalFloatLongitude coordinate

Providing optional parameters such as propertyType, bedrooms, and squareFeet will improve the accuracy of comparable filtering and market insights.

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": {
    "areaData": { ... },
    "postcodeData": { ... },
    "transportData": { ... },
    "marketInsights": { ... },
    "comparables": [ ... ]
  }
}

areaData

Area-level price statistics and market trends.

{
  "averagePrice": 325000,
  "medianPrice": 310000,
  "priceChange1Year": 3.2,
  "priceChange5Year": 18.5,
  "pricePerSqFt": 285,
  "averageRent": 1219,
  "rentalYield": 4.5,
  "daysOnMarket": 45,
  "totalSalesLast12Months": 24,
  "priceDistribution": {
    "min": 180000, "q1": 260000, "median": 310000, "q3": 380000, "max": 550000
  },
  "hpiHistory": [ ... ]
}

postcodeData

Local area information including crime, council tax, and schools.

{
  "postcode": "SW1A 2AA",
  "district": "Westminster",
  "crimeRate": "Moderate",
  "crimeScore": 5.5,
  "crimeBreakdown": {
    "total": 452, "violent": 120, "burglary": 34, "vehicleCrime": 28, "antisocial": 89
  },
  "councilTax": {
    "authority": "City of Westminster",
    "taxYear": "2026-27",
    "bandA": 699.7, "bandB": 816.32, "bandC": 932.93, "bandD": 1049.55, ...
  },
  "schoolRating": 7.2,
  "nearbySchools": [
    {
      "name": "Example Academy",
      "ofstedRating": "Good",
      "phase": "Secondary",
      "distance": 0.8,
      "progress8Score": 0.45,
      "pupils": 1200
    }
  ]
}

marketInsights

Algorithmic market analysis and investment scoring.

{
  "recommendation": "Buy",
  "priceVsMarket": -4.2,
  "priceVsMarketText": "4.2% below area average",
  "growthPotential": "High",
  "investmentScore": 7.8,
  "demandLevel": "High",
  "supplyLevel": "Low",
  "marketTrend": "Rising",
  "keyInsights": [ "Strong school ratings...", "Below average crime..." ],
  "risks": [ "Property priced above comparable average..." ]
}

comparables

Up to 10 nearby comparable property sales.

[
  {
    "address": "12 Nearby Street",
    "postcode": "SW1A 2AB",
    "price": 320000,
    "bedrooms": 3,
    "propertyType": "Semi-detached",
    "soldDate": "2025-11-15",
    "distance": 0.2,
    "pricePerSqFt": 275,
    "newBuild": false
  }
]

Examples

Basic Request

GET https://propertyinsights.co.uk/api/v1/property/analyse?postcode=SW1A%202AA&price=350000

Request with Optional Parameters

GET https://propertyinsights.co.uk/api/v1/property/analyse?postcode=SW1A%202AA&price=350000&propertyType=Semi-detached&bedrooms=3&squareFeet=1100

cURL Example

curl -X GET \
  "https://propertyinsights.co.uk/api/v1/property/analyse?postcode=SW1A%202AA&price=350000" \
  -H "x-api-key: YOUR_API_KEY"

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_PRICEPrice parameter is required
400INVALID_PRICEPrice must be a valid positive number
401UNAUTHORIZEDAPI key is missing or invalid
402INSUFFICIENT_CREDITSInsufficient API credits to process this request
500INTERNAL_ERRORAn error occurred while analysing the property

Error Response Example

{
  "success": false,
  "error": {
    "code": "MISSING_POSTCODE",
    "message": "Postcode parameter is required"
  }
}

Need Help?

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