curl --request GET \
--url https://api.investorlift.com/v1/str-parcels \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.investorlift.com/v1/str-parcels', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.investorlift.com/v1/str-parcels"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)List licensed short-term rental parcels around a location
Sold per jurisdiction under an order form. Not reachable on a self-serve key.
The parcels around a location, or in a ZIP list or postal city, that carry a record on a city’s own short-term rental licence roll. Each row names the owner and says if that owner runs a business or lives there.
Most of these owners hold one parcel and never appear as a registered investor. For one parcel’s licence facts read its short_term_rental block on /v1/properties/{property_id}.
curl --request GET \
--url https://api.investorlift.com/v1/str-parcels \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.investorlift.com/v1/str-parcels', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.investorlift.com/v1/str-parcels"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)Authorizations
API key from the developer console (starts with zpka_). Create one at https://developers.investorlift.com/get-a-key.
Query Parameters
Point latitude (with lng). With radius_miles it is the search geometry. With bbox it is the reference point only.
-90 <= x <= 90Point longitude (with lat).
-180 <= x <= 180Search radius in miles around the point or around the centre of the property_id parcel, 0.25 to 20 (default 2). Not allowed with bbox.
0.25 <= x <= 20Viewport as west,south,east,north (WGS84 degrees). West must be less than east, south less than north, and the diagonal at most 40 mi. It must intersect a loaded market's coverage bbox (422 outside_coverage otherwise). It can carry lat + lng (without radius_miles) as the reference point for distances and sort=distance.
Parcel geometry: search around the centre of that parcel, with radius_miles. Not allowed with lat, lng or bbox.
^prop_[0-9a-f]{32}$Place geometry: the parcels of these 5-digit ZIP codes, as a comma list or a repeated key, up to 50. On the deal and investor routes the Free and Starter plans take exactly one ZIP, and more is 403 plan_limit. You can add lat + lng as the reference point for distances. Not with radius_miles, bbox, property_id or city. A ZIP that no parcel of a loaded market carries is 422 outside_coverage (zips_unknown in the body).
1 - 50 elements^\d{5}$Place geometry: the parcels whose postal city is this one, as the county records it ("Scottsdale"). Case does not matter: the API compares the value folded upper case. Never the short-term rental jurisdiction (meta.coverage[].str.jurisdictions[]). You can add lat + lng as the reference point, but not radius_miles, bbox, property_id or zip. On the deal and investor routes of the Free and Starter plans a city-wide search is 403 plan_limit. A city that no parcel of a loaded market carries is 422 outside_coverage.
1 - 100Statuses to keep (comma list or repeated key). Default LICENSED,PENDING: the parcels licensed or applying at the roll's as-of date (meta.coverage[].str_as_of). Add EXPIRED for lapsed licences.
1A short-term rental status a listed parcel can carry. LICENSED means an active licence or permit, PENDING an application on file with none active, and EXPIRED every record on the parcel inactive. The list never carries a parcel with no record, so NONE is not a value here.
LICENSED, PENDING, EXPIRED With true, keep only parcels whose licence the API attributes to the current owner. With false, keep only those whose licence it does not: a prior owner's permit or an expired record.
true, false With true, keep only parcels whose licence is a business use: attributed to the owner and not a person's or a trust's own home. With false, keep only the rest.
true, false With true, keep only parcels a registered investor holds: investor is not null and the parcel is a hold row of GET /v1/deals. With false, keep only parcels no registered investor holds: the owners God Mode does not list.
true, false Keep only parcels whose operator is the owner, a named property-management company, or nobody the record names. Who operates the rental, from the city's record. With owner, a name on the record keys to the current owner of the parcel. With manager, the record names a property-management company and no name keys to the owner. With unknown, the record names nobody the test can use: every Houston record, and every record whose names match neither.
owner, manager, unknown Keep only parcels inside this city, for example SCOTTSDALE (case does not matter). The served cities are in meta.coverage[].str.jurisdictions.
1 - 64Row order. With current_application_desc, the default, the newest application by the current owner comes first and undated rows last. With expires_on_asc, the soonest expiry comes first and rows without an expiry last. Every sort breaks ties on the parcel id.
current_application_desc, expires_on_asc Page size, 1-500 (default 500).
1 <= x <= 500Opaque 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.
1 - 4096Response
One page of parcels with a short-term rental record inside the geometry after the filters, in the requested sort. The page carries the cursor for the next page.
Parcels with a short-term rental record inside the geometry after the filters, one page, in the requested sort.
The rows of this page.
Show child attributes
Show child attributes
Pagination: the page size, the rows returned and the cursor for the next page. Paged lists carry no total. The summary block does.
Show child attributes
Show child attributes
Response metadata: when the API produced it, which markets it covers, and how fresh they are.
Show child attributes
Show child attributes
Was this page helpful?