Skip to content

Search properties by APN or owner name

GET
/api/public/v1/properties/search/
curl --request GET \
--url 'https://example.com/api/public/v1/properties/search/?apn=07111-04-006&fips=8023&owner_name=SMITH&page=1&page_size=25' \
--header 'Authorization: Bearer <token>'

Returns properties matching the given filters within the specified county FIPS, paginated. Either apn or owner_name is required.

Owner-name matching is a case-insensitive substring search on the primary owner; multiple whitespace-separated tokens are AND-ed.

Returns a paginated envelope: count (total matches), next / previous (page URLs or null), and results (one summary per parcel). Default page_size is 25, max 100.

Cost: 10 tokens per search. Empty results (0 matches) cost 0 tokens. Cost is flat regardless of page size.

apn
string

Assessor’s Parcel Number. Exact match. Either apn or owner_name is required.

Examples
Example APN
07111-04-006
fips
required
string

Required. 5-digit county FIPS code to search within. Searches are scoped to a single county.

Examples

Costilla County, CO

8023
owner_name
string

Owner-name substring (case-insensitive). Either apn or owner_name is required.

Examples

Single token

SMITH
page
integer
default: 1

Page number (1-indexed).

page_size
integer
default: 25

Results per page. Max 100.

Media type application/json

Paginated envelope for endpoints returning a list of parcel summaries.

Shared by the parcel-filter and property-search responses.

object
count
required

Total number of parcels matching the query (across all pages).

integer
next

URL of the next page of results, or null on the last page.

string
nullable
previous

URL of the previous page, or null on the first page.

string
nullable
results
required
Array<object>

Compact parcel record — used in search + filter results.

object
property_id
required

Land Insights numeric identifier for the parcel. Stable.

integer
apn
required

Assessor’s Parcel Number — the county-assigned property identifier.

string
nullable
fips
required

5-digit county FIPS code (2-digit state FIPS + 3-digit county FIPS).

string
nullable
point
required

Geographic centroid (point-on-surface) of the parcel as [longitude, latitude] in WGS84 (EPSG:4326). May be null if geometry is unavailable.

Array<number>
nullable >= 2 characters <= 2 characters
acres
required

Parcel acreage as reported by the county assessor (source field LotSizeAcres). This is the authoritative legal/recorded acreage. For the acreage measured from the parcel polygon, see calculated_acres.

number format: double
nullable
calculated_acres
required

Parcel acreage computed from the parcel geometry (source field CalculatedAcres): the GIS area of the polygon in acres, rounded to two decimals. May differ from the assessor-reported acres due to surveying or geometry differences, and is null when geometry is unavailable.

number format: double
nullable
owner_name
required

Full name of the primary owner of record (raw string from assessor; typically uppercase, may include corporate suffixes like ‘LLC’).

string
nullable
situs_address
required

Physical street address of the parcel (situs).

string
nullable
situs_city
required

Situs city.

string
nullable
situs_state
required

Situs two-letter US state code.

string
nullable
situs_zip
required

Situs 5-digit ZIP code.

string
nullable
Examples
Example TwoMatches

Two matches

{
"count": 2,
"next": null,
"previous": null,
"results": [
{
"property_id": 7234891,
"apn": "07111-04-006",
"fips": 8023,
"point": [
-105.42,
37.2
],
"acres": 5,
"calculated_acres": 5.13,
"owner_name": "SMITH JOHN",
"situs_address": null,
"situs_city": "SAN LUIS",
"situs_state": "CO",
"situs_zip": "81152"
},
{
"property_id": 7234917,
"apn": "07111-04-007",
"fips": 8023,
"point": [
-105.421,
37.198
],
"acres": 5,
"calculated_acres": 5.07,
"owner_name": "SMITH JOHN",
"situs_address": null,
"situs_city": "SAN LUIS",
"situs_state": "CO",
"situs_zip": "81152"
}
]
}

Validation error.

Media type application/json
object
error
required
object
code
required

Stable machine-readable error code. One of: unauthorized, forbidden, subscription_required, tier_upgrade_required, usage_limit_exceeded, validation_error, not_found, method_not_allowed, rate_limited, internal_error.

string
message
required

