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.
https://landlens.co.uk/api/v1API 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 header401INVALID_KEY — API key not recognised403KEY_REVOKED — Key has been deactivated by an admin403KEY_EXPIRED — Key has passed its expiry date429RATE_LIMITED — Rate limit exceeded for this keyResponse 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.
60 req/min
Standard rate for individual users
120 req/min
Double throughput for teams and heavier workloads
Custom
Configurable per key — set by your account administrator
| Plan Tier | Rate Limit | Notes |
|---|---|---|
| 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
postcodestringUK postcode (e.g. SW1A 1AA). Required if lat/lng not provided.
latnumberLatitude (WGS84). Required if postcode not provided.
lngnumberLongitude (WGS84). Required if postcode not provided.
| Parameter | Type | Default | Description |
|---|---|---|---|
postcode | string | — | UK postcode (e.g. SW1A 1AA). Required if lat/lng not provided. |
lat | number | — | Latitude (WGS84). Required if postcode not provided. |
lng | number | — | 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
}
}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.
postcodelatlngFlood 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
postcodestringUK postcode (e.g. SE1 2BN). Required if lat/lng not provided.
latnumberLatitude (WGS84). Required if postcode not provided.
lngnumberLongitude (WGS84). Required if postcode not provided.
| Parameter | Type | Default | Description |
|---|---|---|---|
postcode | string | — | UK postcode (e.g. SE1 2BN). Required if lat/lng not provided. |
lat | number | — | Latitude (WGS84). Required if postcode not provided. |
lng | number | — | 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
}
}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.
postcodelatlngEPC 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
postcodestringUK postcode (e.g. SW1A 1AA). Required if address not provided.
addressstringStreet address search. Required if postcode not provided.
sizenumberDefault: 100
Max certificates to return (capped at 200)
| Parameter | Type | Default | Description |
|---|---|---|---|
postcode | string | — | UK postcode (e.g. SW1A 1AA). Required if address not provided. |
address | string | — | Street address search. Required if postcode not provided. |
size | number | 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
}
}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.
postcodeaddresssizedefault: 100Price 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
postcodestringrequiredUK postcode to search (e.g. SW11 1JQ)
limitnumberDefault: 200
Max transactions to return (capped at 200)
| Parameter | Type | Default | Description |
|---|---|---|---|
postcoderequired | string | — | UK postcode to search (e.g. SW11 1JQ) |
limit | number | 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
}
}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.
postcodeREQlimitdefault: 200Planning 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
postcodestringrequiredUK postcode to search (must be valid format)
appTypestringFilter by application type code
yearstringFilter by decision year (e.g. 2024)
offsetnumberDefault: 0
Pagination offset
limitnumberDefault: 50
Results per page (max 200)
| Parameter | Type | Default | Description |
|---|---|---|---|
postcoderequired | string | — | UK postcode to search (must be valid format) |
appType | string | — | Filter by application type code |
year | string | — | Filter by decision year (e.g. 2024) |
offset | number | 0 | Pagination offset |
limit | number | 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
}
}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.
postcodeREQappTypeyearoffsetdefault: 0limitdefault: 50Corporate 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
postcodestringrequiredUK postcode to search
modestringDefault: area
"single" for exact postcode only, "area" for nearby postcodes (800m radius)
minValuenumberDefault: 0
Minimum transaction value filter
limitnumberDefault: 100
Max transactions to return (capped at 200)
| Parameter | Type | Default | Description |
|---|---|---|---|
postcoderequired | string | — | UK postcode to search |
mode | string | area | "single" for exact postcode only, "area" for nearby postcodes (800m radius) |
minValue | number | 0 | Minimum transaction value filter |
limit | number | 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
}
}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.
postcodeREQmodedefault: areaminValuedefault: 0limitdefault: 100Data 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
Planned
2026- Endpoint scoping for API keys — create keys that can only call specific endpoints (e.g.
constraints+flood-checkonly). Supports principle of least privilege for enterprise clients. - Webhook notifications for key usage anomalies.
- Batch endpoint for multi-postcode queries.
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.
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)
| Tool | Input | Description |
|---|---|---|
check_constraints | postcode | All 12 constraint layers — conservation, green belt, flood, listed buildings, SSSI, AONB, and more |
flood_check | lat, lng or postcode | Environment Agency flood zone classification (Zone 2 and Zone 3) |
planning_applications | postcode | Planning applications from 417+ local planning authorities via PlanIt |
property_triage | postcode, address? | Site Verdicts™ — Green/Amber/Red planning verdict with extension and development signals |
epc_intelligence | postcode, address? | EPC certificate history enriched with Land Registry sale data |
price_paid | postcode | HM Land Registry Price Paid data — sold prices, dates, property types |
check_constraintsInput: postcode
All 12 constraint layers
flood_checkInput: lat, lng or postcode
Flood zone classification
planning_applicationsInput: postcode
Planning applications from 417+ LPAs
property_triageInput: postcode, address?
Site Verdicts™ — Green/Amber/Red planning verdict
epc_intelligenceInput: postcode, address?
EPC history + sale data
price_paidInput: 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.