Back to LandLens

API Reference

Programmatic access to the full LandLens planning intelligence suite. Query site constraints, flood zones, EPC data, price paid records, planning applications and corporate ownership — all through versioned REST endpoints with consistent JSON responses.

v1 — StableBase URL: https://landlens.co.uk/api/v1

API Key Auth

Bearer token authentication via ll_ prefixed keys. Each key has independent rate limits and usage tracking.

Rate Limited

Default 60 requests per minute per key. Configurable per key. Clear error responses with 429 status when exceeded.

Live Data

All responses are real-time queries against official UK government APIs — Environment Agency, Land Registry, EPC register and OS. Powered by official UK government and geospatial datasets.

Authentication

All API requests require a valid API key passed in the Authorization header using the Bearer scheme:

Authorization: Bearer ll_a1b2c3d4e5f6...

API keys are provisioned by your LandLens account administrator. Each key begins with the prefix ll_ followed by 64 hexadecimal characters. Keys are shown once at creation — store them securely.

All API requests must use HTTPS. Plain HTTP requests are rejected. All example URLs in this documentation use https:// — ensure your integration does the same.

Error Codes

401AUTH_REQUIRED — Missing or malformed Authorization header
401INVALID_KEY — API key not recognised
403KEY_REVOKED — Key has been deactivated by an admin
403KEY_EXPIRED — Key has passed its expiry date
429RATE_LIMITED — Rate limit exceeded for this key

Response Format

Every response uses a consistent JSON envelope. Successful responses return 200 with this structure:

{
  "success": true,
  "data": {
    "...": "endpoint-specific payload"
  },
  "meta": {
    "endpoint": "/v1/...",
    "latencyMs": 842
  }
}

Error responses include a machine-readable code:

{
  "success": false,
  "error": {
    "message": "Human-readable error description",
    "status": 400,
    "code": "INVALID_PARAMS"
  }
}

The API is designed for server-to-server integration. Browser-based integrations should proxy requests through your own backend to keep API keys secret. Allow-listed origins are available for enterprise customers on request.

Rate Limits

Each API key has a per-minute request limit. When exceeded, the API returns 429 Too Many Requests with the error code RATE_LIMITED.

Solo

60 req/min

Standard rate for individual users

Team

120 req/min

Double throughput for teams and heavier workloads

Enterprise

Custom

Configurable per key — set by your account administrator

Rate limit windows reset every 60 seconds. If you need higher limits, contact your account administrator or our sales team.

Endpoints

Site Constraints

Returns a comprehensive constraint check for a given location — flood risk (zones 2 & 3 powered by Environment Agency data), conservation area status, green belt, listed buildings within 150m, and Article 4 directions. Accepts a UK postcode or explicit lat/lng coordinates. Powered by official UK government and geospatial datasets.

Query Parameters

postcodestring

UK postcode (e.g. SW1A 1AA). Required if lat/lng not provided.

latnumber

Latitude (WGS84). Required if postcode not provided.

lngnumber

Longitude (WGS84). Required if postcode not provided.

Example Request

curl -H "Authorization: Bearer ll_YOUR_API_KEY" \
  "https://landlens.co.uk/api/v1/constraints?postcode=SW1A+1AA"

Example Response

{
  "success": true,
  "data": {
    "constraints": {
      "floodZone2": false,
      "floodZone3": false,
      "conservationArea": true,
      "conservationAreaName": "Westminster",
      "greenBelt": false,
      "listedBuildingsNearby": 3,
      "listedBuildingNames": [
        {
          "name": "10 Downing Street",
          "grade": "I"
        },
        {
          "name": "Foreign Office",
          "grade": "I"
        },
        {
          "name": "Treasury Building",
          "grade": "II*"
        }
      ],
      "article4": false,
      "article4Name": null
    },
    "location": {
      "lat": 51.5014,
      "lng": -0.1419,
      "postcode": "SW1A 1AA"
    }
  },
  "meta": {
    "endpoint": "/v1/constraints",
    "latencyMs": 842
  }
}
Try it live

