Skip trace a property's owner by property ID
const url = 'https://app-api.landinsights.co/api/public/v1/properties/7234891/skip-trace/';const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}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.
Authorizations
Section titled “Authorizations ”Parameters
Section titled “ Parameters ”Path Parameters
Section titled “Path Parameters ”The property’s property_id (from property search, filter, or detail responses).
Examples
Sample PropertyID
7234891Responses
Section titled “ Responses ”Normalized contact-append result for one person.
object
true when phone numbers were found. false responses return an empty phones list and are not billed.
First name on the matched record, null when no match.
Last name on the matched record, null when no match.
Up to six phone numbers, best match first. Empty when no phones were found.
A phone number found for the traced person.
object
10-digit phone number, digits only (e.g. 3035551234).
Mobile or Landline, null when unknown. Line types are approximate — number portability introduces up to ~10% inaccuracy.
Whether the number appears on the federal Do Not Call registry; null when no DNC data was returned for the number.
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 } ]}No match
{ "matched": false, "first_name": null, "last_name": null, "phones": []}Validation error.
object
object
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.
Human-readable description of the error.
Echoes the request’s X-Request-Id (or a server-issued id). Quote it in support requests.
Present on validation errors only: maps each rejected field to its list of messages.
object
Example generated
{ "error": { "code": "example", "message": "example", "request_id": "example", "details": {} }}Missing or invalid credentials.
object
object
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.
Human-readable description of the error.
Echoes the request’s X-Request-Id (or a server-issued id). Quote it in support requests.
Present on validation errors only: maps each rejected field to its list of messages.
object
Example generated
{ "error": { "code": "example", "message": "example", "request_id": "example", "details": {} }}A Pro subscription or higher API tier is required.
object
object
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.
Human-readable description of the error.
Echoes the request’s X-Request-Id (or a server-issued id). Quote it in support requests.
Present on validation errors only: maps each rejected field to its list of messages.
object
Example generated
{ "error": { "code": "example", "message": "example", "request_id": "example", "details": {} }}Authenticated but not permitted.
object
object
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.
Human-readable description of the error.
Echoes the request’s X-Request-Id (or a server-issued id). Quote it in support requests.
Present on validation errors only: maps each rejected field to its list of messages.
object
Example generated
{ "error": { "code": "example", "message": "example", "request_id": "example", "details": {} }}Resource not found.
object
object
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.
Human-readable description of the error.
Echoes the request’s X-Request-Id (or a server-issued id). Quote it in support requests.
Present on validation errors only: maps each rejected field to its list of messages.
object
Example generated
{ "error": { "code": "example", "message": "example", "request_id": "example", "details": {} }}Rate limit exceeded.
object
object
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.
Human-readable description of the error.
Echoes the request’s X-Request-Id (or a server-issued id). Quote it in support requests.
Present on validation errors only: maps each rejected field to its list of messages.
object
Example generated
{ "error": { "code": "example", "message": "example", "request_id": "example", "details": {} }}Internal error.
object
object
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.
Human-readable description of the error.
Echoes the request’s X-Request-Id (or a server-issued id). Quote it in support requests.
Present on validation errors only: maps each rejected field to its list of messages.
object
Example generated
{ "error": { "code": "example", "message": "example", "request_id": "example", "details": {} }}