Developers

Free UK land data API

Sold prices, land guide values, registered parcels and planning constraints for any point in England. No key, no sign-up, JSON in, attribution out.

We built this for developers, researchers and AI agents that need honest UK land data and keep ending up with whichever source has the most aggressive marketing. It is the same data that powers our Plot Reports and valuation tool: HM Land Registry price-paid data, INSPIRE polygons and planning.data.gov.uk designations, all Open Government Licence, with our own calculations on top.

GET /sold-prices

HM Land Registry price-paid sales at a postcode (or the nearest postcodes when there are none), each uprated to today's value with the UK House Price Index.

postcoderequired — any full UK postcode
limitoptional — 1 to 25, default 10
curl "https://buyland.co.uk/api/v1/sold-prices?postcode=CW5%207PX&limit=3"
Example response
{
  "postcode": "CW5 7PX",
  "scope": "nearby",
  "district": "Cheshire East",
  "region": "North West",
  "count": 3,
  "sales": [
    {
      "price_paid": 250000,
      "date": "May 2009",
      "address": "Bridgemere Wildlife Park, Bridgemere",
      "estimated_today": { "value": 412000, "uplift_pct": 64.8, "index_month": "2026-06", "region_index": "North West" }
    }
  ],
  "source_url": "https://buyland.co.uk/property-valuation?postcode=CW5%207PX",
  "attribution": "Data provided by BuyLand.co.uk ... Open Government Licence v3.0."
}

GET /land-value

A guide value range for a plot from regional per-acre rates, land type and planning status. Plots under 0.05 acres switch to the small-plot (adjacency) model.

postcoderequired
acresrequired — 0.0001 to 10000
land_typeoptional — Agricultural (default), Woodland, Pasture, Equestrian, Residential Plot, Commercial, Mixed
planningoptional — true if residential planning permission exists
road_accessoptional — true/false
curl "https://buyland.co.uk/api/v1/land-value?postcode=GL7%205NX&acres=2.5&land_type=Pasture"
Example response
{
  "postcode": "GL7 5NX",
  "acres": 2.5,
  "land_type": "Pasture",
  "planning": false,
  "low": 21000,
  "mid": 27000,
  "high": 34000,
  "price_per_acre": 10800,
  "region": "South West",
  "method": "regional-floor",
  "factors": [{ "label": "Pasture in the South West", "impact": "" }],
  "note": "Indicative guide value only. ...",
  "source_url": "https://buyland.co.uk/valuation",
  "attribution": "..."
}

GET /property-value

An indicative value for a dwelling, from HM Land Registry sales at (or near) the postcode uprated to today with the UK House Price Index. Not a survey or mortgage valuation.

postcoderequired
bedroomsoptional — 1 to 6, default 3
bathroomsoptional — 1 to 4, default 1
curl "https://buyland.co.uk/api/v1/property-value?postcode=CW5%207PX&bedrooms=4"
Example response
{
  "postcode": "CW5 7PX",
  "bedrooms": 4,
  "bathrooms": 1,
  "found": true,
  "low": 630000,
  "mid": 700000,
  "high": 770000,
  "comparables_used": 2,
  "comparables_scope": "postcode",
  "district": "Cheshire East",
  "region": "North West",
  "method": "index-uprated-comparables",
  "note": "Indicative value for a dwelling from local sold prices ...",
  "source_url": "https://buyland.co.uk/property-valuation?postcode=CW5%207PX",
  "attribution": "..."
}

Land value or property value? Choosing the right one

The two valuation endpoints answer different questions and give very different numbers for the same postcode. /land-value prices the ground: bare fields, paddocks, woodland, plots. /property-value prices a dwelling: what a house or flat there sells for. Running the wrong one is the commonest way to get a wildly wrong answer.

  1. If you know the land type, decide directly: a house, flat or bungalow → /property-value; field, paddock, woodland, garden strip, building plot → /land-value (with planning=true if consent exists).
  2. If you only have a location, call /parcel first. It returns buildings_count (mapped buildings inside the registered parcel) and a suggested_valuation field that says which endpoint to use, plus the parcel's area_acres to pass to /land-value.
  3. A house with grounds is both: /property-value for the dwelling and /land-value for any land beyond a normal garden (roughly 0.4 acres). Don't add the two mechanically; the site's valuation tool handles that case.
  4. Plots under 0.05 acres (garden slivers, verges) are priced on what they unlock for the neighbour, not per acre — /land-value switches to that model automatically.

