Searches properties using GeoJSON polygon/multi-polygon geometry or point+radius. Supports distance sorting and optional filters.

Body·
required

Request model for POST /api/v1/properties/search. Supports polygon/multi-polygon geometry queries and point+radius queries.

  • cursor
    Type: null | string

    Pagination cursor from previous response.

  • filters
    Type: object · nullable

    Optional filters to apply alongside spatial query.

  • near
    Type: object · nullable

    Center point for radius search. Mutually exclusive with within.

  • page_size
    Type: string Pattern: ^-?(?:0|[1-9]\d*)$Format: int32

    Number of results per page (1-500, default 50).

  • radius
    Type: string Pattern: ^-?(?:0|[1-9]\d*)$Format: int32

    Search radius in meters. Required with near.

  • sort
    Type: null | string

    Sort order: "distance" or "updated" (default). "distance" requires near or sort_origin.

  • sort_origin
    Type: object · nullable

    Explicit origin point for distance calculation. Required for sort=distance with within.

  • within
    nullable

    GeoJSON geometry object (Polygon or MultiPolygon only). Coordinates follow GeoJSON standard: [longitude, latitude]. Mutually exclusive with near.

Responses
  • application/json
  • application/problem+json
  • application/problem+json
  • application/problem+json
Request Example for post/api/v1/properties/search
curl https://app.propstreet.com/api/v1/properties/search \
  --request POST \
  --header 'Content-Type: application/json' \
  --header 'Authorization: Bearer YOUR_SECRET_TOKEN' \
  --data '{
  "within": null,
  "near": {
    "longitude": "",
    "latitude": ""
  },
  "radius": "",
  "sort_origin": {
    "longitude": "",
    "latitude": ""
  },
  "filters": {
    "country": null,
    "categories": [
      ""
    ],
    "tags": [
      ""
    ]
  },
  "sort": null,
  "page_size": "",
  "cursor": null
}'
{
  "data": [
    {
      "id": "string",
      "uri": null,
      "name": "string",
      "description": null,
      "location": {
        "latitude": "string",
        "longitude": "string",
        "country": null,
        "locality": null
      },
      "categories": [
        {
          "type": "string",
          "locationClass": null,
          "yieldPercent": "string",
          "rentalIncome": {
            "value": 0,
            "currency": "string",
            "scale": "string"
          },
          "rentedArea": {
            "value": "string",
            "unit": "string"
          },
          "vacantArea": {
            "value": "string",
            "unit": "string"
          },
          "conversions": [
            "string"
          ]
        }
      ],
      "price": {
        "value": 0,
        "currency": "string",
        "scale": "string"
      },
      "operatingCosts": {
        "value": 0,
        "currency": "string",
        "scale": "string"
      },
      "avgContractLengthYears": "string",
      "yearBuilt": "string",
      "parcelArea": {
        "value": "string",
        "unit": "string"
      },
      "zoning": {
        "gfa": {
          "value": "string",
          "unit": "string"
        },
        "categories": [
          "string"
        ]
      },
      "tenure": null,
      "tags": [
        "string"
      ],
      "projects": [
        {
          "id": "string",
          "uri": null,
          "name": "string"
        }
      ],
      "externalRefs": [
        {
          "namespace": "string",
          "id": "string"
        }
      ],
      "createdUtc": "2026-05-18T20:22:36.959Z",
      "updatedUtc": "2026-05-18T20:22:36.959Z",
      "deletedUtc": null,
      "etag": "string",
      "distance_meters": "string",
      "changeType": null,
      "changeOrigin": null
    }
  ],
  "page": {
    "nextCursor": null,
    "pageSize": "string",
    "hasMore": true
  }
}