Market data

Market Activity API

Sales counts, median prices, year-on-year changes, price per square foot and average holding periods by property type for a postcode district in England or Wales.

Endpoints

Each call costs 1 credit. Requests that return an error are not charged.

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.

When credits run out

If your balance is lower than the cost of a request, the API returns HTTP 402 and charges nothing. The error includes the credits needed, your balance and a link to change plan.

{
  "statusCode": 402,
  "statusMessage": "Payment Required",
  "data": {
    "success": false,
    "error": {
      "code": "INSUFFICIENT_CREDITS",
      "message": "This request costs 35 API credits. Upgrade your plan or wait for your monthly refresh: https://propertyinsights.co.uk/billing",
      "required": 35,
      "available": 12,
      "upgradeUrl": "https://propertyinsights.co.uk/billing"
    }
  }
}

Area market activity

GET/api/v1/area/market-activity

For all homes and each property type in the postcode district: sales in the last 12 complete months, the median price, year-on-year change in both, the median price per square foot and per square metre, and the average holding period from repeat sales of the same address.

NameRequiredTypeDescription
postcodeYesstringFull postcode in England or Wales. Resolved to its postcode district and local authority.

When a district had fewer than 20 sales of a property type, that type uses the local authority figures and area is "localAuthority". Medians, averages and changes based on fewer than 10 sales are null, and the sample sizes are always returned. Price per square foot only uses sales matched to an EPC floor area.

Example request

curl -X GET "https://propertyinsights.co.uk/api/v1/area/market-activity?postcode=BS3%201ZZ" \
  -H "x-api-key: YOUR_API_KEY"

Example response

Illustrative figures for a fictional postcode.

{
  "success": true,
  "data": {
    "postcode": "BS3 1ZZ",
    "postcodeDistrict": "BS3",
    "localAuthorityCode": "E06000023",
    "period": {
      "start": "2025-08-01",
      "end": "2026-07-31"
    },
    "priorPeriod": {
      "start": "2024-08-01",
      "end": "2025-07-31"
    },
    "byPropertyType": {
      "all": {
        "area": "district",
        "areaCode": "BS3",
        "salesCount": 612,
        "salesCountPriorYear": 571,
        "salesCountChangePct": 7.2,
        "medianPrice": 385000,
        "medianPricePriorYear": 372500,
        "medianPriceChangePct": 3.4,
        "medianPricePerSqft": 455,
        "medianPricePerSqm": 4898,
        "floorAreaSampleSize": 498,
        "averageHoldingYears": 9.1,
        "holdingSampleSize": 401
      },
      "detached": {
        "area": "localAuthority",
        "areaCode": "E06000023",
        "salesCount": 268,
        "salesCountPriorYear": 255,
        "salesCountChangePct": 5.1,
        "medianPrice": 560000,
        "medianPricePriorYear": 545000,
        "medianPriceChangePct": 2.8,
        "medianPricePerSqft": 398,
        "medianPricePerSqm": 4284,
        "floorAreaSampleSize": 214,
        "averageHoldingYears": 12.6,
        "holdingSampleSize": 171
      },
      "semiDetached": {
        "area": "district",
        "areaCode": "BS3",
        "salesCount": 74,
        "salesCountPriorYear": 69,
        "salesCountChangePct": 7.2,
        "medianPrice": 452000,
        "medianPricePriorYear": 440000,
        "medianPriceChangePct": 2.7,
        "medianPricePerSqft": 430,
        "medianPricePerSqm": 4628,
        "floorAreaSampleSize": 60,
        "averageHoldingYears": 11.2,
        "holdingSampleSize": 52
      },
      "terraced": {
        "area": "district",
        "areaCode": "BS3",
        "salesCount": 389,
        "salesCountPriorYear": 362,
        "salesCountChangePct": 7.5,
        "medianPrice": 405000,
        "medianPricePriorYear": 390000,
        "medianPriceChangePct": 3.8,
        "medianPricePerSqft": 470,
        "medianPricePerSqm": 5059,
        "floorAreaSampleSize": 318,
        "averageHoldingYears": 8.9,
        "holdingSampleSize": 268
      },
      "flat": {
        "area": "district",
        "areaCode": "BS3",
        "salesCount": 131,
        "salesCountPriorYear": 126,
        "salesCountChangePct": 4,
        "medianPrice": 245000,
        "medianPricePriorYear": 242000,
        "medianPriceChangePct": 1.2,
        "medianPricePerSqft": 418,
        "medianPricePerSqm": 4499,
        "floorAreaSampleSize": 108,
        "averageHoldingYears": 6.4,
        "holdingSampleSize": 72
      }
    },
    "methodology": "Standard Land Registry sales (category A) in the last 12 complete months, compared with the 12 months before.",
    "source": {
      "name": "HM Land Registry Price Paid Data",
      "url": "https://www.gov.uk/government/statistical-data-sets/price-paid-data-downloads",
      "licence": "Open Government Licence v3.0"
    }
  }
}

Sources and coverage

DataSourceGeographyUpdated
Sales, prices and holding periodsHM Land Registry Price Paid DataEngland and WalesMonthly
Floor areasEnergy Performance Certificates, matched to sales by addressEngland and WalesMonthly

Both sources are published under the Open Government Licence v3.0. Figures describe an area, not a single property. Land Registry records sales when they are registered, so the latest month is often incomplete and the 12-month window ends with the last complete month before the latest recorded sale.

OpenAPI specification

Authentication, parameters, billing headers and response schemas are also published in the machine-readable OpenAPI documents in JSON and YAML.