Both endpoints return method so you can tell a caller how the number was produced, and source_url for the page that explains it.

GET /parcel

The registered-land parcel (HM Land Registry INSPIRE polygon) containing a point, with area, simplified GeoJSON geometry, the number of mapped buildings inside it, and which valuation endpoint fits.

latrequired — WGS84 latitude
lngrequired — WGS84 longitude
postcodeoptional — loads the local authority's parcels if we haven't cached that area yet
curl "https://buyland.co.uk/api/v1/parcel?lat=53.0066&lng=-2.4257&postcode=CW5%207PX"
Example response
{
  "found": true,
  "inspire_id": "20765559",
  "area_sqm": 2501,
  "area_acres": 0.618,
  "centroid": { "lat": 53.00664, "lng": -2.42570 },
  "buildings_count": 0,
  "suggested_valuation": "land-value",
  "geometry": { "type": "Polygon", "coordinates": [[[-2.4262, 53.0064], ...]] },
  "note": "INSPIRE polygons show the indicative extent of a registered title, not the legal boundary. ...",
  "source_url": "https://buyland.co.uk/report?lat=53.0066&lng=-2.4257",
  "attribution": "..."
}

GET /constraints

Which national planning designations intersect a small square around a point: flood zone, green belt, AONB, national park, conservation area, listed buildings, scheduled monuments, SSSI, ancient woodland, TPO zones, common land, Article 4 areas and the brownfield register. 13 of the 35 checks in a Plot Report.

latrequired
lngrequired
radius_moptional — half-width of the square in metres, 5 to 250, default 25
curl "https://buyland.co.uk/api/v1/constraints?lat=51.2287&lng=-0.4000&radius_m=50"
Example response
{
  "lat": 51.2287,
  "lng": -0.4,
  "radius_m": 50,
  "checks": [
    { "key": "flood_zone", "title": "Flood zone (rivers & sea)", "present": false, "entities": [] },
    { "key": "green_belt", "title": "Green belt", "present": true, "entities": [{ "name": "Mole Valley", "reference": "...", "dataset": "green-belt" }] },
    { "key": "aonb", "title": "National Landscape (AONB)", "present": true, "entities": [{ "name": "Surrey Hills", "reference": "...", "dataset": "area-of-outstanding-natural-beauty" }] },
    { "key": "sssi", "title": "SSSI", "present": true, "entities": [{ "name": "Hackhurst and White Downs SSSI", "reference": "...", "dataset": "site-of-special-scientific-interest" }] }
  ],
  "flagged": ["green_belt", "aonb", "sssi"],
  "note": "13 of the 35 checks in a BuyLand Plot Report ...",
  "source_url": "https://buyland.co.uk/report?lat=51.2287&lng=-0.4",
  "attribution": "..."
}

Quick starts

JavaScript (browser or Node 18+):

const r = await fetch("https://buyland.co.uk/api/v1/sold-prices?postcode=SW1A%201AA");
const data = await r.json();
console.log(data.sales[0], data.attribution);

Python:

import requests
r = requests.get("https://buyland.co.uk/api/v1/constraints", params={"lat": 51.2287, "lng": -0.4})
data = r.json()
print(data["flagged"], data["source_url"])

For LLM tool use, point your agent at the OpenAPI spec:

https://buyland.co.uk/api/v1/openapi.json

What is deliberately not here

Anything that costs a statutory fee. Official title registers, title plans and filed deeds are ordered through the site at cost (£7.50 per document, the HM Land Registry fee plus 50p) and never through this API. The full Plot Report (35 checks, planning history, access, structures, valuation, narrative) is likewise a product, not an endpoint: the constraints endpoint gives you the free third of it and links to the rest.

Attribution and licences

Sold prices contain HM Land Registry data © Crown copyright and database right 2026. Parcels are derived from HM Land Registry INSPIRE Index Polygons © Crown copyright and database rights. Designations come from planning.data.gov.uk (MHCLG and contributing bodies). All are licensed under the Open Government Licence v3.0. Valuations and constraint groupings are BuyLand's own work and are provided as indicative information, not advice.

Use the attribution string from each response, and link to its source_url. If you build something with this, we'd genuinely like to hear about it: info@buyland.co.uk.