Skip to content

Skip trace a person by name and mailing address

POST
/api/public/v1/skip-trace/
curl --request POST \
--url https://app-api.landinsights.co/api/public/v1/skip-trace/ \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{ "first_name": "John", "last_name": "Smith", "address": "300 Main St", "city": "San Luis", "state": "CO", "zip": "81152" }'

Looks up phone numbers for a person by name and mailing address. Returns up to six phone numbers, each with line type and federal Do Not Call registry status.

To skip trace the owner of a specific Land Insights property, prefer skip_trace_property_owner — it takes a property_id and reads the owner name and mailing address straight from the parcel record, so there is nothing to copy over (and no risk of a typo breaking the match). Use this endpoint when the person comes from somewhere else — your own list, a referral, or a record outside Land Insights.

first_name and last_name are required, plus either zip or both city and state. Including the street address improves match quality. Matching is at the individual level; matched: false means no contact information was found for the given inputs.

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.

Media type application/json

One-off skip trace by name and mailing address. Name is always required; the address fields must include either zip or both city and state. (Tracing a specific property goes through the by-property-ID endpoint instead, which needs no request body.)

object
first_name
required

Required. The person’s first name.

string
>= 1 characters <= 100 characters
last_name
required

Required. The person’s last name.

string
>= 1 characters <= 100 characters
address

Optional. Street address (e.g. mailing address from the parcel record). Including it improves match quality.

string
<= 255 characters
city

Optional. City. Required together with state when zip is omitted.

string
<= 100 characters
state

Optional. Two-letter state abbreviation (e.g. CO). Required together with city when zip is omitted.

string
>= 2 characters <= 2 characters /^[A-Za-z]{2}$/
zip

Optional. 5-digit ZIP code. Required when city/state are omitted.

string
<= 5 characters /^\d{5}$/
Examples
Example OwnerFromAParcelRecord

Owner from a parcel record

{
"first_name": "John",
"last_name": "Smith",
"address": "300 Main St",
"city": "San Luis",
"state": "CO",
"zip": "81152"
}
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": {}
}
}