Skip to content

Skip trace a property's owner by property ID

POST
/api/public/v1/properties/{property_id}/skip-trace/
curl --request POST \
--url https://app-api.landinsights.co/api/public/v1/properties/7234891/skip-trace/ \
--header 'Authorization: Bearer <token>'

Looks up phone numbers for a property’s owner using the owner name and mailing address already on the parcel record. Returns up to six phone numbers, each with line type and federal Do Not Call registry status.

This is the preferred way to skip trace a specific Land Insights property: pass the property_id (from property search, filter, or detail responses) and the owner details are taken from the parcel record — one call, no copying owner fields between requests. Reach for skip_trace_owner only when the person isn’t tied to a Land Insights property.

Matching is at the individual level; matched: false means no contact information was found for the record’s owner. Returns a validation error when the record has no individual owner name (for example, parcels owned by a company or trust) or not enough mailing address information to search with.

Cost: 20 tokens per matched trace. No-match responses cost 0 tokens.

Rate limit: 20 requests per minute per account, shared between both skip-trace endpoints — lower than the rest of the API, because each call queries an upstream data provider with limited capacity.

property_id
required
integer

The property’s property_id (from property search, filter, or detail responses).

Examples
Example SamplePropertyID

Sample PropertyID

7234891
Media type application/json

Normalized contact-append result for one person.

object
matched
required

true when phone numbers were found. false responses return an empty phones list and are not billed.

boolean
first_name
required

First name on the matched record, null when no match.

string
nullable
last_name
required

Last name on the matched record, null when no match.

string
nullable
phones
required

Up to six phone numbers, best match first. Empty when no phones were found.

Array<object>

A phone number found for the traced person.

object
number
required

10-digit phone number, digits only (e.g. 3035551234).

string
line_type
required

Mobile or Landline, null when unknown. Line types are approximate — number portability introduces up to ~10% inaccuracy.

string
nullable
dnc
required

Whether the number appears on the federal Do Not Call registry; null when no DNC data was returned for the number.

boolean
nullable
Examples

Matched trace

{
"matched": true,
"first_name": "John",
"last_name": "Smith",
"phones": [
{
"number": "3035551234",
"line_type": "Mobile",
"dnc": false
},
{
"number": "7195555678",
"line_type": "Landline",
"dnc": true
}
]
}

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, payment_required, 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, payment_required, 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, payment_required, 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, payment_required, 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, payment_required, 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, payment_required, 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, payment_required, 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": {}
}
}