Skip to main content
POST
Search parcels 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
location
object
required

Where to search: at least one of zip, county_fips, point, bbox or property_id. Send only one of point, bbox and property_id. You can combine that one with zip or county_fips.

filters
object

The filter groups. Every group and every field is optional. The API combines the groups with AND.

quicklists
string[]

Every listed quicklist must match (AND).

Required array length: 1 - 20 elements

A quicklist name, for example absentee-owner, free-and-clear, price-cut-listing, tired-landlord. The quicklists guide documents the list and every predicate. The API answers 400 quicklist_unavailable to an unavailable name.

Required string length: 1 - 64
any_quicklists
string[]

At least one listed quicklist must match (OR).

Required array length: 1 - 20 elements

A quicklist name, for example absentee-owner, free-and-clear, price-cut-listing, tired-landlord. The quicklists guide documents the list and every predicate. The API answers 400 quicklist_unavailable to an unavailable name.

Required string length: 1 - 64
not_quicklists
string[]

Keep parcels that match none of the listed quicklists.

Required array length: 1 - 20 elements

A quicklist name, for example absentee-owner, free-and-clear, price-cut-listing, tired-landlord. The quicklists guide documents the list and every predicate. The API answers 400 quicklist_unavailable to an unavailable name.

Required string length: 1 - 64
datasets
string[]

Which blocks each row carries: core, owner, owner_profile, sale, tax, listing, valuation, financing, permits, history, quicklists. Default: core, owner, sale, tax, listing. The valuation and financing blocks are dated (meta.dated[]). The API answers 400 dataset_unavailable to an unavailable name.

Required array length: 1 - 20 elements

Which blocks each row carries: core, owner, owner_profile, sale, tax, listing, valuation, financing, permits, history, quicklists. Default: core, owner, sale, tax, listing. The valuation and financing blocks are dated (meta.dated[]). The API answers 400 dataset_unavailable to an unavailable name.

Required string length: 1 - 32
require_current
boolean
default:false

With true, the API answers 422 dated_refused when the request filters on, sorts by or returns a dated block (valuation, financing, liens). Default false: the API serves dated blocks and stamps them in meta.dated[].

sort
enum<string>

Row order, null values last on every sort. distance: nearest first, the default with a point or a property_id. The sort id orders rows by market then id, the primary key order: stable and fast over any location, the default otherwise. The sorts last_sale_date_desc and last_sale_date_asc order by the last sale date, listing_price_asc and listing_price_desc by the list price. The sort last_owner_change_desc puts the history ZIP set first and the others last. The sorts equity_percent_desc, equity_percent_asc and avm_desc are dated (meta.dated[]). The sorts year_built_desc, year_built_asc, sqft_desc and last_permit_desc order by year built, the living area and the newest permit.

Available options:
distance,
id,
last_sale_date_desc,
last_sale_date_asc,
last_owner_change_desc,
equity_percent_desc,
equity_percent_asc,
listing_price_asc,
listing_price_desc,
avm_desc,
year_built_desc,
year_built_asc,
sqft_desc,
last_permit_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 returns the count of matching parcels in summary.total and no rows.

Response

One page of parcels that match the location, filters and quicklists, in the requested sort, with the cursor for the next page. With count_only the response has no rows and carries summary.total.

One page of parcels that match the location, filters and quicklists, in the requested sort, with the cursor for the next page. With count_only the response has no rows and carries summary.total.

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: when the API produced it, which markets it covers, and how fresh they are.

summary
object
required

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