Land Insight Planning Applications API
Endpoints to search for planning applications and get details on individual applications.
Endpoints to search for planning applications and get details on individual applications.
openapi: 3.0.3
info:
title: LandTech Additional Opportunities Planning Applications 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: Planning Applications
description: Endpoints to search for planning applications and get details on individual applications.
paths:
/planning-applications/search:
post:
operationId: searchPlanningApplications
summary: Search for planning applications
description: 'Given a geometry, get a list of planning application references, grouped by the planning authority GSS code.
'
tags:
- Planning Applications
requestBody:
description: A payload, including a GeoJSON geometry.
required: true
content:
application/json:
schema:
type: object
properties:
geometry:
oneOf:
- $ref: '#/components/schemas/Point'
- $ref: '#/components/schemas/Polygon'
- $ref: '#/components/schemas/MultiPolygon'
responses:
'200':
description: Planning Application Refs
content:
application/json:
schema:
type: object
required:
- applications
additionalProperties: false
properties:
applications:
$ref: '#/components/schemas/PlanningApplicationRefs'
'400':
description: Invalid request
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
examples:
errorResponse:
value:
error: 'Missing required body parameter: ''geometry'''
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/Forbidden'
/planning-applications/{gss_code}/{ref}:
get:
operationId: getPlanningApplication
summary: Details of a planning application
description: 'Get detailed information about a planning application, given its local authority GSS code and application reference.
'
tags:
- Planning Applications
parameters:
- in: path
name: gss_code
required: true
schema:
$ref: '#/components/schemas/GSSCode'
description: The GSS code of a planning authority, e.g. `E09000033`.
example: E09000033
- in: path
name: ref
required: true
description: The planning application reference declared by the planning authority. It may contain slashes, e.g. `16/11109/FULL`. It's sensible, but not necessary, to "URL encode" this value.
schema:
type: string
minLength: 1
example: 16%2F11109%2FFULL
responses:
'200':
description: Planning application details
content:
application/json:
schema:
$ref: '#/components/schemas/PlanningApplication'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/Forbidden'
'404':
description: Application not found
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
examples:
errorResponse:
value:
error: Planning application not found
/planning-applications/{app_id}:
get:
operationId: getPlanningApplicationById
summary: Details of a planning application via app ID
description: 'Get detailed information about a planning application, given a unique planning application ID e.g. a local authority GSS code and reference separated by a plus sign (`+`).
'
tags:
- Planning Applications
parameters:
- in: path
name: app_id
required: true
description: 'An ID comprised of a GSS code and ref separated by a plus sign (`+`) e.g. `E07000112+Y18/1381/FH`. It''s sensible, but not necessary, to "URL encode" this value.
'
schema:
$ref: '#/components/schemas/PlanningApplicationId'
example: E07000112%2BY18%2F1381%2FFH
responses:
'200':
description: Planning application details
content:
application/json:
schema:
$ref: '#/components/schemas/PlanningApplication'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/Forbidden'
'404':
description: Application not found
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
examples:
errorResponse:
value:
error: Planning application not found
/planning-applications:
post:
operationId: getPlanningApplicationByIds
summary: Bulk planning application details
description: "Get detailed information about a set of planning applications, given a set of unique planning application IDs e.g. a local authority GSS code and reference separated by a plus sign (`+`).\n \n**Schema is subject to change.** \n"
tags:
- Planning Applications
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
planning_applications:
type: array
description: 'List of IDs comprised of a GSS code and ref separated by a plus sign (`+`) e.g. `E07000112+Y18/1381/FH`.
'
items:
$ref: '#/components/schemas/PlanningApplicationId'
required:
- planning_applications
example:
planning_applications:
- E07000112+Y18/1381/FH
- E09000033+16/02592/LBC
responses:
'200':
description: Planning application details
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/PlanningApplication'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/Forbidden'
'404':
description: Application not found
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
examples:
errorResponse:
value:
error: Planning application not found
components:
schemas:
Point:
description: GeoJSON Point
externalDocs:
url: https://datatracker.ietf.org/doc/html/rfc7946
type: object
required:
- type
- coordinates
properties:
type:
type: string
enum:
- Point
example: Point
description: the geometry type
coordinates:
$ref: '#/components/schemas/PointCoordinates'
PolygonCoordinates:
type: array
items:
$ref: '#/components/schemas/LinearRingCoordinates'
PlanningApplication:
type: object
properties:
id:
type: string
description: Internal LandTech ID of the planning application.
example: E09000033+16/02592/LBC
gss_code:
allOf:
- $ref: '#/components/schemas/GSSCode'
- description: GSS code of the planning authority.
- example: E09000033
ref:
type: string
description: Reference number used by the planning authority.
example: 16/02592/LBC
num_dwellings:
type: number
description: Number of residential units we have identified the application is for.
example: 1
address:
type: string
description: Address of the property the application is for.
example: Victoria Gate Lodge Hyde Park Bayswater Road London SW7 1NR
title:
type: string
description: Description of the planning application.
example: Internal and external alterations of the lodge including general internal and external repairs and refurbishment.
location:
description: GeoJSON of the location of the planning application, as a point.
allOf:
- $ref: '#/components/schemas/Point'
boundary:
description: GeoJSON of the boundary of the planning application, as a multipolygon, where available.
nullable: true
type: object
allOf:
- $ref: '#/components/schemas/MultiPolygon'
url:
type: string
nullable: true
description: URL to the planning authority's page. Where possible this links directly to the planning application.
example: https://apps.stratford.gov.uk/eplanning/AppDetail.aspx?appkey=OA70D2PM00E00
types_derived:
description: Identified "types" of the application
type: array
items:
type: string
enum:
- Full Application
- Outline
- Discharge of Conditions
- GPDR
- Reserved Matters
- TPO
- Listed Building
- EIA
- Change of Use
- Proposal of Application Notice
status:
type: string
nullable: true
description: Current status of the application, e.g. Decided.
example: Permission with conditions
decision:
type: string
nullable: true
description: The decision on the application, e.g. Permit.
example: Permission with conditions
date_received:
type: string
format: date-time
description: Date the application was received by the authority.
example: '2016-07-07T00:00:00.000Z'
decision_date:
type: string
nullable: true
format: date-time
description: Date the decision was made on the application.
example: '2016-09-21T00:00:00.000Z'
agent_address:
type: string
nullable: true
description: Address of the agent who submitted the application.
example: The Studio, 42 Placeholder Avenue, Fictiontown-upon-Test, EX4 8MP
agent_name:
type: string
nullable: true
description: Name of the agent who submitted the application.
example: Joe Doe
applicant_name:
type: string
nullable: true
description: Name of the person who submitted the application.
example: John Smith
status_derived:
type: string
enum:
- Approved
- Rejected
- Pending
- Withdrawn
- Unknown
description: Normalized status of the application.
example: Approved
updated:
type: string
format: date-time
description: When the application was last processed by LandTech.
example: '2023-05-26T03:09:36.191Z'
classification:
type: string
enum:
- RESIDENTIAL
- COMMERCIAL
- MIXED_USE
- OTHER
description: Classification of the application.
example: RESIDENTIAL
size:
type: number
description: Same as num_dwellings.
example: 1
found_num_dwellings:
type: boolean
description: Flag stating that we have identified a number of residential units (dwellings).
example: false
tags:
description: A list of "tags" which describe features of the application. Often identifies a specific use class, or can be more generic such as "Demolition", "Hotel" or "Care Home".
type: array
nullable: true
items:
type: string
example:
- Hotel
- Demolition
- Retail (A1)
- Restaurants and cafés (A3)
- Office (B1)
appeal_case_number:
description: The Planning Inspectorate (PINS) Reference Number
type: string
nullable: true
pattern: ^\d{7}$
example: '1234567'
appeal_type_of_appeal:
description: Appeal type
type: string
nullable: true
example: Planning Appeal
appeal_type_reason:
description: Appeal reason (this field is only populated for certain types of appeals)
type: string
nullable: true
example: 1. Refused planning permission
appeal_application_ref:
description: Local Planning Authority application reference number relating to the appeal
type: string
nullable: true
example: P1284/13/OUT
appeal_planning_authority_name:
description: Local Planning Authority Name, if known
type: string
nullable: true
example: London Borough of Barnet
appeal_site_address:
description: Address of the site
type: string
nullable: true
example: The Annex, 7 Example Crescent, Testford-upon-Mere, XY45 6ZT
appeal_decision:
description: Appeal decision
type: string
nullable: true
example: Dismissed
appeal_decision_date:
description: If the Jurisdiction is Transferred then it is the date of the decision made by the Planning Inspectorate (PINS). If the Jurisdiction is Secretary of State then it is the date that the report was sent to the Secretary of State
type: string
nullable: true
example: '2017-08-02T00:00:00.000Z'
appeal_received_date:
description: Date received in Planning Inspectorate (PINS)
type: string
format: date-time
nullable: true
example: '2014-05-15T00:00:00.000Z'
appeal_development_type:
description: Development type being appealed
type: string
nullable: true
example: Householder developments
appeal_inspector_name:
description: Planning Inspector's name, if known
type: string
nullable: true
example: James Smith
appeal_appellant:
description: Appellant's name
type: string
nullable: true
example: James Thompson
appeal_updated_at:
description: Date the appeal was processed by LandTech
type: string
nullable: true
format: date-time
example: '2023-05-26T03:09:36.191Z'
is_full_application:
type: boolean
description: Flag indicating "types_derived" includes "Full Application"
example: false
is_outline:
type: boolean
description: Flag indicating "types_derived" includes "Outline"
example: false
is_discharge_of_conditions:
type: boolean
description: Flag indicating "types_derived" includes "Discharge of Conditions"
example: false
is_gpdr:
type: boolean
description: Flag indicating "types_derived" includes "GPDR" (General Permitted Development - Class R)
example: false
is_reserved_matters:
type: boolean
description: Flag indicating "types_derived" includes "Reserved Matters"
example: false
is_tpo:
type: boolean
description: Flag indicating "types_derived" includes "TPO" (Tree Preservation Order)
example: false
is_listed_building:
type: boolean
description: Flag indicating "types_derived" includes "Listed Building"
example: true
is_eia:
type: boolean
description: Flag indicating "types_derived" includes "EIA" (Environmental Impact Assessment)
example: false
is_change_of_use:
type: boolean
description: Flag indicating "types_derived" includes "Change of Use"
example: false
is_uncategorised:
type: boolean
description: 'Flag indicating we have been unable to "derive" a "type" (i.e: "types_derived" is empty)'
example: false
is_minor:
type: boolean
description: Flag indicating we have identified the application is a "minor" application, i.e. Phone or Post Boxes, Kiosks, ATMs, Advertisements, Signage or Lighting.
example: false
related_applications:
allOf:
- description: Related planning applications
- $ref: '#/components/schemas/PlanningApplicationRefs'
PlanningApplicationRefs:
type: array
items:
type: object
required:
- gss_code
- refs
additionalProperties: false
properties:
gss_code:
allOf:
- $ref: '#/components/schemas/GSSCode'
- description: The GSS code of a planning authority, e.g. `E09000033`.
- example: E09000033
refs:
type: array
minItems: 1
items:
type: string
description: The planning application reference declared by the planning authority. It may contain slashes, e.g. `16/11109/FULL`.
minLength: 1
example: 16/02592/LBC
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: '#/components/schemas/PolygonCoordinates'
Forbidden:
oneOf:
- type: object
required:
- user
properties:
user:
type: object
required:
- state
properties:
state:
type: string
enum:
- expired
- blocked
example: expired
- type: object
required:
- message
properties:
message:
type: string
example: User not found
GSSCode:
type: string
description: Geocode as maintained by the United Kingdom's Office for National Statistics (ONS) to represent a wide range of geographical areas of the UK.
pattern: ^[EWS]\d{8}$
example: E09000033
LinearRingCoordinates:
type: array
minItems: 4
items:
$ref: '#/components/schemas/PointCoordinates'
PointCoordinates:
type: array
maxItems: 2
minItems: 2
example:
- -0.12755
- 51.5073
items:
type: number
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'
PlanningApplicationId:
type: string
description: A unique planning application ID combining a planning authority GSS code and the application reference, separated by a `+` symbol.
example: E07000112+Y18/1381/FH
pattern: ^[EWS]\d{8}(?:\+|%2B)[\w\-\/%]+$
Error:
type: object
anyOf:
- properties:
error:
type: string
- properties:
error_msg:
type: string
securitySchemes:
ApiKeyAuth:
type: apiKey
in: header
name: X-API-Key