# Finding Parcels

Use this guide to choose cadastre or property data, search by identifier or location, retrieve planning attributes, and paginate results.

## Choose cadastre or property

| Dataset | What it represents | Main identifier |
| --- | --- | --- |
| Cadastre | Jurisdiction land parcels, commonly identified by lot and plan | `cadastrePid` |
| Property | Land grouped into a property by the contributing jurisdiction | `propertyPid` |

Cadastre includes lot, strata, stratum, and road parcels defined by state and territory governments. Cadastral parcels represent the smallest legal areas of land capable of sale without further subdivision approval, and their title references can link to jurisdiction land registries.

A property is recognised by a local government, or the equivalent ACT agency, as a single valued or rateable entity. It can contain several cadastral parcels, part of a parcel, or non-contiguous parcels. Property boundaries do not always align with cadastre boundaries.

Cadastre and property boundaries serve different purposes, so choose the dataset for your task. See the [Cadastre](https://docs.geoscape.com.au/projects/cadastre_guide/en/stable/) and [Property](https://docs.geoscape.com.au/projects/property_guide/en/stable/) product guides for dataset definitions and coverage.

## Use the right identifier

- A `cadastrePid` or `propertyPid` identifies a feature that can have several polygons
- A `cadastrePolygonPid` or `propertyPolygonPid` identifies an individual polygon
- A `parcelId` is the jurisdiction parcel reference used by `cadastres/findByParcel`. It is not a Geoscape PID
- A `contributorId` is the jurisdiction property identifier used by `properties/findByIdentifier`

Parcel references vary by jurisdiction. Preserve separators and URL-encode the value. For example, the reference uses `/SP281359` for a plan-based search:

```shell
curl --fail-with-body --get \
  "https://api.psma.com.au/v1/landParcels/cadastres/findByParcel" \
  -H "Authorization: $GEOSCAPE_API_KEY" \
  -H "Accept: application/json" \
  --data-urlencode "parcelId=/SP281359"
```

Supply exactly one identifier from the relevant list:

- Cadastre: `addressId` or `propertyPid`
- Property: `addressId`, `cadastrePid`, or `contributorId`

Do not combine identifier parameters. For contributor property identifiers, `stateFilter` restricts the search to states or territories. Send one comma-separated value, for example `stateFilter=NSW,QLD`. Allowed values are `ACT`, `NSW`, `NT`, `OT`, `QLD`, `SA`, `TAS`, `VIC`, and `WA`.

## Choose a base representation

Base features provide coverage without overlapping parcels:

- Base cadastre includes only `Lot` parcels that are not contained by another parcel
- Base property includes property parcels that are not contained by another property

Strata and other overlapping interests can produce multiple features at a location.

- `baseParcel=true` returns base cadastre polygons
- `baseParcel=false` returns non-base cadastre polygons
- `baseProperty=true` returns base property polygons
- `baseProperty=false` returns non-base property polygons
- Omit the filter to return both base and non-base features

When searching cadastre by `propertyPid` without `radius`, `baseParcel=false` currently does not filter the results. Check `properties.baseParcel` and filter the returned features if you need only non-base parcels.

Use `parcelType` and `strataType` to understand the cadastre result. `strataType` identifies horizontal or vertical strata where known. `totalStrataCount`, `horizontalStrataCount`, and `verticalStrataCount` are parcel counts, not area measurements. See the product guides for jurisdiction-specific base representation rules.

## Choose the search area

| Input | Behaviour |
| --- | --- |
| Latitude and longitude | Return polygons that intersect the point |
| Point with `radius` | Search the area around the point |
| Bounding box | Return polygons that intersect the box |
| Related identifier with `radius` | Search around the centroid of the first matched polygon |

Radius is an integer from 1 to 500 metres. Omit it for a point intersection or direct related-identifier lookup.

### Bounding boxes

Send `bbox` as `west,south,east,north`, with the bottom-left longitude,latitude pair first. Use at most five decimal places and a box no larger than **1 km²**. Keep the box narrow enough for the supported search area.

```shell
curl --fail-with-body --get \
  "https://api.psma.com.au/v1/landParcels/cadastres/findByBoundingBox" \
  -H "Authorization: $GEOSCAPE_API_KEY" \
  -H "Accept: application/json" \
  --data-urlencode "bbox=149.12500,-35.28500,149.13000,-35.28000" \
  --data-urlencode "limit=100"
```

The full geometry of an intersecting polygon is returned, so it can extend beyond the box. See the [GeoJSON bounding-box specification](https://geojson.org/geojson-spec.html#bounding-boxes).

### Coordinate systems

- Input coordinates default to GDA94 (EPSG:4283). Use decimal degrees
- `Content-Crs` selects the input CRS for point and bounding-box searches
- `Accept-Crs` selects the response CRS
- CRS header values use an angle-bracketed URI, such as `<https://www.opengis.net/def/crs/EPSG/0/7844>` for GDA2020
- GeoJSON coordinates use longitude,latitude order in the default CRS

See [CRS & GDA2020](/guides/gda-2020) for supported systems and negotiation.

## Planning data

Request `additionalProperties=planningBundle` on cadastre endpoints. Planning data requires paid-plan access. The bundle is omitted when unavailable, and the parcel result can still succeed.

| Field | Meaning |
| --- | --- |
| `zoneCode` | Jurisdiction planning-zone code |
| `primaryZoneDescription` | Primary jurisdiction zone description |
| `secondaryZoneDescription` | Additional zone description, when supplied |
| `psmaDescription` | Generalised planning description, when supplied |
| `source` | Data contributor |
| `url` | Link to the contributing jurisdiction's planning information |
| `parcelIds` | Jurisdiction parcel references associated with the record, when supplied |
| `dateCreated` | Date the planning record was introduced |
| `state` | State or territory abbreviation |

Zone codes have jurisdiction-specific meanings. Preserve the returned source and URL when presenting planning data. The [Planning product guide](https://docs.geoscape.com.au/projects/planning_guide/en/stable/) explains coverage and classifications.

## Paginate results

`limit` defaults to 100 and accepts 1 to 1,000. `offset` defaults to 0 and skips that many matching features.

1. Read `links.numberMatched` and `links.numberReturned` to understand the result size
2. Follow `links.next` while it is present, sending the same authentication header
3. Stop when there is no next link

A PID can return multiple polygon features. Use polygon PIDs when you need to distinguish them. `totalArea` sums the polygon areas on the current page in square metres and can count overlapping areas more than once. It is not the total area of all pages.

## Handle no results

- No parcels match the search: `404`
- Parcels match, but the requested page is empty: `200` with `features: []`
- Planning data is unavailable: the optional `planningBundle` is omitted

See [Error Handling](/guides/errors) for response bodies and retry guidance.

## Next steps

- [Make a first request](/guides/land-parcels/quickstart)
- [Review the cadastre reference](/reference/land-parcels-v1-cadastre)
- [Review the property reference](/reference/land-parcels-v1-property)