Saved in your browser — never sent to our servers except as the Authorization header

Security warning: Do not use your production API key here. Create a separate test key in your admin panel for use in this console. Production keys stored in browsers are a security risk on shared or public machines.

postcode
lat
lng

Flood Zone Check

Performs an authoritative flood zone assessment for a single location, determining whether the point falls within Flood Zone 2 or Flood Zone 3. Accepts a UK postcode or explicit lat/lng coordinates. Powered by official UK government and geospatial datasets.

Query Parameters

postcodestring

UK postcode (e.g. SE1 2BN). Required if lat/lng not provided.

latnumber

Latitude (WGS84). Required if postcode not provided.

lngnumber

Longitude (WGS84). Required if postcode not provided.

Example Request

curl -H "Authorization: Bearer ll_YOUR_API_KEY" \
  "https://landlens.co.uk/api/v1/flood-check?postcode=SE1+2BN"

Example Response

{
  "success": true,
  "data": {
    "floodZone2": false,
    "floodZone3": false,
    "serviceAvailable": true,
    "location": {
      "lat": 51.4994,
      "lng": -0.088,
      "postcode": "SE1 2BN"
    }
  },
  "meta": {
    "endpoint": "/v1/flood-check",
    "latencyMs": 312
  }
}
Try it live

Saved in your browser — never sent to our servers except as the Authorization header

Security warning: Do not use your production API key here. Create a separate test key in your admin panel for use in this console. Production keys stored in browsers are a security risk on shared or public machines.

postcode
lat
lng

EPC Intelligence

Returns Energy Performance Certificate data for a postcode or address, enriched with HM Land Registry sale data. Each certificate includes the original sale date, sale amount, months between sale and EPC lodgement, and a new-build flag. Powered by official UK government and geospatial datasets.

Query Parameters

postcodestring

UK postcode (e.g. SW1A 1AA). Required if address not provided.

addressstring

Street address search. Required if postcode not provided.

sizenumber

Default: 100

Max certificates to return (capped at 200)

Example Request

curl -H "Authorization: Bearer ll_YOUR_API_KEY" \
  "https://landlens.co.uk/api/v1/epc?postcode=SW1A+1AA&size=5"

Example Response

{
  "success": true,
  "data": {
    "count": 2,
    "certificates": [
      {
        "address1": "Flat 1",
        "address2": "10 DOWNING STREET",
        "postcode": "SW1A 1AA",
        "current-energy-rating": "C",
        "current-energy-efficiency": "72",
        "property-type": "Flat",
        "built-form": "Mid-Terrace",
        "total-floor-area": "85",
        "lodgement-date": "2022-03-15",
        "is-new-build": false,
        "original-sale-date": "2021-11-02",
        "original-sale-amount": 650000,
        "months-since-sale": 4,
        "is-post-sale-epc": true
      }
    ],
    "saleDataAvailable": true
  },
  "meta": {
    "endpoint": "/v1/epc",
    "latencyMs": 1240
  }
}
Try it live

Saved in your browser — never sent to our servers except as the Authorization header

Security warning: Do not use your production API key here. Create a separate test key in your admin panel for use in this console. Production keys stored in browsers are a security risk on shared or public machines.

postcode
address
sizedefault: 100

Price Paid Data

Returns HM Land Registry Price Paid transaction history for a given postcode, including sale price, date, property type, tenure, and new-build status. Powered by official UK government and geospatial datasets.

Query Parameters

postcodestringrequired

UK postcode to search (e.g. SW11 1JQ)

limitnumber

Default: 200

Max transactions to return (capped at 200)

Example Request

curl -H "Authorization: Bearer ll_YOUR_API_KEY" \
  "https://landlens.co.uk/api/v1/price-paid?postcode=SW11+1JQ&limit=10"

