Land Insight Parcels API

Endpoints to search for parcels and associated attributes.

OpenAPI Specification

land-insight-parcels-api-openapi.yml Raw ↑
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.** ![Beta](https://img.shields.io/badge/Status-Beta-yellow)\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