Land Insight Parcels API
Endpoints to search for parcels and associated attributes.
Endpoints to search for parcels and associated attributes.
openapi: 3.0.3
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:
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
UseClassF2:
type: object
title: Use Class - F2
properties:
key:
type: string
x-enumDescriptions:
F.2: Local community uses
example: F.2
items:
type: array
items:
$ref: '#/components/schemas/UseClassF2Item'
Tenure:
type: object
properties:
id:
type: string
description: The constant ID for this schema.
enum:
- tenure-uk
example: tenure-uk
values:
type: array
description: A list of tenure values with associated keys and checked status.
items:
type: object
required:
- key
- checked
properties:
key:
type: string
description: The key representing the tenure type.
enum:
- freehold
- leasehold
x-enumDescriptions:
freehold: Freehold
leasehold: Leasehold
example: freehold
checked:
type: boolean
description: Indicates whether this constraint type is selected or not.
enum:
- true
example: true
must:
type: string
enum:
- MATCH_ANY
- MATCH_NONE
description: The match type for filtering the tenure options.
example: MATCH_ANY
required:
- values
- must
- id
UPRN:
type: string
description: Unique Property Reference Number (UPRN) is a unique numeric identifier for every addressable location in Great Britain, found in Ordnance Survey's AddressBase products.
pattern: ^\d{1,12}$
TitleNumber:
description: The title number is a unique identifier for registered land in England and Wales, governed by HM Land Registry.
type: string
example: WT77573
LeaseEndDate:
type: object
title: Lease End Date
properties:
id:
type: string
description: The constant ID for this schema.
enum:
- lease-end-date
example: lease-end-date
range:
type: array
description: "`[\"2025-02-01T00:00:00.000Z\", \"2025-09-30T23:59:59.999Z\"]` \nrepresents a range from **Feb 1st 2025 to Sep 30th 2025 at 23:59**.\nAn array with 2 items that represent the range of dates for the lease end date.\n\nThe first item is the start date, and the second item is the end date.\n"
items:
type: string
format: date-time
minItems: 2
maxItems: 2
example:
- '2025-02-01T00:00:00.000Z'
- '2025-09-30T22:59:59.999Z'
required:
- id
- range
OwnershipType:
type: object
title: Ownership Type
properties:
id:
type: string
description: The constant ID for this schema.
enum:
- ownership-type-id
example: ownership-type-id
values:
type: array
description: A list of ownership types with associated keys, checked status.
items:
type: object
required:
- key
- checked
properties:
key:
type: string
description: The key representing the ownership type.
enum:
- corporate_body
- company
- council
- housing_association
- private
x-enumDescriptions:
corporate_body: Corporate Body
company: Company
council: Council
housing_association: Housing Association
private: Private
example: company
checked:
type: boolean
description: Indicates that this value is selected.
enum:
- true
example: true
must:
type: string
enum:
- MATCH_ANY
- MATCH_NONE
description: Can match any or match all of the items passed.
example: MATCH_ANY
default: MATCH_ANY
required:
- values
- must
- id
ParcelIds:
type: object
required:
- parcel_ids
properties:
parcel_ids:
type: array
description: A list of parcel UUIDs.
maxItems: 100000
items:
$ref: '#/components/schemas/ParcelId'
PropertyState:
type: object
title: Property State
properties:
id:
type: string
description: The constant ID for this schema.
enum:
- property-state-id
example: property-state-id
values:
type: array
description: A list of property state values with associated keys and checked status.
items:
type: object
required:
- key
- checked
properties:
key:
type: string
description: The key representing the property state type.
enum:
- demolished
- in_use
- planning_permission_granted
- property_state
- under_construction
- unoccupied_vacant_derelict
x-enumDescriptions:
demolished: Demolished
in_use: In Use
planning_permission_granted: Planning Permission Granted
property_state: Unclassified
under_construction: Under Construction
unoccupied_vacant_derelict: Unoccupied/Vacant/Derelict
example: demolished
checked:
type: boolean
description: Indicates whether this property state type is selected or not.
enum:
- true
example: true
must:
type: string
enum:
- MATCH_ANY
- MATCH_NONE
description: The match type for filtering the property state options.
example: MATCH_ANY
required:
- values
- must
- id
ParcelTenure:
type: array
items:
type: string
enum:
- freehold
- leasehold
example: freehold
default: freehold
PlanningApplicationsSubmissionDateFilter:
type: object
title: Planning Applications Submission Date Filter
properties:
id:
type: string
enum:
- planning-applications-submission-date
example: planning-applications-submission-date
description: The unique identifier for submission date range to filter.
range:
type: array
items:
type: string
format: date-time
minItems: 2
maxItems: 2
description: The range of submission dates for filtering the planning applications.
example:
- '2023-01-01T00:00:00Z'
- '2023-12-31T23:59:59Z'
required:
- id
- range
PlanningApplicationsNumberOfUnitsFilter:
type: object
title: Planning Applications Number of Units Filter
properties:
id:
type: string
enum:
- planning-applications-number-of-units
description: The unique identifier for the number of units filter.
example: planning-applications-number-of-units
range:
type: array
description: The range of number of units for filtering the planning applications.
items:
type: number
minItems: 2
maxItems: 2
example:
- 1
- 5
rangeType:
type: string
enum:
- basic
- area
- percentage
description: Specifies the units represented by the numerical range values.
default: basic
example: basic
required:
- id
- range
- rangeType
BulkParcelRequest:
type: object
required:
- parcel_ids
properties:
parcel_ids:
type: array
description: List of parcel IDs (max 50)
maxItems: 50
items:
$ref: '#/components/schemas/ParcelId'
UseClass:
type: object
title: Use Class
properties:
id:
type: string
enum:
- use-class-nested-id
example: use-class-nested-id
description: The unique identifier for the use class filter.
values:
type: array
items:
oneOf:
- $ref: '#/components/schemas/UseClassB2'
- $ref: '#/components/schemas/UseClassB8'
- $ref: '#/components/schemas/UseClassC1'
- $ref: '#/components/schemas/UseClassC2'
- $ref: '#/components/schemas/UseClassC2A'
- $ref: '#/components/schemas/UseClassC3'
- $ref: '#/components/schemas/UseClassC4'
- $ref: '#/components/schemas/UseClassE'
- $ref: '#/components/schemas/UseClassF1'
- $ref: '#/components/schemas/UseClassF2'
- $ref: '#/components/schemas/UseClassSuiGeneris'
must:
type: string
enum:
- MATCH_ANY
- MATCH_NONE
description: The match type for filtering the use class options.
example: MATCH_ANY
default: MATCH_ANY
type:
type: string
enum:
- nested-checkbox
example: nested-checkbox
default: nested-checkbox
required:
- id
- values
- must
- type
UseClassC2A:
type: object
title: Use Class - C2A
properties:
key:
type: string
enum:
- C2A
x-enumDescriptions:
C2A: Secure Residential Institution
example: C2A
checked:
type: boolean
enum:
- true
example: true
required:
- key
- checked
AmenitiesDistanceFilter:
type: object
title: Amenities Distance Filter
properties:
id:
type: string
enum:
- amenities-distance-filter
example: amenities-distance-filter
description: The unique identifier for the amenities distance filter.
value:
type: number
format: float
description: The maximum distance for filtering amenities, in meters.
example: 600
required:
- id
- value
Polygon:
externalDocs:
url: https://datatracker.ietf.org/doc/html/rfc7946
type: object
required:
- type
- coordinates
properties:
type:
type: string
enum:
- Polygon
example: Polygon
description: the geometry type
coordinates:
$ref: '#/components/schemas/PolygonCoordinates'
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
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
SiteAllocationsAdopted:
type: object
title: Site Allocations - Adopted
properties:
id:
type: string
description: The constant ID for this schema.
enum:
- site-allocations-id
example: site-allocations-id
values:
type: array
description: A list of site allocation types with associated keys and checked status.
items:
type: object
required:
- key
- checked
properties:
key:
type: string
description: The key representing the site allocation type.
enum:
- commercial_allocation
- community_allocation
- employment_allocation
- mixed_use_allocation
- residential_allocation
- uncategorised_allocation
x-enumDescriptions:
commercial_allocation: Commercial Allocation
community_allocation: Community Allocation
employment_allocation: Employment Allocation
mixed_use_allocation: Mixed Use Allocation
residential_allocation: Residential Allocation
uncategorised_allocation: Uncategorised
example: commercial_allocation
checked:
type: boolean
description: Indicates whether this site allocation type is selected or not.
enum:
- true
example: true
must:
type: string
enum:
- MATCH_ANY
- MATCH_NONE
description: The match type for filtering the site allocation options.
example: MATCH_ANY
required:
- values
- must
- id
UseClassSuiGeneris:
type: object
title: Use Class - Sui Generis
properties:
key:
type: string
enum:
- sui-generis
x-enumDescriptions:
sui-generis: Sui Generis
example: sui-generis
items:
type: array
items:
$ref: '#/components/schemas/UseClassSuiGenerisItem'
SiteAllocationsEmerging:
type: object
title: Site Allocations - Emerging
properties:
id:
type: string
description: The constant ID for this schema.
enum:
- site-allocations-emerging-id
example: site-allocations-emerging-id
values:
type: array
description: A list of site allocation types with associated keys and checked status.
items:
type: object
required:
- key
- checked
properties:
key:
type: string
description: The key representing the site allocation type.
enum:
- commercial_allocation
- community_allocation
- employment_allocation
- mixed_use_allocation
- residential_allocation
- uncategorised_allocation
x-enumDescriptions:
commercial_allocation: Commercial Allocation
community_allocation: Community Allocation
employment_allocation: Employment Allocation
mixed_use_allocation: Mixed Use Allocation
residential_allocation: Residential Allocation
uncategorised_allocation: Uncategorised
example: commercial_allocation
checked:
type: boolean
description: Indicates whether this site allocation type is selected or not.
enum:
- true
example: true
must:
type: string
enum:
- MATCH_ANY
- MATCH_NONE
description: The match type for filtering the site allocation options.
example: MATCH_ANY
required:
- values
- must
- id
CompanyStatus:
type: object
title: Company Status
properties:
id:
type: string
description: The constant ID for this schema.
enum:
- company-status-id
example: company-status-id
values:
type: array
description: A list of company status types with associated keys and checked status.
items:
type: object
required:
- key
- checked
properties:
key:
type: string
description: The key representing the company status type.
enum:
- active
- active_proposal_to_strike_off
- administration_order
- administrative_receiver
- in_administration
- in_administration_administrative_receiver
- in_administration_receiver_manager
- liquidation
- live_but_receiver_manager_on_at_least_one_charge
- receiver_manager_administrative_receiver
- receivership
- voluntary_arrangement
- voluntary_arrangement_administrative_receiver
- voluntary_arrangement_receiver_manager
x-enumDescriptions:
active: Active
active_proposal_to_strike_off: Active - Proposal To Strike Off
administration_order: Administration Order
administrative_receiver: Administrative Receiver
in_administration: In Administration
in_administration_administrative_receiver: In Administration/Administrative Receiver
in_administration_receiver_manager: In Administration/Receiver Manager
liquidation: Liquidation
live_but_receiver_manager_on_at_least_one_charge: Live But Receiver Manager On At Least One Charge
receiver_manager_administrative_receiver: Receiver Manager / Administrative Receiver
receivership: Receivership
voluntary_arrangement: Voluntary Arrangement
voluntary_arrangement_administrative_receiver: Voluntary Arrangement / Administrative Receiver
voluntary_arrangement_receiver_manager: Voluntary Arrangement / Receiver Manager
example: active
checked:
type: boolean
description: Indicates whether this company status type is selected or not.
enum:
- true
example: true
must:
type: string
enum:
- MATCH_ANY
- MATCH_NONE
description: The match type for filtering the company status options.
example: MATCH_ANY
required:
- values
- must
- id
ParcelSize:
type: object
properties:
min:
type: number
format: float
description: The minimum parcel size in square metres.
example: 2023.43
max:
type: number
format: float
description: The maximum parcel size in square metres.
example: 4046.86
MultiPolygon:
description: GeoJSON MultiPolygon
externalDocs:
url: https://datatracker.ietf.org/doc/html/rfc7946
type: object
required:
- type
- coordinates
properties:
type:
type: string
enum:
- MultiPolygon
example: MultiPolygon
description: the geometry type
coordinates:
type: array
items:
$ref: '#/compo
# --- 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