Example Response

{
  "success": true,
  "data": {
    "transactions": [
      {
        "paon": "42",
        "saon": "",
        "street": "BATTERSEA RISE",
        "town": "LONDON",
        "county": "GREATER LONDON",
        "postcode": "SW11 1JQ",
        "amount": 875000,
        "date": "2024-06-14",
        "category": "Standard Price Paid",
        "newBuild": false
      }
    ],
    "totalResults": 47,
    "postcode": "SW11 1JQ",
    "coordinates": {
      "lat": 51.4618,
      "lng": -0.1642
    }
  },
  "meta": {
    "endpoint": "/v1/price-paid",
    "latencyMs": 1830
  }
}
Try it live

Saved in your browser — never sent to our servers except as the Authorization header

Security warning: Do not use your production API key here. Create a separate test key in your admin panel for use in this console. Production keys stored in browsers are a security risk on shared or public machines.

postcodeREQ
limitdefault: 200

Planning Applications

Returns recent planning applications near a UK postcode, including application reference, description, address, decision status, dates, LPA name, and links to documentation. Supports filtering by application type and year. Powered by official UK government and geospatial datasets.

Query Parameters

postcodestringrequired

UK postcode to search (must be valid format)

appTypestring

Filter by application type code

yearstring

Filter by decision year (e.g. 2024)

offsetnumber

Default: 0

Pagination offset

limitnumber

Default: 50

Results per page (max 200)

Example Request

curl -H "Authorization: Bearer ll_YOUR_API_KEY" \
  "https://landlens.co.uk/api/v1/planning-applications?postcode=EC2R+8AH&limit=3"

Example Response

{
  "success": true,
  "data": {
    "applications": [
      {
        "reference": "2024/01234/FULL",
        "description": "Demolition of existing rear extension and erection of a three-storey rear extension",
        "address": "15 Threadneedle Street, London, EC2R 8AH",
        "appType": "Full",
        "decisionDate": "2024-08-22",
        "startDate": "2024-05-10",
        "status": "Approved",
        "lpaName": "City of London",
        "documentUrl": "https://www.planning2.cityoflondon.gov.uk/...",
        "postcode": "EC2R 8AH",
        "location": {
          "lat": 51.5138,
          "lng": -0.0839
        }
      }
    ],
    "total": 28,
    "offset": 0,
    "limit": 3,
    "postcode": "EC2R 8AH"
  },
  "meta": {
    "endpoint": "/v1/planning-applications",
    "latencyMs": 950
  }
}
Try it live

Saved in your browser — never sent to our servers except as the Authorization header

Security warning: Do not use your production API key here. Create a separate test key in your admin panel for use in this console. Production keys stored in browsers are a security risk on shared or public machines.

postcodeREQ
appType
year
offsetdefault: 0
limitdefault: 50

Corporate Ownership

Returns HM Land Registry Price Paid transactions associated with corporate and institutional activity near a postcode, with summary statistics and street-level aggregation. Powered by official UK government and geospatial datasets.

Query Parameters

postcodestringrequired

UK postcode to search

modestring

Default: area

"single" for exact postcode only, "area" for nearby postcodes (800m radius)

minValuenumber

Default: 0

Minimum transaction value filter

limitnumber

Default: 100

Max transactions to return (capped at 200)

Example Request

curl -H "Authorization: Bearer ll_YOUR_API_KEY" \
  "https://landlens.co.uk/api/v1/corporate-ownership?postcode=E14+5AB&mode=area&limit=5"

Example Response