Human-readable description of the error.

string
request_id
required

Echoes the request’s X-Request-Id (or a server-issued id). Quote it in support requests.

string
details

Present on validation errors only: maps each rejected field to its list of messages.

object
key
additional properties
any
Example generated
{
"error": {
"code": "example",
"message": "example",
"request_id": "example",
"details": {}
}
}

Missing or invalid credentials.

Media type application/json
object
error
required
object
code
required

Stable machine-readable error code. One of: unauthorized, forbidden, subscription_required, tier_upgrade_required, usage_limit_exceeded, validation_error, not_found, method_not_allowed, rate_limited, internal_error.

string
message
required

Human-readable description of the error.

string
request_id
required

Echoes the request’s X-Request-Id (or a server-issued id). Quote it in support requests.

string
details

Present on validation errors only: maps each rejected field to its list of messages.

object
key
additional properties
any
Example generated
{
"error": {
"code": "example",
"message": "example",
"request_id": "example",
"details": {}
}
}

A Pro subscription or higher API tier is required.

Media type application/json
object
error
required
object
code
required

Stable machine-readable error code. One of: unauthorized, forbidden, subscription_required, tier_upgrade_required, usage_limit_exceeded, validation_error, not_found, method_not_allowed, rate_limited, internal_error.

string
message
required

Human-readable description of the error.

string
request_id
required

Echoes the request’s X-Request-Id (or a server-issued id). Quote it in support requests.

string
details

Present on validation errors only: maps each rejected field to its list of messages.

object
key
additional properties
any
Example generated
{
"error": {
"code": "example",
"message": "example",
"request_id": "example",
"details": {}
}
}

Authenticated but not permitted.

Media type application/json
object
error
required
object
code
required

Stable machine-readable error code. One of: unauthorized, forbidden, subscription_required, tier_upgrade_required, usage_limit_exceeded, validation_error, not_found, method_not_allowed, rate_limited, internal_error.

string
message
required

Human-readable description of the error.

string
request_id
required

Echoes the request’s X-Request-Id (or a server-issued id). Quote it in support requests.

string
details

Present on validation errors only: maps each rejected field to its list of messages.

object
key
additional properties
any
Example generated
{
"error": {
"code": "example",
"message": "example",
"request_id": "example",
"details": {}
}
}

Resource not found.

Media type application/json
object
error
required
object
code
required

Stable machine-readable error code. One of: unauthorized, forbidden, subscription_required, tier_upgrade_required, usage_limit_exceeded, validation_error, not_found, method_not_allowed, rate_limited, internal_error.

string
message
required

Human-readable description of the error.

string
request_id
required

Echoes the request’s X-Request-Id (or a server-issued id). Quote it in support requests.

string
details

Present on validation errors only: maps each rejected field to its list of messages.

object
key
additional properties
any
Example generated
{
"error": {
"code": "example",
"message": "example",
"request_id": "example",
"details": {}
}
}

Rate limit exceeded.

Media type application/json
object
error
required
object
code
required

Stable machine-readable error code. One of: unauthorized, forbidden, subscription_required, tier_upgrade_required, usage_limit_exceeded, validation_error, not_found, method_not_allowed, rate_limited, internal_error.

string
message
required

Human-readable description of the error.

string
request_id
required

Echoes the request’s X-Request-Id (or a server-issued id). Quote it in support requests.

string
details

Present on validation errors only: maps each rejected field to its list of messages.

object
key
additional properties
any
Example generated
{
"error": {
"code": "example",
"message": "example",
"request_id": "example",
"details": {}
}
}

Internal error.

Media type application/json
object
error
required
object
code
required

Stable machine-readable error code. One of: unauthorized, forbidden, subscription_required, tier_upgrade_required, usage_limit_exceeded, validation_error, not_found, method_not_allowed, rate_limited, internal_error.

string
message
required

Human-readable description of the error.

string
request_id
required

Echoes the request’s X-Request-Id (or a server-issued id). Quote it in support requests.

string
details

Present on validation errors only: maps each rejected field to its list of messages.

object
key
additional properties
any
Example generated
{
"error": {
"code": "example",
"message": "example",
"request_id": "example",
"details": {}
}
}