Real Estate & Property
Planning and Zoning Intelligence API
The answer to what you can build on a site exists. It is distributed across a local plan, a policies map, three constraint designations and a decision notice from 2017.
- Developers
- Planning consultants
- Property portals
- Lenders
- Site-sourcing platforms
What your customers would see
example interfaceMockupIllustrative mockup of the interface we would build. Figures shown are examples, not results from a live deployment.
The problem this solves
Establishing the planning position of a site is a research task that has barely been digitised. The information is public, which is often taken to mean accessible, but in practice it means a planning policy document of several hundred pages, a separate policies map in a viewer that does not export, constraint layers held by different authorities in different formats, and a planning history of scanned decision notices with the conditions in prose.
A consultant does this well in a day or two per site. That is fine for a single acquisition and impossible for screening two hundred sites, which is exactly what a developer or a site-sourcing platform needs to do. The bottleneck has pushed the industry towards screening on crude proxies — size, current use, whether anything has been applied for recently — and missing sites whose constraints are more favourable than they look.
The extraction problem is real but tractable. Decision notices have recognisable structure, conditions follow recurring forms, and designations are increasingly published as spatial data. What cannot be automated is interpretation: whether a policy applies to a particular proposal is a judgement, and a system that presents its reading of a policy as a determination of what is permitted would be worse than no system at all.
Who buys this
Developers, Planning consultants, Property portals, Lenders, Site-sourcing platforms
What the API returns
What comes back
- Designations and constraints intersecting a site boundary, with the source and date of each
- Permitted and restricted use classes under the applicable zoning or local plan allocation
- Height, density, coverage and massing parameters where the plan states them
- Planning history for the site and its immediate neighbours, with outcomes
- Conditions extracted from decision notices as structured, categorised text
- Relevant policy references with the specific passages located rather than the whole document
- Comparable determinations nearby, for similar proposals and their outcomes
- An explicit uncertainty marker wherever the position depends on interpretation rather than fact
Endpoints
| Method | Path | Returns |
|---|---|---|
| GET | /v1/sites/constraints | Designations and constraints intersecting a site |
| POST | /v1/sites/assess | Permitted uses and parameters for a site boundary |
| GET | /v1/sites/history | Planning application history for a site and neighbours |
| POST | /v1/documents/extract | Extract structured conditions and parameters from a planning document |
| GET | /v1/policies/search | Locate relevant policy passages for a proposal type |
| GET | /v1/determinations/comparable | Nearby determinations for similar proposals |
Request and response
illustrativeRequest
{
"site": {
"boundary_geojson": { "type": "Polygon", "coordinates": "..." },
"area_sqm": 2840,
"current_use_class": "B8",
"authority": "leeds"
},
"proposal": { "use_class": "C3", "units": 32, "storeys": 5 },
"include": ["constraints", "policy_refs", "history", "comparables"]
}Response
{
"authority": "leeds",
"plan": { "name": "Local Plan", "adopted": "2024-07-11", "allocation": "mixed_use_MX12" },
"constraints": [
{ "designation": "conservation_area", "name": "Ashbourne Mills", "overlap_pct": 41,
"source": "authority_spatial_data", "updated": "2026-03-02", "effect": "design_and_demolition_controls" },
{ "designation": "flood_zone", "name": "Zone 2", "overlap_pct": 100,
"source": "national_flood_map", "updated": "2026-08-19", "effect": "sequential_test_likely" },
{ "designation": "tpo", "name": "TPO 1998/14", "overlap_pct": 6,
"source": "authority_register", "updated": "2025-11-04", "effect": "tree_retention" }
],
"use_assessment": {
"proposed_use_class": "C3",
"allocation_supports": "likely",
"basis": "MX12 allocation lists residential among acceptable uses",
"interpretation_required": true
},
"parameters_stated_in_plan": {
"max_storeys": 5,
"min_affordable_pct": 20,
"parking_standard": "0.5_spaces_per_unit"
},
"history": [
{ "reference": "17/04412/FU", "proposal": "Change of use to light industrial",
"decision": "approved", "decided": "2017-09-22",
"conditions_extracted": 14, "notable": ["hours_of_operation", "noise_assessment"] }
],
"comparables": [
{ "reference": "24/01188/FU", "distance_m": 240, "proposal": "28 dwellings, 5 storeys",
"decision": "approved_with_conditions", "affordable_pct": 20 }
],
"caveat": "Policy applicability is an interpretation. This is structured research, not a planning determination."
}Where the data comes from
| Authority planning registers | Applications, decisions and decision notices published by local planning authorities, accessed through official portals and open-data releases where they exist |
| Local plan and policy documents | Adopted plans and supplementary guidance, which are the authoritative statement of what is allocated and what policies apply |
| Published spatial designation data | Conservation areas, flood zones, protected trees, green belt and heritage designations, from official open and licensed spatial datasets |
| National mapping and cadastral data | Site boundaries and base mapping, licensed from the national mapping agency — this is a real licence cost, not an open dataset in most jurisdictions |
| Heritage and environmental registers | Listed structures, scheduled monuments and protected habitats, held by separate statutory bodies |
| Your own site and appraisal records | Past sites you assessed and what actually happened, which calibrates the comparable-determination component |
The intelligence layer
The difference between a demo and a service is mostly in this section. These are the parts that keep the answer trustworthy once real traffic is hitting it.
- Spatial intersection of the site boundary against every designation layer, with overlap percentage rather than a binary flag, because partial overlap changes the planning position
- Document extraction from decision notices using layout-aware parsing, since conditions are structurally recognisable even when the scan quality is poor
- Condition classification into a controlled taxonomy — hours, noise, drainage, materials, obligations — so conditions become queryable across a portfolio
- Policy passage retrieval rather than whole-document return, with every extracted statement linked back to its source paragraph
- Language-model extraction constrained to the source document, with any statement that cannot be traced to a passage withheld rather than returned
- Explicit separation of fact from interpretation in the response schema, so a designation overlap and a view on policy applicability are never presented identically
- Validation against consultant-reviewed sites, reporting extraction accuracy per document type and per authority
- Freshness monitoring per authority, because register publication practices vary widely and a stale authority is the main failure mode
What it changes for the business
Screening at scale
Site pipelines can be filtered on real constraints rather than on crude proxies.
Consultant time redeployed
Research hours shift from assembling the position to forming a view on it.
Earlier risk discovery
Flood designation, heritage controls and protected trees surface before money is spent on a site.
Queryable planning history
Extracted conditions make it possible to ask portfolio-level questions that currently require reading.
How it fits into your product
How it embeds
- Single call by site boundary or address for use inside an appraisal or site-sourcing tool
- Batch assessment across a site pipeline, with job polling for large screening runs
- Document extraction endpoint you can point at your own planning documents and decision notices
- GeoJSON output so constraint layers can be rendered directly in your mapping front end
- Source and date on every returned item, so a user can always go to the original
- Deployment inside your environment where site pipelines are commercially sensitive
Included in every build
- Authentication, scoped API keys and per-customer rate limiting
- Input validation with predictable, documented error responses
- Versioned endpoints so your integration never breaks without notice
- Request and response logging for audit and dispute resolution
- Latency, error-rate and usage monitoring with alerting
- OpenAPI specification, sandbox environment and client examples
- Backups, failover design and a documented recovery procedure
- An agreed support arrangement once the service is live
How we would build it
about 20 weeksDiscovery and feasibility
Weeks 1–3
This one depends heavily on data access, so we start by proving the sources exist, can be licensed for your use, and actually carry the signal the model needs. If they do not, you find out here.
Architecture and baseline model
Weeks 4–6
A written architecture and a baseline model measured against a holdout period, so you know what accuracy you are buying before the full build starts.
Production build
Weeks 7–16
Data pipelines, model training and serving, historical archive, validation harness, API, security, monitoring and documentation.
Validation and integration
Weeks 17–20
Backtesting against held-out history, accuracy reporting your team can audit, integration support and an agreed retraining cadence.
Commercial models
There is no fixed price list, because the cost is driven by data complexity, integration count, model requirements, request volume and the support level you need. Scope is agreed in writing before development starts.
Fixed-scope prototype
A defined slice of the service, built and priced as one piece of work. The usual first step when the business case needs proving internally.
Fixed-price build
An agreed scope against a written architecture, delivered for an agreed price. Best when the requirements are already clear.
Build then retainer
We build the service, then operate and improve it under a monthly agreement covering monitoring, updates and model maintenance.
White-label product
The service runs under your brand, your domain and your pricing, with MLPivot invisible to your customers.
Questions buyers ask
Does this tell us whether permission will be granted?
No, and that is a firm no. Planning outcomes depend on interpretation, consultation responses, officer and committee judgement, and negotiation. The API assembles and structures the factual position and surfaces comparable determinations. Presenting that as a probability of consent would be a false and potentially expensive precision, and we would not build it.
How complete is the coverage?
It varies by authority, substantially. Some publish structured registers and spatial data that make this straightforward; others publish scanned PDFs through a portal with no bulk access. We scope coverage authority by authority during discovery and report a freshness and completeness indicator per authority rather than presenting uneven coverage as uniform.
Where does the data come from, and may you use it?
Planning registers and policy documents are public, but public does not mean unrestricted — bulk collection terms vary by authority, and national mapping and cadastral data normally requires a commercial licence with a real cost. We identify those licences in discovery, including the ones that constrain whether you may show the data to your own customers.
Can it read our own planning documents?
Yes. The extraction endpoint works on documents you supply, which for a developer with a long history of decision notices and conditions is often the most immediately valuable part. Extraction accuracy depends on document quality, and poor scans are returned with low confidence rather than a confident misreading.
How current is the constraint data?
Each item carries its own source and update date, because the layers genuinely differ — a national flood map may be refreshed quarterly while a local tree preservation register is updated when someone remembers. Treating them as uniformly current would be the easiest way to mislead a user.
Related blueprints
Construction Cost Estimation API
Material, labour and whole-project cost estimates with regional adjustment and a stated uncertainty range, for early-stage feasibility and pricing.
Property Hazard Intelligence API
Flood, heat, wildfire and subsidence exposure for a location, scored at address level with the underlying hazard data and its limits made visible.
Automated Property Valuation API
Estimated property values with confidence ranges and the comparable sales behind them, as a valuation endpoint your portal or lending flow can call.
Want this built for your platform?
Tell us what your product does today and what you want another system to be able to ask it. We will come back with an approach, a scope and a price.