{
  "success": true,
  "data": {
    "transactions": [
      {
        "paon": "1",
        "saon": "Flat 2401",
        "street": "PAN PENINSULA SQUARE",
        "town": "LONDON",
        "county": "GREATER LONDON",
        "postcode": "E14 9HN",
        "amount": 1250000,
        "date": "2023-11-03",
        "category": "Additional Price Paid",
        "propertyType": "Flat/Maisonette",
        "newBuild": false,
        "estateType": "Leasehold"
      }
    ],
    "totalResults": 34,
    "totalValue": 28750000,
    "avgPrice": 845588,
    "postcode": "E14 5AB"
  },
  "meta": {
    "endpoint": "/v1/corporate-ownership",
    "latencyMs": 2140
  }
}
Try it live

Saved in your browser — never sent to our servers except as the Authorization header

Security warning: Do not use your production API key here. Create a separate test key in your admin panel for use in this console. Production keys stored in browsers are a security risk on shared or public machines.

postcodeREQ
modedefault: area
minValuedefault: 0
limitdefault: 100

Data Quality and Methodology

Flood Zones

LandLens uses true geometric point-in-polygon verification against the Environment Agency Flood Map for Planning Web Feature Service. Each postcode coordinate is tested against the actual polygon geometry of flood zone boundaries — not bounding box approximation. This methodology was validated and updated in April 2026 after identifying and fixing a false positive issue that affected postcodes near but not inside flood zone boundaries. Accuracy: 98%.

Article 4 Directions

LandLens queries the article-4-direction-area dataset from planning.data.gov.uk using a 150m buffer polygon search centred on the postcode coordinate. This catches edge cases where the postcode centroid falls just outside an Article 4 boundary — a common issue with point-only intersection queries.

Listed Buildings

LandLens queries the full listed-building dataset from Historic England containing 382,193 entities using a 150m buffer search. The full dataset is used rather than the listed-building-outline dataset which only covers approximately 30% of listed buildings due to incomplete polygon digitisation.

Conservation Areas

LandLens uses direct geometry intersection against conservation area polygons from planning.data.gov.uk. Results include the conservation area name where available.

Green Belt

LandLens queries green belt boundaries from planning.data.gov.uk using point-in-polygon intersection. Green belt boundaries are updated as local authorities submit revised data.

Planning Complexity Score

A composite score from 1 to 10, calculated from 9 constraint layers: Flood Zone 2/3, Conservation Area, Green Belt, Listed Buildings, Article 4, AONB, National Park, Ancient Woodland, and SSSI. Each constraint contributes a weighted number of points (e.g. National Park +3, Conservation Area +2, Listed Building +1 per building up to 3). The score is capped at 10 and classified as Low (1–3), Moderate (4–6), or High (7–10) complexity. Available on all plans and included in constraint API responses and PDF reports.

Data Sources

All constraint data is sourced in real time from official UK government APIs under Open Government Licence v3.0. OS Data Hub Premium is used exclusively for map tile visualisation within the LandLens web application and is not part of the API data layer.

Getting Started

Get an API Key

Contact your account administrator or reach out to our sales team. Keys are provisioned through the LandLens admin panel.

Make Your First Call

Add your key to the Authorization header and query any endpoint. Start with /v1/constraints — it's the simplest.

Integrate & Build

Use the consistent JSON responses to power your own applications, reports, or workflows. Track usage via the admin dashboard.

Quick test with curl

# Replace ll_YOUR_API_KEY with your actual key
curl -H "Authorization: Bearer ll_YOUR_API_KEY" \
  "https://landlens.co.uk/api/v1/flood-check?lat=51.5074&lng=-0.1278"

Changelog

Next

Planned

2026
  • Endpoint scoping for API keys — create keys that can only call specific endpoints (e.g. constraints + flood-check only). Supports principle of least privilege for enterprise clients.
  • Webhook notifications for key usage anomalies.
  • Batch endpoint for multi-postcode queries.
v1.1

MCP Server

May 2026
  • MCP (Model Context Protocol) server at /mcp — Streamable HTTP transport, JSON-RPC 2.0.
  • Six tools available: check_constraints, flood_check, planning_applications, property_triage (Site Verdicts™), epc_intelligence, price_paid.
  • Same API key authentication and rate limits as the REST API.
  • Compatible with Claude Desktop, ChatGPT Actions, Microsoft Copilot, and any MCP-compliant client.
