---
title: "Advanced parcel search - beta"
method: POST
path: "/parcels/advanced-search"
tags: ["Parcels"]
---

# Advanced parcel search - beta

`POST /parcels/advanced-search`

Retrieve a list of parcel IDs based on a set of filters. The maximum number of IDs returned is 100,000.
 
**Schema is subject to change.** ![Beta](https://img.shields.io/badge/Status-Beta-yellow)

## Request body

- ParcelSearchRequestAdvanced
  - `search_filter` object, required
    - `ALL` union[], required — Array of search criteria to match using AND logic
      - union
        - AdditionalOpportunities
          - `id` 'additional-opportunities-id', required — The constant ID for this schema.
          - `values` object[], required — A list of additional opportunities with associated keys and checked status.
            - `key` 'declassified_green_belt', required — The key representing the additional opportunity type.
            - `checked` true, required — Indicates whether this additional opportunity type is selected or not.
          - `must` 'MATCH_ANY' | 'MATCH_NONE', required — The match type for filtering the additional opportunities options.
        - AgriculturalLandClassification
          - `id` 'agricultural-land-classification-id', required — The constant ID for this schema.
          - `values` object[], required — A list of agricultural land classification values with associated keys, names, and checked status.
            - `key` 'grade_1' | 'grade_2' | 'grade_3a' | 'grade_3' | 'grade_3b' | 'grade_4' | 'grade_5' | 'non_agricultural', required — The key representing the agricultural land classification type.
            - `checked` boolean — Indicates whether this agricultural land classification type is selected or not.
          - `must` 'MATCH_ANY' | 'MATCH_NONE', required — The match type for filtering the agricultural land classification options.
        - AmenitiesFilter
          - `id` 'amenities-filter', required — The unique identifier for the amenities filter.
          - `type` 'compound', required — The type of filter, which is always compound in this case.
          - `filters` union[], required — A list of filters to be applied. Must include at least one: AmenitiesTypeFilter and only one AmenitiesDistanceFilter.
            - union
              - …
          - `must` 'MATCH_ALL' | 'MATCH_NONE', required — The match type for combining the filters.
        - Article4
          - `id` 'article-four-id', required — The constant ID for this schema.
          - `values` object[], required — A list of article 4 values with associated keys, checked status.
            - `key` 'article_4_ma' | 'article_4_hmo' | 'article_4_other' | 'article_4_unknown', required — The key representing the article 4 type.
            - `checked` true, required — Indicates whether this constraint type is selected or not.
          - `must` 'MATCH_ANY' | 'MATCH_NONE', required — The match type for filtering the article 4 options.
        - CompanyStatus
          - `id` 'company-status-id', required — The constant ID for this schema.
          - `values` object[], required — A list of company status types with associated keys and checked status.
            - `key` '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', required — The key representing the company status type.
            - `checked` true, required — Indicates whether this company status type is selected or not.
          - `must` 'MATCH_ANY' | 'MATCH_NONE', required — The match type for filtering the company status options.
        - ConstraintsAdopted
          - `id` 'adopted-constraints-id', required — The constant ID for this schema.
          - `values` object[], required — A list of constraint values with associated keys, checked status.
            - `key` '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', required — The key representing the constraint type.
            - `checked` true, required — Indicates whether this constraint type is selected or not.
          - `must` 'MATCH_ALL' | 'MATCH_NONE', required — The match type for filtering the constraints options.
        - ConstraintsEmerging
          - `id` 'emerging-constraints-id', required — The constant ID for this schema.
          - `values` object[], required — A list of constraint values with associated keys, checked status, and child constraints.
            - `key` 'conservation_areas_outer' | 'employment_area_outer' | 'metropolitan_open_land_outer' | 'open_space_outer' | 'protected_areas_outer' | 'protected_views_outer' | 'safe_guarding_outer' | 'settlement_boundaries_outer', required — The key representing the constraint type.
            - `checked` true, required — Indicates whether this constraint type is selected or not.
          - `must` 'MATCH_ALL' | 'MATCH_NONE', required — The match type for filtering the constraints options.
        - DevelopedArea
          - `id` 'developed-area-id', required — The constant ID for this schema.
          - `range` number[], required — `[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.
          - `rangeType` 'percentage', required — The type of range being used (e.g., percentage).
        - GreyBeltFavourability
          - `id` 'grey-belt-type-id', required — The constant ID for this schema.
          - `values` object[], required — A list of grey belt land favourability.
            - `key` 'grey_belt_land_more_favourable' | 'grey_belt_land_average_favourability' | 'grey_belt_land_less_favourable', required — The key representing the grey belt land favourability type.
            - `checked` true, required — Indicates whether this favourability type is selected or not.
          - `must` 'MATCH_ANY' | 'MATCH_NONE', required — The match type for filtering the grey belt land favourability options.
        - LandAvailabilityAssessment
          - `id` 'land-availability-assessment-id', required — The constant ID for this schema.
          - `values` object[], required — A list of land availability assessment types with associated keys and checked status.
            - `key` 'negative' | 'neutral' | 'positive', required — The key representing the land availability assessment type.
            - `checked` true, required — Indicates whether this land availability assessment type is selected or not.
          - `must` 'MATCH_ANY' | 'MATCH_NONE', required — The match type for filtering the land availability assessment options.
        - LeaseEndDate
          - `id` 'lease-end-date', required — The constant ID for this schema.
          - `range` string[], required — `["2025-02-01T00:00:00.000Z", "2025-09-30T23:59:59.999Z"]` represents a range from **Feb 1st 2025 to Sep 30th 2025 at 23:59**. An array with 2 items that represent the range of dates for the lease end date. The first item is the start date, and the second item is the end date.
        - LeaseStartDate
          - `id` 'lease-start-date', required — The constant ID for this schema.
          - `range` string[], required — `["2025-01-01T00:00:00.000Z", "2025-08-31T22:59:59.999Z"]` represents a range from **Jan 1st 2025 to Aug 31st 2025 at 22:59**. An array with 2 items that represent the range of dates for the lease start date. The first item is the start date, and the second item is the end date.
        - OwnershipType
          - `id` 'ownership-type-id', required — The constant ID for this schema.
          - `values` object[], required — A list of ownership types with associated keys, checked status.
            - `key` 'corporate_body' | 'company' | 'council' | 'housing_association' | 'private', required — The key representing the ownership type.
            - `checked` true, required — Indicates that this value is selected.
          - `must` 'MATCH_ANY' | 'MATCH_NONE', required — Can match any or match all of the items passed.
        - ParcelSize2
          - `id` 'lot-area-id', required — The unique identifier for the lot area.
          - `range` number[], required — `[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.
          - `type` 'number-range', required — The type of range.
          - `rangeType` 'area', required — The type of range being used (e.g., area).
        - PlanningApplications
          - `id` 'planning-applications-id', required — The unique identifier for the planning applications filter.
          - `type` 'compound', required — The type of filter, which is always compound in this case.
          - `filters` union[], required — A list of filters to be applied. Must include: * only one of multi text filter. * only one of submission date filter. * only one of units filter.
            - union
              - …
          - `must` 'MATCH_ALL' | 'MATCH_NONE', required — The match type for combining the filters.
        - PowerDistance
          - `id` 'power-distance-type-id', required — The unique identifier for the distance from power filter.
          - `type` 'compound', required — The type of filter, which is always compound in this case.
          - `filters` union[], required — A list of filters to be applied. Must include at least one: PowerDistanceTypeFilter and only one PowerDistanceFilter.
            - union
              - …
          - `must` 'MATCH_ALL' | 'MATCH_NONE', required — The match type for combining the filters.
        - ProprietorName
          - `id` 'proprietor-name', required — The unique identifier for the owner name filter.
          - `must` 'CONTAIN' | 'NOT_CONTAIN', required — The match type for filtering the owner name.
          - `text` string, required — The text value to search for in owner name.
        - PropertyState
          - `id` 'property-state-id', required — The constant ID for this schema.
          - `values` object[], required — A list of property state values with associated keys and checked status.
            - `key` 'demolished' | 'in_use' | 'planning_permission_granted' | 'property_state' | 'under_construction' | 'unoccupied_vacant_derelict', required — The key representing the property state type.
            - `checked` true, required — Indicates whether this property state type is selected or not.
          - `must` 'MATCH_ANY' | 'MATCH_NONE', required — The match type for filtering the property state options.
        - RegionFilter
          - `id` 'region-id', required — The unique identifier for the region filter.
          - `region` string, required — A region code (e.g. GSS code for UK Local Authority Districts).
        - RegenerationZonesAdopted
          - `id` 'regeneration-zones-adopted-id', required — The constant ID for this schema.
          - `values` object[], required — A list of regeneration zone values with associated keys and checked status.
            - `key` 'area_action_plans' | 'named_regeneration_areas', required — The key representing the regeneration zone type.
            - `checked` boolean — Indicates whether this regeneration zone type is selected or not.
          - `must` 'MATCH_ANY' | 'MATCH_NONE', required — The match type for filtering the regeneration zone options.
        - RegenerationZonesEmerging
          - `id` 'regeneration-zones-emerging-id', required — The constant ID for this schema.
          - `values` object[], required — A list of regeneration zone values with associated keys and checked status.
            - `key` 'area_action_plans' | 'named_regeneration_areas', required — The key representing the regeneration zone type.
            - `checked` boolean — Indicates whether this regeneration zone type is selected or not.
          - `must` 'MATCH_ANY' | 'MATCH_NONE', required — The match type for filtering the regeneration zone options.
        - SearchLocation
          - `id` 'search-location-id', required — The unique identifier for the search location filter.
          - `location` union, required — ## Polygon: A GeoJSON polygon. Polygon is defined by one or more linear rings. The first ring represents the outer boundary (shell), and any additional rings represent holes (interior boundaries). Each ring is a closed line made up of an array of at least four coordinate pairs, where the first and last positions are identical to close the shape. Coordinates follow the format `[longitude, latitude]`. A Polygon must not intersect itself and must follow the right-hand rule for winding order. --- ### Useful links: - [GeoJSON Specification](https://datatracker.ietf.org/doc/html/rfc7946#section-3.1.6) - [GeoJSON.io - Online Tool](https://geojson.io/) --- ### Simple Polygon Example: ``` { "coordinates": [ [ [-0.14929038118364701, 51.536142527775894], [-0.1511502946380574, 51.536606841918456], [-0.15158046405704795, 51.53662282512096], [-0.15314734138883068, 51.53638304796348], [-0.15551325060320664, 51.5358605395725], [-0.15853824326276822, 51.535146678003656], [-0.16127849793295468, 51.53438900786796], [-0.1629081211282255, 51.533737304067245], [-0.16433232531409203, 51.532317284173246], [-0.16515124173966456, 51.53147677320297], [-0.16517750702064404, 51.530486405978394], [-0.16470453397198526, 51.52968949678419], [-0.16419787377387252, 51.52924454958466], [-0.16160535022888212, 51.52759132355445], [-0.15956874947798383, 51.52617575757168], [-0.15845578053699683, 51.52486257411584], [-0.15534964384988825, 51.52369876908375], [-0.145932851559877, 51.525347514462425], [-0.1459570444773135, 51.52897366493096], [-0.1460084744027199, 51.53010860617948], [-0.14805040702364636, 51.53477548344256], [-0.1484858923158754, 51.53564562001867], [-0.14929038118364701, 51.536142527775894] ] ], "type": "Polygon" } ``` --- ### Polygon including a hole: ``` { "coordinates": [ [ [-0.14929038118364701, 51.536142527775894], [-0.1511502946380574, 51.536606841918456], [-0.15158046405704795, 51.53662282512096], [-0.15314734138883068, 51.53638304796348], [-0.15551325060320664, 51.5358605395725], [-0.15853824326276822, 51.535146678003656], [-0.16127849793295468, 51.53438900786796], [-0.1629081211282255, 51.533737304067245], [-0.16433232531409203, 51.532317284173246], [-0.16515124173966456, 51.53147677320297], [-0.16517750702064404, 51.530486405978394], [-0.16470453397198526, 51.52968949678419], [-0.16419787377387252, 51.52924454958466], [-0.16160535022888212, 51.52759132355445], [-0.15956874947798383, 51.52617575757168], [-0.15845578053699683, 51.52486257411584], [-0.15534964384988825, 51.52369876908375], [-0.145932851559877, 51.525347514462425], [-0.1459570444773135, 51.52897366493096], [-0.1460084744027199, 51.53010860617948], [-0.14805040702364636, 51.53477548344256], [-0.1484858923158754, 51.53564562001867], [-0.14929038118364701, 51.536142527775894] ], [ [-0.1528028809015325, 51.52903093393792], [-0.15190063187328917, 51.52866837902546], [-0.15133992236366112, 51.52809880224876], [-0.15122810383141427, 51.527513054250775], [-0.15152242033633456, 51.52697809355044], [-0.1520289119160907, 51.52648937141588], [-0.15293715205308445, 51.52626119797495], [-0.15374870651484684, 51.526168806088194], [-0.15455587449918085, 51.526286175974064], [-0.15575918093998098, 51.527008428928156], [-0.1560404186055564, 51.52770737376511], [-0.15562500260159595, 51.52840462735193], [-0.15509228496867422, 51.528778327054], [-0.15410266542014028, 51.52909488998242], [-0.1533836641634707, 51.529096986799686], [-0.1528028809015325, 51.52903093393792] ] ], "type": "Polygon" } ``` --- ## Point with Radius: A GeoJSON point with a radius in metres. Coordinates follow the format `[longitude, latitude]`. ### Example of a Point with Radius: ``` { "coordinates": [-0.081547, 51.521412], "radius_metres": 100, "type": "Point" } ```
            - Polygon
              - …
            - PointWithRadius
              - …
          - `must` 'INTERSECT', required — The condition that must be met for the location filter.
        - SiteAllocationsAdopted
          - `id` 'site-allocations-id', required — The constant ID for this schema.
          - `values` object[], required — A list of site allocation types with associated keys and checked status.
            - `key` 'commercial_allocation' | 'community_allocation' | 'employment_allocation' | 'mixed_use_allocation' | 'residential_allocation' | 'uncategorised_allocation', required — The key representing the site allocation type.
            - `checked` true, required — Indicates whether this site allocation type is selected or not.
          - `must` 'MATCH_ANY' | 'MATCH_NONE', required — The match type for filtering the site allocation options.
        - SiteAllocationsEmerging
          - `id` 'site-allocations-emerging-id', required — The constant ID for this schema.
          - `values` object[], required — A list of site allocation types with associated keys and checked status.
            - `key` 'commercial_allocation' | 'community_allocation' | 'employment_allocation' | 'mixed_use_allocation' | 'residential_allocation' | 'uncategorised_allocation', required — The key representing the site allocation type.
            - `checked` true, required — Indicates whether this site allocation type is selected or not.
          - `must` 'MATCH_ANY' | 'MATCH_NONE', required — The match type for filtering the site allocation options.
        - Tenure
          - `id` 'tenure-uk', required — The constant ID for this schema.
          - `values` object[], required — A list of tenure values with associated keys and checked status.
            - `key` 'freehold' | 'leasehold', required — The key representing the tenure type.
            - `checked` true, required — Indicates whether this constraint type is selected or not.
          - `must` 'MATCH_ANY' | 'MATCH_NONE', required — The match type for filtering the tenure options.
        - UseClass
          - `id` 'use-class-nested-id', required — The unique identifier for the use class filter.
          - `values` union[], required
            - union
              - …
          - `must` 'MATCH_ANY' | 'MATCH_NONE', required — The match type for filtering the use class options.
          - `type` 'nested-checkbox', required

## Response `200`

A list of parcel IDs matching the search criteria.

- ParcelIds
  - `parcel_ids` ParcelId[], required — A list of parcel UUIDs.

## Other responses

- `403` — Forbidden

---

[API](https://skmtc.net/land/apis/landtech-api.md) · [All operations](https://skmtc.net/land/apis/landtech-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/land/landtech-api/revisions/4608786ac394/schema)
