Land Insight Parcels API
Endpoints to search for parcels and associated attributes.
Endpoints to search for parcels and associated attributes.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/land-insight-parcels-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: LandTech Additional Opportunities Parcels API
description: 'Search for land parcels and retrieve detailed insights on ownership, planning applications and property details.
'
version: 0.3.0
servers:
- url: https://app.land.tech/api
description: LandTech API Service
security:
- ApiKeyAuth: []
tags:
- name: Parcels
description: Endpoints to search for parcels and associated attributes.
paths:
/regions:
get:
operationId: getRegions
summary: List available regions
description: 'List the GSS code and name of known regions (local authorities), that can be used when searching for parcels.
'
tags:
- Parcels
responses:
'200':
description: A list of regions available.
content:
application/json:
schema:
type: object
properties:
data:
type: object
properties:
regions:
type: array
items:
$ref: '#/components/schemas/RegionDetail'
examples:
validResponse:
summary: Parcels found
value:
data:
regions:
- gss_code: E06000023
name: Bristol, City of
- gss_code: E09000033
name: Westminster
- gss_code: E07000112
name: Folkestone and Hythe
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/Forbidden'
/parcels/search:
post:
operationId: searchParcels
summary: Search for parcels
description: 'Given a region GSS code and optional parcel size, retrieve a list of parcel IDs. The maximum number of IDs returned is 100,000.
'
tags:
- Parcels
requestBody:
description: A payload including a region and optional parcel size filters.
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ParcelSearchRequest'
responses:
'200':
description: A list of parcel IDs matching the search criteria.
content:
application/json:
schema:
$ref: '#/components/schemas/ParcelIds'
examples:
validResponse:
summary: Parcels found
value:
parcel_ids:
- 533bdf35-c073-5433-b225-076b625d22f9
- 7da6fe12-6f0a-3d16-5bf0-3c80839256b5
- 7fc7684c-bf0f-8710-327e-78d26f9c313e
emptyResponse:
summary: No parcels found
value:
parcel_ids: []
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/Forbidden'
/parcels/advanced-search:
post:
operationId: searchParcelsAdvanced
summary: Advanced parcel search - beta
description: "Retrieve a list of parcel IDs based on a set of filters. The maximum number of IDs returned is 100,000.\n \n**Schema is subject to change.** \n"
tags:
- Parcels
requestBody:
description: A payload including all parcel filters.
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ParcelSearchRequestAdvanced'
example:
search_filter:
ALL:
- id: tenure-uk
values:
- key: freehold
checked: true
- key: leasehold
must: MATCH_ANY
- id: use-class-nested-id
values:
- key: E
items:
- key: E(a)
checked: true
- key: E(b)
checked: true
- key: sui-generis
items:
- key: i-Agricultural
checked: true
must: MATCH_ANY
- id: adopted-constraints-id
values:
- key: very_low_risk_of_flooding_from_rivers_and_seas
checked: true
- key: low_risk_of_flooding_from_rivers_and_seas
checked: true
must: MATCH_NONE
type: nested-checkbox
- id: ownership-type-id
values:
- key: private
checked: true
must: MATCH_NONE
responses:
'200':
description: A list of parcel IDs matching the search criteria.
content:
application/json:
schema:
$ref: '#/components/schemas/ParcelIds'
examples:
validResponse:
summary: Parcels found
value:
parcel_ids:
- 533bdf35-c073-5433-b225-076b625d22f9
- 7da6fe12-6f0a-3d16-5bf0-3c80839256b5
- 7fc7684c-bf0f-8710-327e-78d26f9c313e
emptyResponse:
summary: No parcels found
value:
parcel_ids: []
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/Forbidden'
/parcels/{parcel_id}:
get:
operationId: getParcel
summary: Details about a parcel
description: 'Given a parcel ID, get the parcel details including associated titles, properties and planning applications.
'
tags:
- Parcels
parameters:
- in: path
name: parcel_id
required: true
schema:
$ref: '#/components/schemas/ParcelId'
description: A parcel ID
example: 2a5ad2c7-29ef-d609-8ade-36eef8e3a072
responses:
'200':
description: Parcel Details
content:
application/json:
schema:
$ref: '#/components/schemas/ParcelDetails'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/Forbidden'
/parcels:
post:
operationId: getParcelsBulk
summary: Bulk parcel details
description: 'Fetch parcel details for up to 50 parcel IDs in a single request.
'
tags:
- Parcels
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/BulkParcelRequest'
responses:
'200':
description: Bulk parcel details
content:
application/json:
schema:
$ref: '#/components/schemas/BulkParcelResponse'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/BulkParcelBadRequest'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/Forbidden'
components:
schemas:
PolygonCoordinates:
type: array
items:
$ref: '#/components/schemas/LinearRingCoordinates'
ParcelSearchRequestAdvanced:
type: object
required:
- search_filter
properties:
search_filter:
type: object
required:
- ALL
properties:
ALL:
type: array
description: Array of search criteria to match using AND logic
minItems: 1
items:
anyOf:
- $ref: '#/components/schemas/AdditionalOpportunities'
description: An optional filter for additional opportunities.
- $ref: '#/components/schemas/AgriculturalLandClassification'
description: An optional filter for agricultural land classification.
- $ref: '#/components/schemas/AmenitiesFilter'
description: An optional filter for amenities.
- $ref: '#/components/schemas/Article4'
description: An optional filter for Article 4 constraints within London.
- $ref: '#/components/schemas/CompanyStatus'
description: An optional filter for company status.
- $ref: '#/components/schemas/ConstraintsAdopted'
description: An optional filter for adopted constraints.
- $ref: '#/components/schemas/ConstraintsEmerging'
description: An optional filter for emerging constraints.
- $ref: '#/components/schemas/DevelopedArea'
description: An optional filter for developed area percentage.
- $ref: '#/components/schemas/GreyBeltFavourability'
description: An optional filter for green belt status.
- $ref: '#/components/schemas/LandAvailabilityAssessment'
description: An optional filter for land availability assessment.
- $ref: '#/components/schemas/LeaseEndDate'
description: An optional filter for lease end date.
- $ref: '#/components/schemas/LeaseStartDate'
description: An optional filter for lease start date.
- $ref: '#/components/schemas/OwnershipType'
description: An optional filter for ownership type.
- $ref: '#/components/schemas/ParcelSize-2'
description: An optional filter for parcel size in square metres.
- $ref: '#/components/schemas/PlanningApplications'
description: An optional filter for planning applications.
- $ref: '#/components/schemas/PowerDistance'
description: An optional filter for distance to nearby power sources.
- $ref: '#/components/schemas/ProprietorName'
description: An optional filter for proprietor name.
- $ref: '#/components/schemas/PropertyState'
description: An optional filter for property state.
- $ref: '#/components/schemas/RegionFilter'
description: An optional filter for region.
- $ref: '#/components/schemas/RegenerationZonesAdopted'
description: An optional filter for adopted regeneration zones.
- $ref: '#/components/schemas/RegenerationZonesEmerging'
description: An optional filter for emerging regeneration zones.
- $ref: '#/components/schemas/SearchLocation'
description: An optional filter for searching location.
- $ref: '#/components/schemas/SiteAllocationsAdopted'
description: An optional filter for adopted site allocations.
- $ref: '#/components/schemas/SiteAllocationsEmerging'
description: An optional filter for emerging site allocations.
- $ref: '#/components/schemas/Tenure'
description: An optional filter for tenure type.
- $ref: '#/components/schemas/UseClass'
description: An optional filter for use classes.
LandAvailabilityAssessment:
type: object
title: Land Availability Assessment
properties:
id:
type: string
description: The constant ID for this schema.
enum:
- land-availability-assessment-id
example: land-availability-assessment-id
values:
type: array
description: A list of land availability assessment types with associated keys and checked status.
items:
type: object
required:
- key
- checked
properties:
key:
type: string
description: The key representing the land availability assessment type.
enum:
- negative
- neutral
- positive
x-enumDescriptions:
negative: Negative
neutral: Neutral
positive: Positive
example: negative
checked:
type: boolean
description: Indicates whether this land availability assessment type is selected or not.
enum:
- true
example: true
must:
type: string
enum:
- MATCH_ANY
- MATCH_NONE
description: The match type for filtering the land availability assessment options.
example: MATCH_ANY
required:
- values
- must
- id
UseClassF2Item:
type: object
title: Use Class - F.2
properties:
key:
type: string
enum:
- F.2(b)
- F.2(c)
- F.2(d)
x-enumDescriptions:
F.2(b): Halls or meeting places for the principal use of the local community
F.2(c): Areas for outdoor sports and recreation
F.2(d): Indoor or outdoor swimming pools or skating rinks
example: F.2(b)
checked:
type: boolean
enum:
- true
example: true
required:
- key
- checked
Education:
type: object
title: Education
properties:
key:
type: string
enum:
- education
description: The key representing the education category.
example: education
checked:
type: boolean
description: Indicates whether the education category is selected.
example: true
enum:
- true
items:
type: array
description: A list of specific education amenities.
items:
type: object
properties:
key:
type: string
enum:
- shortest_distance_primary_school
- shortest_distance_secondary_school
- shortest_distance_further_education
- shortest_distance_primary_school_independent
- shortest_distance_secondary_school_independent
- shortest_distance_further_education_independent
x-enumDescriptions:
shortest_distance_primary_school: Shortest distance to primary school
shortest_distance_secondary_school: Shortest distance to secondary school
shortest_distance_further_education: Shortest distance to further education
shortest_distance_primary_school_independent: Shortest distance to independent primary school
shortest_distance_secondary_school_independent: Shortest distance to independent secondary school
shortest_distance_further_education_independent: Shortest distance to independent further education
description: The key representing the specific education amenity.
example: shortest_distance_primary_school
checked:
description: Indicates whether this specific education amenity is selected.
example: true
type: boolean
enum:
- true
example:
- key: shortest_distance_primary_school
checked: true
- key: shortest_distance_secondary_school
checked: true
required:
- key
- checked
- items
RegenerationZonesEmerging:
type: object
title: Regeneration Zones - Emerging
properties:
id:
type: string
description: The constant ID for this schema.
enum:
- regeneration-zones-emerging-id
example: regeneration-zones-emerging-id
values:
type: array
description: A list of regeneration zone values with associated keys and checked status.
items:
type: object
required:
- key
properties:
key:
type: string
description: The key representing the regeneration zone type.
enum:
- area_action_plans
- named_regeneration_areas
x-enumDescriptions:
area_action_plans: Area Action Plans
named_regeneration_areas: Named Regeneration Areas
example: area_action_plans
checked:
type: boolean
description: Indicates whether this regeneration zone type is selected or not.
example: true
must:
type: string
enum:
- MATCH_ANY
- MATCH_NONE
description: The match type for filtering the regeneration zone options.
example: MATCH_ANY
required:
- values
- must
- id
ConstraintsAdopted:
type: object
title: Constraints - Adopted Constraints
properties:
id:
type: string
description: The constant ID for this schema.
enum:
- adopted-constraints-id
example: adopted-constraints-id
values:
type: array
description: A list of constraint values with associated keys, checked status.
items:
type: object
required:
- key
- checked
properties:
key:
type: string
description: The key representing the constraint type.
enum:
- protected_areas_outer
- heritage_land_listed_buildings_outer
- flood_zone_2_env_agency
- flood_zone_3_env_agency
- very_low_risk_of_flooding_from_rivers_and_seas
- low_risk_of_flooding_from_rivers_and_seas
- medium_risk_of_flooding_from_rivers_and_seas
- high_risk_of_flooding_from_rivers_and_seas
- conservation_areas_outer
- employment_area_outer
- settlement_boundaries_outer
- green_belt_outer
- nutrient_neutrality
- protected_views_outer
- safe_guarding_outer
- metropolitan_open_land_outer
- open_space_outer
- rights_of_way
- tree_preservation_orders
- national_landscape
x-enumDescriptions:
protected_areas_outer: Protected Areas
heritage_land_listed_buildings_outer: Heritage Land/Listed Buildings
flood_zone_2_env_agency: Flood Zone 2
flood_zone_3_env_agency: Flood Zone 3
very_low_risk_of_flooding_from_rivers_and_seas: Very Low Risk (Flood Risk)
low_risk_of_flooding_from_rivers_and_seas: Low Risk (Flood Risk)
medium_risk_of_flooding_from_rivers_and_seas: Medium Risk (Flood Risk)
high_risk_of_flooding_from_rivers_and_seas: High Risk (Flood Risk)
conservation_areas_outer: Conservation Areas
employment_area_outer: Employment Area
settlement_boundaries_outer: Settlement Boundaries
green_belt_outer: Green Belt
nutrient_neutrality: Nutrient Neutrality
protected_views_outer: Protected Views
safe_guarding_outer: Safe Guarded Sites
metropolitan_open_land_outer: Metropolitan Open Land (Open Land/Green Space)
open_space_outer: Open Space (Open Land/Green Space)
rights_of_way: Rights of Way
tree_preservation_orders: Tree Preservation Orders
national_landscape: National Landscape (AONB)
example: protected_areas_outer
checked:
type: boolean
description: Indicates whether this constraint type is selected or not.
enum:
- true
example: true
must:
type: string
enum:
- MATCH_ALL
- MATCH_NONE
description: The match type for filtering the constraints options.
example: MATCH_NONE
required:
- values
- must
- id
RegionDetail:
type: object
required:
- gss_code
properties:
gss_code:
allOf:
- $ref: '#/components/schemas/GSSCode'
- description: The GSS code of a local authority, e.g. `E06000023`.
- example: E06000023
name:
type: string
description: The descriptive name of the region.
example: Bristol, City of
UseClassB2:
type: object
title: Use Class - B2
properties:
key:
type: string
enum:
- B2
x-enumDescriptions:
B2: General industrial
example: B2
checked:
type: boolean
enum:
- true
example: true
required:
- key
- checked
UseClassEItem:
type: object
title: Use Class - E Item
properties:
key:
type: string
enum:
- E(a)
- E(b)
- E(c)
- E(c)(i)
- E(d)
- E(e)
- E(f)
- E(g)(i)
x-enumDescriptions:
E(a): Retail of goods other than hot food
E(b): Sale of food and drink for consumption (mostly) on the premises
E(c): Provision of financial services, professional services or other commercial/business services
E(c)(i): Provision of financial services
E(d): Indoor sport and recreation (excluding swimming pools or skating rinks)
E(e): Provision of medical or health services
E(f): Creche, day nursery or day centre
E(g)(i): Offices to carry out operational functions
example: E(a)
checked:
type: boolean
enum:
- true
example: true
required:
- key
- checked
DevelopedArea:
type: object
title: Developed Area
properties:
id:
type: string
description: The constant ID for this schema.
enum:
- developed-area-id
example: developed-area-id
range:
type: array
description: '`[1, 45]` represents a range from **1% to 45%**.
An array with 2 items that represent the range of percentages for the developed area.
The first item is the minimum value, and the second item is the maximum value.
'
items:
type: number
format: integer
minItems: 2
maxItems: 2
example:
- 1
- 45
rangeType:
type: string
description: The type of range being used (e.g., percentage).
enum:
- percentage
example: percentage
required:
- id
- range
- rangeType
PowerDistance:
type: object
title: Power Distance Filter
properties:
id:
type: string
enum:
- power-distance-type-id
example: power-distance-type-id
description: The unique identifier for the distance from power filter.
type:
type: string
enum:
- compound
example: compound
description: The type of filter, which is always compound in this case.
filters:
type: array
items:
minItems: 2
maxItems: 2
anyOf:
- $ref: '#/components/schemas/PowerDistanceTypeFilter'
- $ref: '#/components/schemas/PowerDistanceFilter'
description: "A list of filters to be applied. \nMust include at least one: PowerDistanceTypeFilter and only one PowerDistanceFilter.\n"
example:
- id: power-distance-type-filter
values:
- key: shortest_distance_grid_power_substations
name: sidebar.react.search_sidebar.power_distance.grid_power_substations
checked: false
- key: shortest_distance_bulk_power_substations
name: sidebar.react.search_sidebar.power_distance.bulk_power_substations
checked: false
- key: shortest_distance_primary_power_substations
name: sidebar.react.search_sidebar.power_distance.primary_power_substations
checked: false
- key: shortest_distance_hv_power_substations
name: sidebar.react.search_sidebar.power_distance.hv_power_substations
checked: false
- key: shortest_distance_power_cables
name: sidebar.react.search_sidebar.power_distance.power_cables
checked: false
- key: shortest_distance_power_overhead_lines
name: sidebar.react.search_sidebar.power_distance.power_overhead_lines
checked: false
- key: shortest_distance_power_towers
name: sidebar.react.search_sidebar.power_distance.power_towers
checked: true
must: MATCH_ALL
type: nested-checkbox
- id: power-distance-filter
value: 5000
must:
type: string
enum:
- MATCH_ALL
- MATCH_NONE
description: The match type for combining the filters.
example: MATCH_ALL
default: MATCH_ALL
required:
- id
- filters
- must
- type
PowerDistanceTypeFilter:
type: object
title: Power Distance Type Filter
properties:
id:
type: string
enum:
- power-distance-type-filter
example: power-distance-type-filter
description: The unique identifier for the power distance type filter.
values:
type: array
items:
type: object
properties:
key:
enum:
- shortest_distance_grid_power_substations
- shortest_distance_bulk_power_substations
- shortest_distance_primary_power_substations
- shortest_distance_hv_power_substations
- shortest_distance_power_cables
- shortest_distance_power_overhead_lines
- shortest_distance_power_towers
x-enumDescriptions:
shortest_distance_grid_power_substations: Distance to the nearest grid power substation
shortest_distance_bulk_power_substations: Distance to the nearest bulk power substation
shortest_distance_primary_power_substations: Distance to the nearest primary power substation
shortest_distance_hv_power_substations: Distance to the nearest high-voltage power substation
shortest_distance_power_cables: Distance to the nearest power cable
shortest_distance_power_overhead_lines: Distance to the nearest overhead power line
shortest_distance_power_towers: Distance to the nearest power tower
description: The key representing the type of power distance.
checked:
type: boolean
description: Indicates whether this specific power type is selected.
required:
- key
- checked
description: 'List of power distance types with their selection status.
'
example:
- key: shortest_distance_grid_power_substations
checked: false
- key: shortest_distance_bulk_power_substations
checked: false
- key: shortest_distance_primary_power_substations
checked: false
- key: shortest_distance_hv_power_substations
checked: false
- key: shortest_distance_power_cables
checked: false
- key: shortest_distance_power_overhead_lines
checked: false
- key: shortest_distance_power_towers
checked: true
required:
- id
- values
UseClassC2:
type: object
title: Use Class - C2
properties:
key:
type: string
enum:
- C2
x-enumDescriptions:
C2: Residential institutions
example: C2
checked:
type: boolean
enum:
- true
example: true
required:
- key
- checked
UseClassSuiGenerisItem:
type: object
title: Use Class - Sui Generis - Item
properties:
key:
type: string
enum:
- i-Agricultural
- ii-Agricultural
- iii-Amusements
- iv-Bingo-Hall
- v-Car
- vi-Farm
- vii-Garage
- ix-Grazing
- x-Holiday
- xi-Licensed
- xii-Lock
- xiii-Permanent
- xiv-Petrol
- xv-car-parking
- xvi-Public
- xvii-Recreational
x-enumDescriptions:
i-Agricultural: Agricultural
ii-Agricultural: Applicable to land in farm ownership and not run as a separate business enterprise
iii-Amusements: Amusements
iv-Bingo-Hall: Bingo Hall / Cinema / Conference / Exhibition Centre / Theatre / Concert Hall
v-Car: Car / Coach / Commercial Vehicle / Taxi Parking / Park And Ride Site
vi-Farm: Farm / Non-Residential Associated Building
vii-Garage: Garage
ix-Grazing: Grazing Land
x-Holiday: Holiday / Campsite
xi-Licensed: Licensed Private Members' Club
xii-Lock: Lock-Up Garage / Garage Court
xiii-Permanent: Permanent Crop / Crop Rotation
xiv-Petrol: Petrol Filling Station
xv-car-parking: Public Car Parking
xvi-Public: Public House / Bar / Nightclub
xvii-Recreational: Recreational / Social Club
example: i-Agricultural
checked:
type: boolean
enum:
- true
example: true
required:
- key
- checked
BulkParcelBadRequest:
type: object
required:
- error_msg
properties:
error_msg:
type: string
example: "Body must be valid JSON object in the form of:\n { \"parcel_ids\": [\"valid_uuid_0\", \"valid_uuid_1\", \"valid_uuid_N\"] }\n"
description: Error message detailing the required request format.
PointCoordinates:
type: array
maxItems: 2
minItems: 2
example:
- -0.12755
- 51.5073
items:
type: number
ParcelSize-2:
type: object
title: Parcel Size
properties:
id:
type: string
example: lot-area-id
enum:
- lot-area-id
description: The unique identifier for the lot area.
range:
type: array
description: '`[0, 2000]` represents a range from **0 meters to 2000 meters (2km)**.
An array with 2 items that represent the range of values for the parcel size.
The first item is the minimum value, and the second item is the maximum value.
'
items:
type: number
format: float
minItems: 2
maxItems: 2
example:
- 0
- 500
type:
type: string
description: The type of range.
enum:
- number-range
example: number-range
rangeType:
type: str
# --- truncated at 32 KB (91 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/land-insight/refs/heads/main/openapi/land-insight-parcels-api-openapi.yml