v1.0

Initial Release

April 2026
  • Six versioned endpoints — constraints, flood check, EPC intelligence, price paid, planning applications and corporate ownership.
  • Bearer token authentication with SHA-256 hashed API keys, per-key rate limiting and full usage analytics.
  • Authoritative flood zone verification powered by Environment Agency datasets.
  • EPC intelligence cross-referenced with HM Land Registry sale records for richer property context.
  • Consistent JSON response envelope across all endpoints with machine-readable error codes.
  • Designed for server-to-server integration with allow-listed origins available for enterprise customers.

MCP Server

AI Assistant Integration

LandLens exposes the same planning intelligence tools via the Model Context Protocol (MCP) — an open standard that lets AI assistants like ChatGPT, Claude, and Copilot call external tools programmatically.

Protocol

JSON-RPC 2.0

Endpoint

POST /mcp

Auth

Bearer <API key>

Available Tools (6)

check_constraints

Input: postcode

All 12 constraint layers

flood_check

Input: lat, lng or postcode

Flood zone classification

planning_applications

Input: postcode

Planning applications from 417+ LPAs

property_triage

Input: postcode, address?

Site Verdicts™ — Green/Amber/Red planning verdict

epc_intelligence

Input: postcode, address?

EPC history + sale data

price_paid

Input: postcode

Land Registry sold prices

Discover Available Tools

curl -X POST https://landlens.co.uk/mcp \
  -H "Authorization: Bearer ll_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "tools/list"
  }'

Call a Tool

curl -X POST https://landlens.co.uk/mcp \
  -H "Authorization: Bearer ll_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "id": 2,
    "method": "tools/call",
    "params": {
      "name": "check_constraints",
      "arguments": { "postcode": "SW1A 2AA" }
    }
  }'

Example Response

{
  "jsonrpc": "2.0",
  "id": 2,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "{ \"constraints\": { \"conservationArea\": false, \"greenBelt\": false, \"floodZone2\": false, \"floodZone3\": false, \"listedBuildingsNearby\": 12, ... }, \"location\": { \"lat\": 51.5014, \"lng\": -0.1419, \"postcode\": \"SW1A 2AA\" } }"
      }
    ]
  }
}

Connect Your AI Assistant

Add LandLens to your AI assistant's MCP configuration. The server uses Streamable HTTP transport with the same API keys as the REST API — no separate credentials needed.

Claude Code / Direct HTTP Config

{
  "mcpServers": {
    "landlens": {
      "type": "streamable-http",
      "url": "https://landlens.co.uk/mcp",
      "headers": {
        "Authorization": "Bearer ll_YOUR_API_KEY"
      }
    }
  }
}

Claude Desktop (Windows / macOS)

Claude Desktop requires the mcp-remote bridge. Add this to your claude_desktop_config.json:

{
  "mcpServers": {
    "landlens": {
      "command": "npx",
      "args": [
        "mcp-remote",
        "https://landlens.co.uk/mcp",
        "--header",
        "Authorization:Bearer ll_YOUR_API_KEY"
      ]
    }
  }
}

Config file: %APPDATA%\Claude\claude_desktop_config.json (Win) · macOS: see MCP docs. Restart Claude Desktop after saving.

The tools/list method is publicly accessible for directory discovery purposes (e.g. Smithery). This returns only tool names and descriptions — no data. All tool execution requires a valid Bearer token.

The MCP server returns only derived text-based conclusions (booleans, names, counts). No raw geographic data, boundary geometries, or Ordnance Survey map data is served through MCP. All government data is sourced under the Open Government Licence v3.0.

Need help integrating?

Our team can help you get set up. Enterprise clients get dedicated technical onboarding.

Contact Us