Skip to main content
POST
Search the parcels of the lean set by location, filters and quicklists

Authorizations

Authorization
string
header
required

API key from the developer console (starts with zpka_). Create one at https://developers.investorlift.com/get-a-key.

Body

application/json

The body of POST /v3/properties/search: one location, the filter groups, the quicklists, the datasets, the sort, the page and count_only. Every field but location is optional.

location
object
required

Where to search: a ZIP list, a county list, a point, a viewport or a parcel. One of point, bbox and property_id at most, with zip or county_fips beside it when you want both.

filters
object

The filter groups. Every group and every field is optional. The groups combine with AND.

quicklists
string[]

Keep the parcels that match every listed quicklist (AND).

Required array length: 1 - 20 elements

A quicklist name, for example absentee-owner, free-and-clear or price-cut-listing. The quicklists guide lists every name with its predicate. The API answers 400 quicklist_unavailable to a name it does not measure, with what unlocks it.

Required string length: 1 - 64
any_quicklists
string[]

Keep the parcels that match one listed quicklist or more (OR).

Required array length: 1 - 20 elements

A quicklist name, for example absentee-owner, free-and-clear or price-cut-listing. The quicklists guide lists every name with its predicate. The API answers 400 quicklist_unavailable to a name it does not measure, with what unlocks it.

Required string length: 1 - 64
not_quicklists
string[]

Keep the parcels that match none of the listed quicklists.

Required array length: 1 - 20 elements

A quicklist name, for example absentee-owner, free-and-clear or price-cut-listing. The quicklists guide lists every name with its predicate. The API answers 400 quicklist_unavailable to a name it does not measure, with what unlocks it.

Required string length: 1 - 64
datasets
string[]

Which blocks each row carries: core, owner, sale, listing, valuation, financing, portfolio, quicklists. Default: core, owner, sale, listing. The valuation and financing blocks are a dated slice. The API answers 400 dataset_unavailable to a name it does not serve.

Required array length: 1 - 20 elements

Which blocks each row carries: core, owner, sale, listing, valuation, financing, portfolio, quicklists. Default: core, owner, sale, listing. The valuation and financing blocks are a dated slice. The API answers 400 dataset_unavailable to a name it does not serve.

Required string length: 1 - 32
sort
enum<string>

The row order. A null value comes last on every sort, and the parcel id breaks every tie. distance puts the nearest parcel first and needs point or property_id: it is the default with one. id orders by the parcel id, the default without a point. last_sale_date_desc and last_sale_date_asc order by the last purchase at arm's length, held_since_desc by the start of the hold. equity_percent_desc, equity_percent_asc and avm_desc read the dated slice. listing_price_asc and listing_price_desc order by the list price of the current listing. year_built_desc, year_built_asc, sqft_desc and assessed_desc order by the roll.

Available options:
distance,
id,
last_sale_date_desc,
last_sale_date_asc,
held_since_desc,
equity_percent_desc,
equity_percent_asc,
listing_price_asc,
listing_price_desc,
avm_desc,
year_built_desc,
year_built_asc,
sqft_desc,
assessed_desc
limit
integer
default:100

Page size, 1-500 (default 100).

Required range: 1 <= x <= 500
cursor
string

Opaque cursor from page.next_cursor of the previous page. A change of query, sort, weights or data version invalidates it (400 invalid_cursor). Then restart from page 1.

Required string length: 1 - 4096
count_only
boolean
default:false

True answers the count of the matching parcels in summary.total and no rows.

Response

One page of the parcels that match the location, the filters and the quicklists, in the requested order, with the cursor of the next page. With count_only the body has no row and summary.total carries the count.

One page of the parcels that match the location, the filters and the quicklists, in the requested order, with the cursor of the next page. With count_only the body has no row and summary.total carries the count.

data
object[]
required

The rows of this page.

page
object
required

Pagination: the page size, the rows returned and the cursor for the next page. Paged lists carry no total. The summary block does.

meta
object
required

Response metadata of the lean family: when the API produced it, and the publishes behind the rows.

summary
object
required

What the request asked for and, with count_only, how many parcels match.